Open4

[Argo CD] helmfile / helm-secretsを使う

mikutasmikutas

3つのステップ

Write the plugin configuration file

https://github.com/mikutas/helmfiles/blob/1d48de578a1e3bbbdb1383bec483ce9d4db15476/argo-cd/values.yaml#L16-L28

以下の理由で-qをつける

The generate command runs in the Application source directory each time manifests are generated. Standard output must be ONLY valid Kubernetes Objects in either YAML or JSON. A non-zero exit code will fail manifest generation.
To write log messages from the command, write them to stderr, it will always be displayed.
Error output will be sent to the UI, so avoid printing sensitive information (such as secrets).

プラグインなしでHelmチャートを処理する場合--include-crdsはデフォルトでtrueであるため(またAppのspecでskipCrdsも使わないため)--include-crdsもつける

https://github.com/argoproj/argo-cd/blob/7cf5ed06d4f8105812a9430f52419179762350da/util/helm/cmd.go#L358-L360

mikutasmikutas

Register the plugin sidecar

To install a plugin, patch argocd-repo-server to run the plugin container as a sidecar, with argocd-cmp-server as its entrypoint. You can use either off-the-shelf or custom-built plugin image as sidecar image.

サイドカーにはhelmfileイメージを使う
helmfile / helm-diff / helm-git / helm-s3 / helm-secretsが最初から入っている

https://github.com/mikutas/helmfiles/blob/c67471607eba6feaee9024afc1ea590b9ba32fe8/argo-cd/values.yaml#L45

https://github.com/helmfile/helmfile/blob/main/Dockerfile

argocd-cmp-server as its entrypoint

repo-serverにもともと存在するinit containerでvar-files volumeにバイナリをコピーしている

https://github.com/argoproj/argo-helm/blob/argo-cd-7.3.11/charts/argo-cd/templates/argocd-repo-server/deployment.yaml#L365-L370

なので、extra containerにvar-filesをマウントすると、

https://github.com/mikutas/helmfiles/blob/8f5329395cf1aa93362c9a2f9204dfb327ac9b18/argo-cd/values.yaml#L48-L49

そこに置いてあるargocd-cmp-serverを起動できる

https://github.com/mikutas/helmfiles/blob/8f5329395cf1aa93362c9a2f9204dfb327ac9b18/argo-cd/values.yaml#L35-L36