Argo Helm is a collection of community maintained charts for https://argoproj.github.io projects. The charts can be added using following command:
helm repo add argo https://argoproj.github.io/argo-helm
We'd love to have you contribute! Please refer to our contribution guidelines for details.
Some users would prefer to install the CRDs outside of the chart. You can disable the CRD installation of the main four charts (argo-cd, argo-workflows, argo-events, argo-rollouts) by using --set crds.install=false
when installing the chart.
Helm cannot upgrade custom resource definitions in the <chart>/crds
folder by design. Our CRDs have been moved to <chart>/templates
to address this design decision.
If you are using versions of a chart that have the CRDs in the root of the chart or have elected to manage the Argo CRDs outside of the chart, please use kubectl
to upgrade CRDs manually from templates/crds folder or via the manifests from the upstream project repo:
Example:
kubectl apply -k "https://github.com/argoproj/argo-cd/manifests/crds?ref=<appVersion>"
# Eg. version v2.4.9
kubectl apply -k "https://github.com/argoproj/argo-cd/manifests/crds?ref=v2.4.9"
Please refer to SECURITY.md for details on how to report security issues.
Releases are managed independently for each helm chart, and changelogs are tracked on each release. Read more about this process here.
Our charts make use of the Helm built-in object "Capabilities":
This provides information about what capabilities the Kubernetes cluster supports.
Source: https://helm.sh/docs/chart_template_guide/builtin_objects/
Today we use:
.Capabilities.APIVersions.Has
mostly to determine whether the CRDs for ServiceMonitors (from prometheus-operator) exists inside the cluster.Capabilities.KubeVersion.Version
to handle correct apiVersion of a specific resource kind (eg. "policy/v1" vs. "policy/v1beta1")
If you use the charts only to template the manifests, without installing (helm install ..
), you need to make sure that Helm (or the Helm SDK) receives the available APIs from your Kubernetes cluster.
For this you need to pass the --api-versions
parameter to the helm template
command:
helm template argocd \
oci://ghcr.io/argoproj/argo-helm/argo-cd \
--api-versions monitoring.coreos.com/v1 \
--values my-argocd-values.yaml
If you use other tools like Kustomize or helmfile to render it, there are equivalent options.
Example with Kustomize:
# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
helmCharts:
- name: argo-cd
repo: oci://ghcr.io/argoproj/argo-helm
version: x.y.z
releaseName: argocd
apiVersions:
- monitoring.coreos.com/v1
valuesFile: my-argocd-values.yaml
Example with helmfile:
# helmfile.yaml
repositories:
- name: argo
url: https://argoproj.github.io/argo-helm
apiVersions:
- monitoring.coreos.com/v1
releases:
- name: argocd
namespace: argocd
chart: argo/argo-cd
values:
- my-argocd-values.yaml