Background
- Helm is one of many package managers for k8s.
- K8S objects = K8S manifests yaml files
- Under the hood, Argo CD can be deployed using helm charts
- Helm charts are packaged up k8s manifests files in the for of helm templates, .tpl files that are fundamentally written in the Go Language.
Argo CD
- Argo CD can use Helm, Kustomize, jsonnet under the hood to help with CD
- Argo CD can allow applications to self-heal, self-prune, auto-sync with their connected Github Repos.
- Argo CD application can auto run, build services, service accounts, deployment and wrap it up with ingress control.
Common issues:
- Ingress is stuck at βProgressingβ state
- Ans: Likely due to missing resources in the ClusterConfig role. Need admin users with Cluster level access to fix and add the following back to the ClusterConfigβ¦
- Ans: Likely due to missing resources in the ClusterConfig role. Need admin users with Cluster level access to fix and add the following back to the ClusterConfigβ¦
- Ingress is stuck at βProgressingβ state
Helm
Pros of Helm: Saves a lot of time to rewrite yaml manifests files for the same deployment across envs and regions Cons of Helm: Harder to debug due to templates logics all wrapped up in go and common helper functions
File structure of Argo CD
please draw a bash tree with the following inputs
hk-infra/ - argocd/ - common/ (itβs a library) - templates/ - _deployment.yaml - _helpers.tpl - _ingress.yaml - _service.yaml - _serviceaccount.yaml - _util.yaml - Chart.yaml - feed-api/charts - config/ (itβs a library) - templates/ - Chart.yaml - dev/charts/ - hk/ - templates/ - configmap.yaml - deployment.yaml - ingress.yaml - service.yaml - serviceaccount.yaml - Charts - values-hk-dev.yaml - us/ - templates/ - configmap.yaml - deployment.yaml - ingress.yaml - service.yaml - serviceaccount.yaml - Charts - values-us-dev.yaml - prod/charts/ - hk/ - templates/ - configmap.yaml - deployment.yaml - ingress.yaml - service.yaml - serviceaccount.yaml - Charts - values-hk-prod.yaml - us/ - templates/ - configmap.yaml - deployment.yaml - ingress.yaml - service.yaml - serviceaccount.yaml - Charts - values-us-prod.yaml
hk-infra/
βββ argocd/
βββ common/ # library chart
β βββ Chart.yaml
β βββ templates/
β βββ _deployment.yaml
β βββ _helpers.tpl
β βββ _ingress.yaml
β βββ _service.yaml
β βββ _serviceaccount.yaml
β βββ _util.yaml
βββ feed-api/
βββ charts/
βββ config/ # library chart
β βββ Chart.yaml
β βββ templates/
βββ dev/
β βββ charts/
β βββ hk/
β β βββ Charts
β β βββ values-hk-dev.yaml
β β βββ templates/
β β βββ configmap.yaml
β β βββ deployment.yaml
β β βββ ingress.yaml
β β βββ service.yaml
β β βββ serviceaccount.yaml
β βββ us/
β βββ Charts
β βββ values-us-dev.yaml
β βββ templates/
β βββ configmap.yaml
β βββ deployment.yaml
β βββ ingress.yaml
β βββ service.yaml
β βββ serviceaccount.yaml
βββ prod/
βββ charts/
βββ hk/
β βββ Charts
β βββ values-hk-prod.yaml
β βββ templates/
β βββ configmap.yaml
β βββ deployment.yaml
β βββ ingress.yaml
β βββ service.yaml
β βββ serviceaccount.yaml
βββ us/
βββ Charts
βββ values-us-prod.yaml
βββ templates/
βββ configmap.yaml
βββ deployment.yaml
βββ ingress.yaml
βββ service.yaml
βββ serviceaccount.yaml