Integrating Cloudify & Argo CD
Argo CD is now a standard tool for deploying workloads in Kubernetes. Argo easily integrates with source code management (SCM) repositories, syncs Kubernetes state with repository manifests, and provides monitoring and visualization capabilities for running workloads. These features make Argo CD an essential part of many organizations’ Kubernetes strategies.
Deploying workloads with Argo CD is only one piece of the puzzle. The full environment for a particular service is always much more complex. The Kubernetes cluster must be deployed, including any supporting cloud resources, such as networking, security groups, or resource groups. Argo CD itself then needs to be deployed into Kubernetes, and finally, the application can be deployed using Argo. How does an organization ensure consistency and place guardrails around this entire environment provisioning process?
Cloudify orchestrates any tool or service, and it integrates exceptionally well with Kubernetes. Uniquely capable of handling the end-to-end flow of multiple services, Cloudify can manage the entire process of provisioning an Argo CD application. This ensures consistency and reproducibility for complex environments.
Let’s walk through a use case that involves provisioning a full environment. We’ll start with an EKS cluster with Argo CD preinstalled, and a simple NGINX application deployed. You will see how Cloudify orchestrates all of these resources, provides visibility into the process, and provides our developers with only the relevant environment information so they can focus on their work. Argo CD will handle the synchronization of the NGINX workload into Kubernetes.
The code for this article can be found on our community GitHub. The main blueprint file (blueprint.yaml) uses service composition to integrate multiple blueprints into a single environment, as explained later in the article. If you want to follow along, you only need to upload the main blueprint file.
One of Cloudify’s essential features is the ability to easily integrate with any tool. The blueprints used for this article leverage our REST API plugin and demonstrate how Cloudify includes native functionality for integrating with any tool that exposes an HTTP API. We are also considering building an officially supported Argo CD plugin.
Building Environments from Reusable Components
Deploying an end-to-end environment with an EKS cluster, Argo CD installation, and application involves several reusable components. Our developer may also want to deploy any of these components individually. For example, an EKS cluster may be deployed without Argo CD. Similarly, a user may want to deploy Argo CD into an existing cluster.
Cloudify supports this type of reusability through Service Composition, which combines multiple blueprints into a unified environment. The Blueprint Topology clearly illustrates this concept. The building block next to each component indicates that each piece of this environment is a reusable component and can be deployed on its own. Cloudify automatically uploads the correct blueprint to the Cloudify manager for each component.
Deploying the Environment
Cloudify integrates with the workflows that make sense for your users. Some teams prefer a rich graphical experience for interacting with their environments, while others prefer to work at the command line or via API integration. Cloudify supports both approaches, allowing teams to work in the way that is most comfortable for them.
UI Installation Demo
The UI provides a simple way to deploy the full end-to-end environment in only a few clicks. Notice how the entire stack, from cluster through to NGINX, is seamlessly built. The execution task graph shows the process of each step, and the Cloudify Manager makes it easy to access the relevant endpoint information once the deployment is complete:
CLI Installation Demo
The graphical interface provides an excellent service-catalog approach to deploying an environment. Many users are more comfortable with CLI-based tools to do their work. The Cloudify CLI empowers users to deploy environments without ever leaving their shells. Similar to the GUI, logs and deployment information can be easily consumed via the CLI:
Using the Environment
Once the environment has been provisioned, Cloudify makes it easy to start using the environment. The Deployment Info page contains all of the relevant information about the environment, including the endpoint and credentials for accessing ArgoCD and the NGINX application. Only the relevant information is exposed to the end user, just like with the environment creation process.
Argo CD is an excellent tool for managing applications in Kubernetes and synchronizing their state with source code management. By pairing Argo CD with Cloudify, you gain the ability to deploy and manage the full, end-to-end environment while placing reasonable guardrails around deployment options. You can have confidence that the full environment is deployed quickly, consistently, and securely. Additionally, your users don’t have to context-switch between multiple technologies to deploy the full stack. Instead, they can deploy the full environment in minutes from a consistent GUI or CLI and focus on their core work.