From 17bcb3bdbff2288b5f753b40c910e7c761c9979f Mon Sep 17 00:00:00 2001 From: Jesse Suen Date: Thu, 15 Nov 2018 14:34:39 -0800 Subject: [PATCH] Update docs to describe how to customize repo-server (issue #772) (#778) --- docs/README.md | 1 + docs/custom_tools.md | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 docs/custom_tools.md diff --git a/docs/README.md b/docs/README.md index b4eb1e76e1..5d57a2cc9b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -19,4 +19,5 @@ ## Other * [Configuring Ingress](ingress.md) +* [Custom Tooling](custom_tools.md) * [F.A.Q.](faq.md) diff --git a/docs/custom_tools.md b/docs/custom_tools.md new file mode 100644 index 0000000000..088c815dbc --- /dev/null +++ b/docs/custom_tools.md @@ -0,0 +1,35 @@ +# Custom Tooling + +Argo CD bundles preferred versions of its supported templating tools (helm, kustomize, ks, jsonnet) +as part of its container images. Sometimes, it may be desired to use a specific version of a tool +other than what Argo CD bundles. Some reasons to do this might be: + +* To upgrade/downgrade to a specific version of a tool due to bugs or bug fixes. +* To install additional dependencies which to be used by kustomize's configmap/secret generators + (e.g. curl, vault) + +As the Argo CD repo-server is the single service responsible for generating Kubernetes manifests, it +can be customized to use alternative toolchain required by your environment. + +The following example describes how the repo-server manifest can be customized to use a different +version of helm than what is bundled in Argo CD: + +```yaml + spec: + # 1. Define an emptyDir volume which will hold the custom binaries + volumes: + - name: custom-tools + emptyDir: {} + # 2. Use an init container to download and/or copy the custom binaries into the emptyDir + initContainers: + - name: download-tools + image: lachlanevenson/k8s-helm:v2.10.0 + command: [cp, /usr/local/bin/helm, /custom-tools] + # 3. Volume mount the custom binary to the bin directory (overriding the existing version) + containers: + - name: argocd-repo-server + volumeMounts: + - mountPath: /usr/local/bin/helm + name: custom-tools + subPath: helm +```