How Argo CD Empowers Developers at QA Wolf

How Argo CD Empowers Developers at QA Wolf Cover Art

We’ve teamed up with our colleagues (and customers) at QA Wolf to give you a glimpse into how indispensable Argo CD is in an everyday workflow of companies shipping SaaS. Their story is a testimony to how Argo CD improves the velocity of not only enterprises but also innovative mid-size companies. Find out how below 👇

Building the QA Wolf application presents some unique challenges that Argo CD helps us solve. You see, we provide QA as a Service. We write, run, and maintain automated E2E regression tests through our platform. With more than 100 clients, our test runner executes as many as 2 million tests per month, with test suites running in full parallel in headful browsers. The sheer number of concurrent instances that we need in order to support our customers influenced the design of our infrastructure and our deployment pipeline.

We’re also a continuous deployment shop, and while we’re trying to move fast we’re also trying not to break things. When we break things, our customers can’t test their products or service their customers’ needs — and that looks really bad for a QA company like ours.

Combined with the fact that we need (yes need! not just want) all the latest toys — Helm, Pulumi, and Kubernetes — we needed a build server that supported our tech stack. So we made the obvious choice and went with Argo CD. Argo CD plays a central role in our ability to release features to our customers quickly while

It all starts with a pull request

Except for small, and relatively minor updates, each release of our application goes through three rounds of testing to prevent regressions that would impact our own customers’ ability to release.

Round 1 happens at the PR validation phase. By adding our preview-and-test tag to the PR, Argo CD will create an ephemeral preview environment. With the environment running, Argo CD deploys the PR version of the application and we go full-on Inception: we use Argo CD to execute the QA Wolf test suite against the new QA Wolf application, using the current version of the QA Wolf runner. If all the tests pass in the PR validation phase, the request is merged.

Round 2 happens in our shared development environment. If the tests pass, we have a release candidate.

Round 3 happens in an ephemeral, pre-production release environment. To cut a release, Argo CD steps in again to create a release environment and run the QA Wolf tests one last time to make super-sure that nothing broke. And if all that goes smoothly, then we send the release candidate to production using, you guessed it, Argo CD.

To be succinct, every time we merge a PR, that deployment is automated. We have one script we run to cut the release, open a release PR, set up the environment, run tests, and, finally, push that PR to production. And all of this is made easy by Argo CD.

Argo CD keeps us going

There are a bunçh of things we really like about Argo CD, including its security, scalability, easy rollback, intuitive user interface, and the fact that it’s a single source of truth for all of our deployments. Argo CD is pivotal in helping us maintain our momentum.

It's not just about our continuous deployment philosophy; it's about how Argo CD seamlessly aligns with our ethos, enabling us to traverse the delicate balance between agility and stability, which is crucial for a testing product like ours.

For those who may not be familiar, Argo CD is an open-source, continuous deployment tool designed to automate the lifecycle of applications within a Kubernetes environment, like QA Wolf’s environment. It applies the GitOps methodology, which we practice, maintaining your Kubernetes manifest files in a Git repository. In other words, the actual state of your applications in the Kubernetes cluster is driven from a desired state defined in a specific Git repository.

Argo CD empowers businesses across the globe thanks to its multiple features, but here are some of the the ones we found most rewarding at QA Wolf:

Real-time Synchronization and Monitoring

Argo CD continuously monitors your application's state and compares it to the desired state defined in the Git repository. Any differences are instantly flagged, and it can automatically or manually synchronize the application's real state to match the desired state. This makes it easy for teams like ours to adjust our code and apply those changes instantly. We don’t even have to think about it. It just happens.

Declarative and Version-Controlled

Argo CD applies a declarative and version-controlled software delivery model. It allows you to define what resources you need and handles the process of creating and managing those resources. With this, you can capture every single update, enabling easy audits and rollbacks. QA Wolf likes the declarative approach because we don’t necessarily want to specify how the pipeline does what it does, only that the end state is correct. Furthermore, Argo’s pipeline versioning allows us to quickly roll back changes we didn’t like and compare pipeline runs between versions.

Simplified Management

Using Argo CD, you can manage multiple Kubernetes clusters. It supports management by offering a unified view of all application resources and their status across various clusters. QA Wolf has three main clusters we manage with Argo CD: the one that runs our application, the one that runs our test instances, and our operational cluster, which acts as the glue between the other two.

Intuitive User Interface

Argo CD's beautifully crafted interface aids in visualizing the synchronization status of your applications, viewing application configurations, and performing troubleshooting tasks easily. The QA Wolf team uses Argo’s interface both for developing new features and to troubleshoot issues on our existing clusters.

Argo CD UI at QA wolf presenting developer's workflow
Argo CD UI at QA wolf presenting developer's workflow

Integrability

As a bonus, Argo CD can be easily integrated with existing CI (Continuous Integration) systems or combined with Argo Workflows for a complete CI/CD solution. During the aforementioned PR validation process, we use an Argo Workflow to provision a separate unique database that is dedicated to that preview environment. That Argo workflow is picked up and triggered via Argo CD. Furthermore, if we have any questions, we reach out to Akuity for the answers.

Conclusion

We highly recommend Argo CD and GitOps as a strategy to handle your Kubernetes deployments. If you want to get familiar with both do check out the free online course by Akuity which is a hands-on introduction to Continuous Deployment using GitOps and Argo CD.

Share this blog:

Latest Blog Posts

What's New in Kargo v0.5.0

What's New in Kargo v0.5.0

We're back from Kubecon EU '24 in Paris, and there was a lot of buzz around Kargo! We had many conversations with folks talking about their struggles with how…...

Argo CD CDK8S Config Management Plugin

Argo CD CDK8S Config Management Plugin

If you haven't stored raw kubernetes YAML files in your GitOps repository, you most probably used some sort of tooling that generates YAML files, for example…...

Application Dependencies with Argo CD

Application Dependencies with Argo CD

With Argo CD and GitOps gaining wide adoption, many organizations are starting to deploy more and more applications using Argo CD and GitOps in their workflows…...

Leverage the industry-leading suite

Contact our team to learn more about Akuity Cloud