忘れないうちに概要だけでもメモする。
Motivation
argocdでSSOするときにSSO先のcredential情報を平文でリポジトリにcommitしたくない。
解決方法
argocdのconfigmapからSecretを参照する機能を用い、 さらに参照先のSecretはSealedSecretで管理する。
段取り
- argocdをシュッと立ち上げる。
argocd-secretからserver.secretkeyを採取する(A)。- 使いたいSSOの
clientSecretからSecretを生成する(B)。 - (A)と(B)をマージしたSecretからSealedSecretを生成する。
- このとき、複合されるSecretの名前が
argocd-secretとなるように記述する。
- このとき、複合されるSecretの名前が
- argocdに元からある
argocd-secretにpatchを当て、sealedsecrets.bitnami.com/managed: "true"のannotationを付与する。 argocd-cmのclientSecretの値の先頭に$をつけて、Secretの値を参照できるようにする。- applyする。
ハマりポイント
sealedsecrets.bitnami.com/managed: "true" で勝つると思いきや生成タイミングの問題か server.secretkey が消えてしまい、 Unable to load data: server.secretkey is missing と怒られる。
Appendix
argocdのconfigmapからsecretsを参照する機能
https://github.com/argoproj/argo-cd/blob/6d44c4de413c2a5bbc6faf027a86d54a3e2ac8d0/docs/operator-manual/user-management/index.md#2-configure-argo-cd-for-sso
デフォルトで生成される server.secretkey について
https://github.com/argoproj/argo-cd/blob/v1.6.1/docs/operator-manual/argocd-secret.yaml#L21-L23
既存のSecretsを上書きしてSealedSecretでマネージする
github.com