Open3

[Argo CD] インストール

mikutasmikutas

Argo CDインストール

  • apps/に親Appのローカルチャート置く
    • Argo CD用はapps/argo-cd
  • ローカルチャートのdependenciesに公式argo-cdを含める
  • ローカルチャートのtemplatesに
    • argocd AppProjectを定義
      • default AppProjectを後で不使用にするため
    • argocd Applicationを定義、自分のいるチャートを指し、argocd AppProjectを参照
    • app-projects Applicationを定義、AppProjectをまとめて定義したチャートを指す
      • App of Appsの親Appがargocd、子Appがapp-projectsの形
やっぱりやめた(CRDとApplication / AppProjectの作成順)

ApplicationとAppProjectにはアノテーションを付ける

  annotations:
    helm.sh/hook: post-install
    helm.sh/hook-delete-policy: hook-failed

上は初回のhelm install時にCRDより後に作らせるため

https://helm.sh/docs/topics/charts_hooks/#hook-resources-are-not-managed-with-corresponding-releases

The resources that a hook creates are currently not tracked or managed as part of the release.

install後にhookを付けたリソースのマニフェストをどこか変更してhelm upgradeしても、そのリソースは更新されない
Helmは初回インストールでしか直接利用しないためよしとする
Argo CDにSyncさせた場合は更新される

下はArgo CDでSync時に削除されないようにするため
https://argo-cd.readthedocs.io/en/stable/user-guide/resource_hooks/#hook-deletion-policies

やっぱりこうする(CRDとApplication / AppProjectの作成順)
mikutasmikutas

ApplicationSetのインストール

  • apps/*に親Appを置くためGit generatorのdirectory typeを使う
        directories:
          - path: apps/argo-cd
            exclude: true
          - path: apps/*
mikutasmikutas

事故防止

管理者向けにビルトインのrole:adminをそのまま使っていると、argo-cd Application傘下のリソースを管理者が削除できてしまう。
denyポリシーを作って削除を禁止する。

https://github.com/mikutas/helmfiles/blob/851b2f810c633b09eb29e758c971de024b0a38b4/apps/argo-cd/values.yaml#L34-L36


ただしビルトインポリシーに不満があるならば自前のポリシーを定義するのが良いとも言われている。

https://github.com/argoproj/argo-cd/discussions/20259

いまのところビルトインポリシーに付け足したいポリシーが1行しかないため
流用+1行のdenyポリシー付け足し
を続けることにする。