Skip to content

Instantly share code, notes, and snippets.

@leonardochaia
Created April 17, 2024 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leonardochaia/470adc15a1091246291e29565bab995d to your computer and use it in GitHub Desktop.
Save leonardochaia/470adc15a1091246291e29565bab995d to your computer and use it in GitHub Desktop.
ArgoCD Kustomize Plugin Docker KRM
apiVersion: apps/v1
kind: Deployment
metadata:
name: argocd-repo-server
spec:
template:
spec:
containers:
- name: kustomize-docker
command: [/var/run/argocd/argocd-cmp-server]
image: your-registry/argocd-podman-plugin
securityContext:
privileged: true
runAsNonRoot: true
runAsUser: 999
volumeMounts:
- mountPath: /var/run/argocd
name: var-files
- mountPath: /home/argocd/cmp-server/plugins
name: plugins
- mountPath: /tmp
name: tmp
env:
- name: KUSTOMIZE_PLUGIN_HOME
value: /tmp/docker
- name: XDG_RUNTIME_DIR
value: /tmp/docker
- name: XDG_DATA_HOME
value: /tmp/docker
- name: XDG_CONFIG_HOME
value: /tmp/docker
- name: TMPDIR
value: /tmp/docker
volumes:
- emptyDir: {}
name: tmp
# plugin-image/Dockerfile
FROM alpine:3.19
RUN apk update && apk add --no-cache \
--repository=http://dl-cdn.alpinelinux.org/alpine/edge/testing \
kustomize podman
RUN ln -s /usr/bin/podman /usr/bin/docker \
&& adduser -h /home/argocd -s /bin/sh -G ping -u 999 -D argocd \
&& echo 'argocd:165536:65536' >> /etc/subuid \
&& echo 'argocd:165536:65536' >> /etc/subgid
COPY storage.conf /home/argocd/.config/containers/storage.conf
COPY plugin.yaml /home/argocd/cmp-server/config/plugin.yaml
# Example app using plugin
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: root-app
namespace: argocd
spec:
source:
repoURL: Your Repo
targetRevision: main
path: 'applications'
plugin:
name: kustomize-docker-plugin
# You can't use this while using plugin
# kustomize:
# components:
# - ../../environments/azure-dev/hub/_config
# - ../../environments/azure-shared-infrastructure/_components-base
destination:
server: https://kubernetes.default.svc
namespace: your-ns
# plugin-image/plugin.yaml
apiVersion: argoproj.io/v1alpha1
kind: ConfigManagementPlugin
metadata:
name: kustomize-docker-plugin
spec:
discover:
find:
command: [sh, -c, find . -name *.yaml]
generate:
command: [sh]
args: [-c, 'kustomize build --enable-alpha-plugins --enable-helm']
init:
command: [sh]
args: [-c, 'echo "Initializing..."']
# plugin-image/storage.conf
[storage]
driver = "overlay"
runroot = "/tmp/docker/run/containers/storage"
graphroot = "/tmp/docker/var/lib/containers/storage"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment