argocd: Deploy Argo CD
[Argo CD] is a Kubernetes-native GitOps/continuous deployment manager. It monitors the state of Kubnernetes resources, such as Pods, Deployments, ConfigMaps, Secrets, and Custom Resources, and synchronizes them with their canonical definitions from a Git repository. *Argo CD* consists of various components, including a Repository Service, an Application Controller, a Notification Controller, and an API server/Web UI. It also has some optional components, such as a bundled Dex server for authentication/authorization, and an ApplicationSet controller, which we will not be using. [Argo CD]: https://argo-cd.readthedocs.io/
This commit is contained in:
46
argocd/README.md
Normal file
46
argocd/README.md
Normal file
@@ -0,0 +1,46 @@
|
||||
# Argo CD
|
||||
|
||||
> [Argo CD] is a declarative GitOps continuous delivery tool, which allows
|
||||
> developers to define and control deployment of Kubernetes application
|
||||
> resources from within their existing Git workflow.
|
||||
|
||||
```sh
|
||||
kubectl apply -k argocd
|
||||
kubectl apply -f argocd/applications
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
Argo CD consists of several components, some of which are not used:
|
||||
|
||||
- [x] Application Controller
|
||||
- [x] Repository Service
|
||||
- [x] Web Server
|
||||
- [x] Notification Controller
|
||||
- [ ] ApplicationSet Controller[^1]
|
||||
- [ ] Dex Server[^2]
|
||||
|
||||
[^1]: ApplicationSets are "generators" that can be used to apply applications
|
||||
to multiple clusters. As we only have a single cluster, it is not useful.
|
||||
[^2]: Argo CD includes Dex to handle authentication and authorization, but we
|
||||
are using Authelia instead.
|
||||
|
||||
|
||||
## Applications
|
||||
|
||||
*Applications* are the core resource in Argo CD. They form a collection of
|
||||
resources associated with a particular application deployment. They are
|
||||
themselves defined as Kubernetes resources (see [applications]).
|
||||
|
||||
|
||||
## Git Webhook
|
||||
|
||||
*Argo CD* will automatically refresh the desired state of applications whenever
|
||||
a changeset is pushed to the Git repository where manifests are stored. The
|
||||
[infra/kubernetes] repository has a Webhook configured in Gitea that notifies
|
||||
the Argo CD server on Git push events.
|
||||
|
||||
|
||||
[Argo CD]: https://argo-cd.readthedocs.io/
|
||||
[applications]: ./applications/
|
||||
[infra/kubernetes]: https://git.pyrocufflink.blue/infra/kubernetes
|
||||
Reference in New Issue
Block a user