ArgoCD is a Continuous Delivery and Deployment tool based on GitOps principles. It helps to automate deployment to Kubernetes cluster from github. We will look into how to adopt and use argoCD for continuous deployment.
2. Lack of etiquette and manners is a huge turn off.
KnolX Etiquettes
Punctuality
Respect Knolx session timings, you
are requested not to join sessions
after a 5 minutes threshold post
the session start time.
Feedback
Make sure to submit a constructive
feedback for all sessions as it is
very helpful for the presenter.
Silent Mode
Keep your mobile devices in silent
mode, feel free to move out of
session in case you need to attend
an urgent call.
Avoid Disturbance
Avoid unwanted chit chat during
the session.
3. Our Agenda
01 What is GitOps
02 Why we need GitOps
03 What is ArgoCD
04 ArgoCD components
05 CI/CD Workflow with ArgoCD
06 Demo
4. What is GitOps
● An operating model for deployment on Kubernetes and other
cloud native technologies.
● It provides idempotency in the environment as it works to match
the current state to the desired state defined in the Github
Repo.
● It provides Continuous Delivery as well as Deployment with
visibility into the environment and thus providing the status of
the deployment.
● It also provides features like automated rollback, different
deployment strategies etc.
5. Why we need GitOps
● No visibility in the deployment environment
● For managed CI services we will need to authenticate
and authorize
● Risk of sensitive credentials being misplaced
● Need for manual rollback
● Risk of misconfiguration and human errors in the
deployment environment
6. What is ArgoCD
● Argo CD is a declarative, GitOps continuous delivery tool for
Kubernetes.
● Argo CD follows the GitOps pattern of using Git repositories
as the source of truth for defining the desired application
state.
● Kubernetes manifests can be specified in several ways:
kustomize applications, helm charts, ksonnet applications,
jsonnet files, Plain directory of YAML/json manifests, any
custom config management tool configured as a config
management plugin
● Argo CD automates the deployment of the desired
application states in the specified target environments.
● Application deployments can track updates to branches,
tags, or pinned to a specific version of manifests at a Git
commit.
7. ArgoCD Components
● API Server: The API server is a gRPC/REST server which exposes the API consumed by the Web UI, CLI, and
CI/CD systems and performs authentication and authorization, calls application operations like sync, rollback etc.
● Repository Server: Maintains a local cache of the repository and generates the manifest using specified tools.
● Application Controller: It monitors the Kubernetes cluster and deployed applications and compares the current
and live state of the applications.
● Redis Server: Redis database is used to store the local cache created by the repo Server.
● Dex Server: It is used to integrate with external IDP, LDAP providers for the purpose of SSO.
● Application: A group of Kubernetes resources as defined by a manifest. This is a Custom Resource Definition
(CRD).
● Project: Projects are logical grouping of one or more applications.
8. Features of ArgoCD
● A dedicated GitOps tool to automate deployment to Kubernetes Cluster.
● Provides health status for the deployed applications.
● Uses github repo as the source of truth
● Kubernetes native. Being deployed in the cluster, does not need extra credentials
● One instance of ArgoCD can deploy to multiple clusters
● Supports different tools to generate Kubernetes manifests
● Exposes HTTP as well as HTTPS endpoint
● Has an elegant UI which provides health status for deployed applications
● Supports Webhook
9. ArgoCD Health Status
● Sync: The process by which an argoCD application reach the desired target state
defined in repository from its current state.
● Health: The health status of the application.
○ Healthy: The application live and desired state are in sync.
○ Out Of Sync: The desired state and the live state are not same.
○ Progressing: The sync operation is ongoing and the application will be healthy soon
○ Degraded: The app health is degrading
○ Unknown: The app health is unknown