### Install Argo CD Minimally Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Install Argo CD using Helm, creating the namespace if it doesn't exist, and set up port forwarding for the server. ```shell helm install argocd argo/argo-cd -n argocd --create-namespace kubectl port-forward service/argo-cd-argocd-server -n argocd 8080:443 ``` -------------------------------- ### Install Argo-Events Chart Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-events/README.md Install the Argo-Events chart with a specified release name. ```shell helm install my-release argo/argo-events ``` -------------------------------- ### Add Argo Helm Repository and Install (Classic) Source: https://github.com/argoproj/argo-helm/blob/main/charts/argocd-image-updater/README.md Add the Argo Helm repository and install the chart using the classic Helm approach. ```shell helm repo add argo https://argoproj.github.io/argo-helm helm install argocd-image-updater argo/argocd-image-updater --namespace ``` -------------------------------- ### Install Argo Workflows Helm Chart Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-workflows/README.md Add the Argo Helm repository and install the Argo Workflows chart with a release name. ```bash $ helm repo add argo https://argoproj.github.io/argo-helm "argo" has been added to your repositories $ helm install my-release argo/argo-workflows NAME: my-release ... ``` -------------------------------- ### Test Argo Workflows Locally Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Install Argo Workflows using Helm and verify the installation with `argo version`. Follow the provided link for running a sample workflow. ```shell kubectl create ns argo helm install charts/argo-workflows -n argo argo version ``` -------------------------------- ### Install Argo Rollouts Helm Chart Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-rollouts/README.md Add the Argo Helm repository and install the argo-rollouts chart with a release name. Ensure Helm v3.0.0+ and Kubernetes 1.7+ are prerequisites. ```bash helm repo add argo https://argoproj.github.io/argo-helm helm install my-release argo/argo-rollouts ``` -------------------------------- ### Install Argo CD Image Updater (OCI) Source: https://github.com/argoproj/argo-helm/blob/main/charts/argocd-image-updater/README.md Install the Argo CD Image Updater using OCI registry with Helm. ```shell helm install oci://ghcr.io/argoproj/argo-helm/argocd-image-updater --namespace ``` -------------------------------- ### Install Argo CD Helm Chart Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Installs the Argo CD chart with a specified release name. This command deploys Argo CD to your Kubernetes cluster. ```console helm install my-release argo/argo-cd NAME: my-release ... ``` -------------------------------- ### Install Argo CD Applications Helm Chart Source: https://github.com/argoproj/argo-helm/blob/main/charts/argocd-apps/README.md These commands demonstrate how to add the Argo Helm repository and install the argocd-apps chart. This chart is used to deploy Argo CD Applications, ApplicationSets, and Projects. ```shell helm repo add argo https://argoproj.github.io/argo-helm helm install my-release argo/argocd-apps ``` -------------------------------- ### Enable Gateway API HTTPRoute and GRPCRoute Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Configure both HTTPRoute and GRPCRoute for your Gateway API setup. Ensure `server.httproute.enabled` and `server.grpcroute.enabled` are set to true, with appropriate `parentRefs` for each. ```yaml server: httproute: enabled: true parentRefs: - name: example-gateway namespace: gateway-system sectionName: https grpcroute: enabled: true parentRefs: - name: example-gateway namespace: gateway-system sectionName: grpc ``` -------------------------------- ### Helm Template with API Versions Source: https://github.com/argoproj/argo-helm/blob/main/README.md Demonstrates how to use the `helm template` command with the `--api-versions` flag to ensure Helm or the Helm SDK receives the available APIs from your Kubernetes cluster. This is crucial when templating manifests without performing a full `helm install`. ```bash helm template argocd \ oci://ghcr.io/argoproj/argo-helm/argo-cd \ --api-versions monitoring.coreos.com/v1 \ --values my-argocd-values.yaml ``` -------------------------------- ### Switch to Single Redis Installation in Argo CD Helm Chart Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md As an alternative to deleting pods, temporarily switch to a single Redis installation before upgrading to chart version 7.9 or newer and re-enabling Redis HA. ```bash helm upgrade argocd argo/argo-cd --version --reuse-values --set redis-ha.enabled=false ``` ```bash helm upgrade argocd argo/argo-cd --version 7.9.0 --reuse-values --set redis-ha.enabled=true ``` -------------------------------- ### Install Argo Workflows with Minified CRDs Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-workflows/README.md Use this command to install the Argo Workflows Helm chart with minified CRDs, which accept any fields but offer minimal validation. ```bash helm install my-release argo/argo-workflows --set crds.full=false ``` -------------------------------- ### Example Chart.yaml Annotations Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md This is a template for the `artifacthub.io/changes` annotation in `Chart.yaml`, demonstrating various change kinds like added, changed, deprecated, removed, fixed, and security. ```yaml name: argo-cd version: 5.19.12 ... annotations: artifacthub.io/changes: | - kind: added description: Something New was added - kind: changed description: Changed Something within this chart - kind: changed description: Changed Something else within this chart - kind: deprecated description: Something deprecated - kind: removed description: Something was removed - kind: fixed description: Something was fixed - kind: security description: Some Security Patch was included ``` -------------------------------- ### Add Redis Helm Repository and Update Dependencies Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Add the necessary Redis Helm repository and update chart dependencies before installing Argo CD. ```shell helm repo add redis-ha https://dandydeveloper.github.io/charts/ helm dependency update ``` -------------------------------- ### Regenerate Documentation with helm-docs Source: https://github.com/argoproj/argo-helm/blob/main/charts/argocd-apps/README.md This command regenerates the documentation for the Helm chart using the helm-docs tool. It requires Docker to be installed and mounts the current directory into the helm-docs container. ```shell docker run --rm --volume "$(pwd):/helm-docs" -u $(id -u) jnorwood/helm-docs:latest ``` -------------------------------- ### Argo CD GKE Application Load Balancer Configuration Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Configure Argo CD Ingress for Google Kubernetes Engine (GKE) Application Load Balancer. This example sets up GKE-specific annotations for NEG, backend configuration, health checks, and managed certificates. ```yaml global: domain: argocd.example.com configs: params: server.insecure: true server: service: annotations: cloud.google.com/neg: '{"ingress": true}' cloud.google.com/backend-config: '{"ports": {"http":"argocd-server"}}' ingress: enabled: true controller: gke gke: backendConfig: healthCheck: checkIntervalSec: 30 timeoutSec: 5 healthyThreshold: 1 unhealthyThreshold: 2 type: HTTP requestPath: /healthz port: 8080 frontendConfig: redirectToHttps: enabled: true managedCertificate: enabled: true ``` -------------------------------- ### Argo CD Multiple Ingress Domains Configuration Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Configure Argo CD Ingress to support multiple domains. This example includes an alias domain and sets the backend protocol to HTTPS, assuming TLS is enabled. ```yaml global: domain: argocd.example.com server: ingress: enabled: true ingressClassName: nginx annotations: cert-manager.io/cluster-issuer: "" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" tls: true extraHosts: - name: argocd-alias.example.com path: / ``` -------------------------------- ### Disable CRD Installation Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-events/README.md Install the chart while disabling the installation of Custom Resource Definitions (CRDs). ```shell helm install --set crds.install=false my-release argo/argo-events ``` -------------------------------- ### Example Pull Request Title Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md An example of a pull request title that adheres to the Conventional Commits specification, including the scope of the change. ```text fix(argo-cd): Fix typo in values.yaml ``` -------------------------------- ### Build and Run Docker Container for Argo-Helm Release Analysis Source: https://github.com/argoproj/argo-helm/blob/main/scripts/release-analysis/README.md This snippet outlines the steps to build a Docker image for the analysis tool and then run it. It requires a GitHub Personal Access Token (PAT) for API access and mounts the current directory to persist generated data. The process involves cleaning up old data, building the container, and executing it with the provided token. ```bash docker build . -t team-helm-analysis rm -f argo_helm_releases.csv argo_releases.csv merged_releases.csv time_difference_plot_argo*.png GITHUB_TOKEN=your_token_here docker run --rm -e GITHUB_TOKEN=$GITHUB_TOKEN -v ${PWD}:/app team-helm-analysis ``` -------------------------------- ### Submit Hello-World Workflow Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-workflows/templates/NOTES.txt Submit a basic 'hello-world' workflow to Argo Workflows using the 'argo' CLI. The --watch flag will monitor the workflow's execution. ```bash argo submit https://raw.githubusercontent.com/argoproj/argo-workflows/master/examples/hello-world.yaml --watch ``` -------------------------------- ### Compare Argo CD install.yaml between versions Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md To update Helm chart defaults and templates, compare the `manifests/install.yaml` between two versions of the Argo CD repository. This can be done via GitHub or a local git diff. ```bash git clone https://github.com/argoproj/argo-cd.git cd argo-cd git diff v1.8.7 v2.0.0 -- manifests/install.yaml ``` -------------------------------- ### Create and Sync Argo CD Application Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Create a new Argo CD application named 'guestbook' and synchronize it with the repository. ```shell argocd app create guestbook --dest-namespace default --dest-server https://kubernetes.default.svc --path guestbook --project default --repo https://github.com/argoproj/argocd-example-apps.git argocd app sync guestbook ``` -------------------------------- ### Clean up Argo CD Installation Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Remove the Argo CD Helm release and Custom Resource Definitions (CRDs) associated with Argo CD. ```shell helm delete argo-cd --purge kubectl delete crd -l app.kubernetes.io/part-of=argocd ``` -------------------------------- ### Get Argo Server External IP/Domain Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-workflows/templates/NOTES.txt Retrieve the external IP address or domain name of the Argo Server. Ensure you are in the correct namespace. ```bash kubectl --namespace {{ .Release.Namespace }} get services -o wide | grep {{ template "argo-workflows.server.fullname" . }} ``` -------------------------------- ### Regenerate Documentation Source: https://github.com/argoproj/argo-helm/blob/main/charts/argocd-image-updater/README.md Run this command to regenerate the documentation for the Helm chart. ```shell docker run --rm --volume "$(pwd):/helm-docs" -u $(id -u) jnorwood/helm-docs:latest ``` -------------------------------- ### Configure Server Extra Args for Static Assets Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md If the '--staticassets' flag needs to be enabled for older Argo CD releases, it can be passed via the `server.extraArgs` field in the Helm chart configuration. ```yaml server: extraArgs: staticassets: "" ``` -------------------------------- ### Helmfile Configuration for API Versions Source: https://github.com/argoproj/argo-helm/blob/main/README.md Illustrates how to specify API versions for Helm charts within a `helmfile.yaml` configuration. This allows helmfile to pass the necessary API information to Helm during the release process. ```yaml # 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 ``` -------------------------------- ### Add Argo Helm Repository Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-events/README.md Add the Argo Helm repository to your local Helm configuration. ```shell helm repo add argo https://argoproj.github.io/argo-helm ``` -------------------------------- ### Add Argo CD Helm Repository Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Adds the Argo CD Helm repository to your local Helm configuration. This command is necessary before you can install the Argo CD chart. ```console helm repo add argo https://argoproj.github.io/argo-helm "argo" has been added to your repositories ``` -------------------------------- ### Kustomize Configuration for API Versions Source: https://github.com/argoproj/argo-helm/blob/main/README.md Shows how to configure Kustomize to include specific API versions when rendering Helm charts. This is achieved by defining the `apiVersions` field within the `helmCharts` section of the `kustomization.yaml` file. ```yaml # 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 ``` -------------------------------- ### Argo CD SSL Termination Ingress Configuration Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Configure SSL Termination at the Ingress Controller for Argo CD. This setup uses HTTP for the backend protocol and requires a TLS secret for the frontend. ```yaml global: domain: argocd.example.com configs: params: server.insecure: true server: ingress: enabled: true ingressClassName: nginx annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/backend-protocol: "HTTP" extraTls: - hosts: - argocd.example.com # Based on the ingress controller used secret might be optional secretName: wildcard-tls ``` -------------------------------- ### Argo CD AKS Application Routing Configuration Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Configure Argo CD Ingress for AKS Application Routing using the `generic` controller. This setup is suitable for AKS Web Application Routing, which is based on nginx. ```yaml global: domain: argocd.example.com configs: params: server.insecure: true server: ingress: enabled: true controller: generic ingressClassName: webapprouting.kubernetes.azure.com annotations: # Optional: Add any AKS-specific annotations if needed extraTls: - hosts: - argocd.example.com # Certificate can be managed by Web Application Routing secretName: argocd-tls ``` -------------------------------- ### Configure Gateway API with TLS Backend Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Set up Gateway API for HTTPS backends by enabling `server.httproute` and `server.backendTLSPolicy`. Configure `server.insecure: false` for HTTPS and specify the `hostname` and `wellKnownCACertificates` for the backend policy. ```yaml configs: params: server.insecure: false # HTTPS backend server: httproute: enabled: true parentRefs: - name: example-gateway namespace: gateway-system backendTLSPolicy: enabled: true hostname: argocd-server.argocd.svc.cluster.local wellKnownCACertificates: System ``` -------------------------------- ### Configure ServiceAccount and Namespaces in values.yaml Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-workflows/README.md Define ServiceAccount creation, RBAC, and workflow namespaces within the `values.yaml` file for Helm chart configuration. ```yaml workflow: serviceAccount: create: true name: "argo-workflow" rbac: create: true controller: workflowNamespaces: - default - foo - bar ``` -------------------------------- ### Argo CD AWS Application Load Balancer Configuration Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Configure Argo CD Ingress for AWS Application Load Balancer (ALB) with TLS off-loading via AWS ACM. This setup uses `controller: aws` and specifies backend protocol as GRPC. ```yaml global: domain: argocd.example.com configs: params: server.insecure: true server: ingress: enabled: true controller: aws ingressClassName: alb annotations: alb.ingress.kubernetes.io/scheme: internal alb.ingress.kubernetes.io/target-type: ip alb.ingress.kubernetes.io/backend-protocol: HTTP alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80}, {"HTTPS":443}]' alb.ingress.kubernetes.io/ssl-redirect: '443' aws: serviceType: ClusterIP # <- Used with target-type: ip backendProtocolVersion: GRPC ``` -------------------------------- ### Access Argo Rollouts Dashboard Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-rollouts/README.md If the dashboard is enabled, use kubectl port-forward to access it locally. Point your browser to the specified localhost address. ```bash kubectl port-forward service/argo-rollouts-dashboard 31000:3100 ``` -------------------------------- ### Run MegaLinter for Code Quality Check Source: https://github.com/argoproj/argo-helm/blob/main/scripts/release-analysis/README.md This command demonstrates how to run MegaLinter locally to perform code quality checks on the project. It uses Docker to isolate the linting environment and mounts the current directory and the Docker socket for MegaLinter to operate correctly. ```bash docker run --rm -v /var/run/docker.sock:/var/run/docker.sock:rw -v $(pwd):/tmp/lint:rw oxsecurity/megalinter:v8 ``` -------------------------------- ### Run Chart Linting Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Execute the chart linting script to check for compliance with Helm's stricter Chart Testing requirements. ```shell ./scripts/lint.sh ``` -------------------------------- ### Changelog Entry Format Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Use this format for documenting changes in the `Chart.yaml` annotations section. Each change requires a new bullet point with a kind and description. ```yaml - kind: {type} description: {description} ``` -------------------------------- ### Set Initial Admin Password via Argo CD Application CR Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md When deploying the Argo CD chart via an Argo CD Application CR, define the bcrypt-hashed admin password under `helm.values`. Avoid `helm.parameters` as it can mangle the hash. ```yaml apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: argocd-testing spec: destination: namespace: testing server: https://kubernetes.default.svc project: default source: chart: argo-cd repoURL: https://argoproj.github.io/argo-helm targetRevision: 3.21.0 helm: values: | configs: secret: argocdServerAdminPassword: $2a$10$H1a30nMr9v2QE2nkyz0BoOD2J0I6FQFMtHS0csEg12RBWzfRuuoE6 ``` -------------------------------- ### Run helm-docs Script Source: https://github.com/argoproj/argo-helm/blob/main/CONTRIBUTING.md Execute the helm-docs script to generate or update chart README.md files. This script handles the helm-docs docker container execution. ```bash ./scripts/helm-docs.sh ``` -------------------------------- ### Enable Gateway API HTTPRoute Source: https://github.com/argoproj/argo-helm/blob/main/charts/argo-cd/README.md Enable Gateway API HTTPRoute support by setting `server.httproute.enabled` to true and specifying `parentRefs` for your Gateway. ```yaml global: domain: argocd.example.com server: httproute: enabled: true parentRefs: - name: example-gateway namespace: gateway-system sectionName: https ```