argocdでSSOしたいときにclientSecretをSealedSecretで保持したい
忘れないうちに概要だけでもメモする。
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