Skip to content

Instantly share code, notes, and snippets.

@lukeplausin
Created April 4, 2024 15:43
Show Gist options
  • Save lukeplausin/514158fc9c82dd0c54ac18cb33c26a2b to your computer and use it in GitHub Desktop.
Save lukeplausin/514158fc9c82dd0c54ac18cb33c26a2b to your computer and use it in GitHub Desktop.
Install ArgoCD lovely plugin via helm values.yaml file configuration
# Ah yes, the lovely, undocumented, and not-at-all-irrationally-difficult-to-understand ArgoCD method of chart customisation - plugins...
# If you are struggling to install the "lovely" plugin (or any plugin for that matter) with the ArgoCD Helm chart, this Gist could help you.
# Include this values config file as part of a Helm/Helmfile values argument to include the "lovely" plugin in your ArgoCD deployment.
# "Lovely" includes several popular tools for helm chart management, including the brilliant Helmfile, which itself includes
# "Vals" for secrets management.
---
argo-cd:
configs:
# ConfigMap for Config Management Plugins
# Ref: https://argo-cd.readthedocs.io/en/stable/operator-manual/config-management-plugins/
cmp:
# -- Create the argocd-cmp-cm configmap
create: true
# -- Annotations to be added to argocd-cmp-cm configmap
annotations: {}
# -- Plugin yaml files to be added to argocd-cmp-cm
plugins:
argocd-lovely-plugin:
name: argocd-lovely-plugin
init:
command: [sh]
args: [-c, 'echo "Initializing lovely plugin..."']
generate:
# I have no idea if this is correct, but the plugin seems to work regardless
command: [sh, -c]
args:
- |
helm secrets --evaluate-templates template --namespace $ARGOCD_APP_NAMESPACE $ARGOCD_APP_NAME .
discover:
fileName: "./values.yaml"
# find:
# glob: "**/Chart.yaml"
# command: [sh, -c, find . -name env.yaml]
parameters:
static:
- name: values-files
title: VALUES FILES
collectionType: array
# dynamic:
# command: [sh, /var/run/argocd/helm-plugin/get-parameters.sh]
repoServer:
volumes:
- name: argocd-cmp-cm
configMap:
name: argocd-cmp-cm
- name: lovely-tmp
emptyDir: {}
volumeMounts:
# Works
- mountPath: /home/argocd/cmp-server/config/plugin.yaml
subPath: argocd-lovely-plugin.yaml
name: argocd-cmp-cm
# -- Additional containers to be added to the repo server pod
## Ref: https://argo-cd.readthedocs.io/en/stable/user-guide/config-management-plugins/
## Note: Supports use of custom Helm templates
extraContainers:
- name: lovely-plugin
# Choose your image here - this one has the Argo CD Vault plugin in it. See https://github.com/crumbhole/argocd-lovely-plugin/blob/main/doc/variations.md
# image: ghcr.io/crumbhole/lovely-vault-plugin:1.0.1
image: ghcr.io/crumbhole/lovely:1.0.1
# Here we are configuring default environment for every app - in this case vault
# envFrom:
# - secretRef:
# name: vault-env
securityContext:
runAsNonRoot: true
runAsUser: 999
volumeMounts:
# Import the repo-server's plugin binary
- mountPath: /var/run/argocd
name: var-files
- mountPath: /home/argocd/cmp-server/plugins
name: plugins
# Starting with v2.4, do NOT mount the same tmp volume as the repo-server container. The filesystem separation helps
# mitigate path traversal attacks.
- mountPath: /tmp
name: lovely-tmp
# -- Init containers to add to the repo server pods
initContainers: []
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment