A GitOps continuous delivery tool for Kubernetes

Nothing but the Truth

Ready, Steady, …

After setting up Argo CD and the Argo CD CLI, you can register a cluster to deploy applications to and create an application from a Git repository. By default, Argo CD will deploy applications to the Kubernetes cluster on which it is installed. If you want to deploy applications to a different cluster, you need to register that cluster with Argo CD.

To register a cluster, use the command to add a cluster,

argocd cluster add <CONTEXT_NAME>

which requires the kubeconfig context name of the cluster you want to register.

A Simple Example

Now you can see how Argo CD leverages the power of Git to define your applications in a declarative manner and maintain version control. In other words, your application's desired state is described within your Git repository, and any changes to this state are tracked and version controlled.

For instance, consider a simple application defined by a Kubernetes Deployment (Listing 1) and Service (Listing 2). You can store the YAML manifests for these resources in a Git repository.

Listing 1

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-org/my-app:1.0.0
        ports:
        - containerPort: 8080

Listing 2

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: my-app
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080

With Argo CD, you can create an application that tracks the state of these resources:

argocd app create my-app --repo https://github.com/my-org/my-repo.git --path /path/to/application/manifests --dest-namespace default --dest-serverhttps://kubernetes.default.svc --sync-policy automated

This command creates an Argo CD application that automatically synchronizes the state of your Kubernetes application with the desired state defined in your Git repository.

Configurations and Environments

Argo CD's support for declarative and version-controlled configurations extends to environments as well. You can manage different environments such as development, staging, and production with separate namespaces in your Kubernetes cluster or even separate clusters.

For example, you can create different Argo CD applications for different environments. In the command in Listing 3, the development environment is automatically synchronized with the Git repository, whereas the production environment requires manual synchronization, which allows you to control when changes are deployed to production.

Listing 3

Environment Syncs

# Development environment sync policy
argocd app create my-app-dev --repo https://github.com/my-org/my-repo.git --path /path/to/application/manifests --dest-namespace dev --dest-server https://kubernetes.default.svc --sync-policy automated
# Production environment sync policy
argocd app create my-app-prod --repo https://github.com/my-org/my-repo.git --path /path/to/application/manifests --dest-namespace prod --dest-server https://kubernetes.default.svc --sync-policy manual

Buy this article as PDF

Express-Checkout as PDF
Price $2.95
(incl. VAT)

Buy ADMIN Magazine

SINGLE ISSUES
 
SUBSCRIPTIONS
 
TABLET & SMARTPHONE APPS
Get it on Google Play

US / Canada

Get it on Google Play

UK / Australia

Related content

comments powered by Disqus