🐙

Argo CD の admin パスワードの操作いろいろ

2024/06/21に公開

tl;dr

初期パスワード

プラグイン類を使わない

kubectlだけあれば大丈夫

kubectl get secret/argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d; echo

view-secret プラグインを使う

krew 等で view-secret plugin を入れてあれば使える(やってることは上と同じ)

kubectl view-secret argocd-initial-admin-secret -n argocd ; echo

argocd cli を使う

公式の初期パスワード取得方法。argocd cli を入れる必要がある

argocd admin initial-password -n argocd

パスワード変更

パスワードはログイン後に User Info の UPDATE PASSWORD で変更できる。
(画面から変更するとログアウトさせられて再ログインが必要になる)

パスワードを変更する

argocd account update-password

初期パスワードの入った secret を削除する

kubectl --namespace argocd delete secret/argocd-initial-admin-secret

パスワードを忘れてしまったら

変更したパスワードを忘れるとか言語道断なので深く反省すること。

手順は公式のとおり

方法1:直接書き換え

  • bcrypt でハッシュ化されたパスワードを生成する
export NEW_PASS=`argocd account bcrypt --password 123456789`
  • パスワード 123456789 の結果。bcrypt なので同じ値にはならない
echo $NEW_PASS
$2a$10$/sxME6TKhWMzTbMo5wxh/OJmF2iQZumrB7I9Y5C47lGp1R22xQdXm
  • 更新する(公式のやつ長いから1行に収めたかった。というかコピペしやすくしたかった)
kubectl -n argocd patch secret argocd-secret -p '{"stringData": {"admin.password": "'$(echo $NEW_PASS)'", "admin.passwordMtime": "'$(date +%FT%T%Z)'" }}'

方法2:初期化しなおし

もう1つの、ドキュメントには手順(コード)が書かれていない方の手順

  • secret の値を消す
kubectl patch secret argocd-secret -n argocd -p '{"data": {"admin.password": null, "admin.passwordMtime": null}}'
  • pod を削除する(deploymentで勝手に上がってくるから大丈夫)
kubectl delete pods -n argocd -l app.kubernetes.io/name=argocd-server
  • 初期パスワードが再設定されているので最初に戻ってやり直し

まとめ

  • 管理者パスワードの CRUD は運用する上で避けては通れない(なのでこういうページは公式ドキュメントで整理して欲しいな)
  • 再設定してもとくに問題は起きない(安心して更新していい)
  • 逆に運用を任されたら即パスワード変更を行って、影響範囲の確認を実施することをオススメする(怒られても責任は取れないけど)

Discussion