Files
kubernetes/argocd/README.md
Dustin C. Hatch fdbf1d3432 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/
2023-10-14 10:17:04 -05:00

47 lines
1.4 KiB
Markdown

# 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