Contents
Argo CD のバージョン確認と管理者パスワードの保存場所
Argo CD を運用する上で、まずは 現在稼働中のバージョン と admin パスワードがどこに格納されているか を正確に把握しておくことが重要です。バージョンが古いと機能制限や既知の脆弱性が残っている可能性がありますし、パスワード保存先を誤解するとリセット作業が失敗します。本セクションでは、Kubernetes 上で簡単に確認できる手順と、公式ドキュメントへの参照情報をまとめます。
バージョン取得コマンド
|
1 2 3 |
kubectl get deployment argocd-server -n argocd \ -o jsonpath='{.spec.template.spec.containers[0].image}' |
- 出力例:
argoproj/argocd:v2.7.5→ バージョンはv2.7.5(v1.6 以降のすべてのバージョンで CLI が利用可能)。 - 公式参照: https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/#verify-installation
パスワード保存場所
| 項目 | 内容 |
|---|---|
| Namespace | Argo CD をインストールした名前空間(デフォルトは argocd) |
| Secret 名 | argocd-initial-admin-secret |
| フィールド | .data.password に Base64 エンコードされた平文 が格納されています(ハッシュ化されていません)。 |
| 取得例 | kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 --decode |
重要:
argocd-initial-admin-secretのpasswordフィールドはハッシュ化された値ではなく、Base64 でエンコードした平文です。公式ドキュメントでも同様の取り扱いが示されています(https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/#admin-password)。
kubectl を用いたパスワードリセット手順
kubectl のみで完結できるリセット方法は、外部ツールに依存しない点が最大の利点です。ただし Secret 削除によるリセットは「初回ログイン時」だけ有効 であり、既に admin パスワードを変更済みの場合は別手順(CLI やマニフェスト直接編集)が必要になることに注意してください。
1. 現在の初期パスワードを確認する
|
1 2 3 |
kubectl -n argocd get secret argocd-initial-admin-secret \ -o jsonpath='{.data.password}' | base64 --decode |
- このコマンドは ログインできる状態でも 現在保存されている初期パスワード(平文)を取得します。
- パスワードが既に変更されていても、Secret に残っている値は「初期」パスワードである点に留意してください。
2. Secret を削除して再生成させる
|
1 2 |
kubectl delete secret argocd-initial-admin-secret -n argocd |
- 削除後、
argocd-serverPod が自動的に再起動し、新しいargocd-initial-admin-secretを作成します。 - 再起動が確認できない場合は手動でロールアウトしてください。
|
1 2 |
kubectl rollout restart deployment argocd-server -n argocd |
注意: 既に admin パスワードを変更している環境では、上記削除だけでは UI/CLI の認証が失敗します。その場合は「CLI でのパスワード更新」または「Secret の直接パッチ適用」を実施してください(次節参照)。
3. 再生成された初期パスワードを取得する
|
1 2 3 |
kubectl -n argocd get secret argocd-initial-admin-secret \ -o jsonpath='{.data.password}' | base64 --decode |
- 出力された文字列が 新しい初期パスワード です。以降はこのパスワードで UI/CLI にログインできます。
参考(公式): https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/#reset-admin-password
Argo CD CLI でのリセット方法
Argo CD が外部からアクセス可能な環境(Port‑Forward、Ingress 等)がある場合は、argocd コマンドを使って安全にパスワードを変更できます。このコマンドは Argo CD v1.6 以降でのみサポートされており、古いバージョンでは利用できませんので、事前にバージョン互換性を確認してください。
前提条件の確認
|
1 2 |
argocd version |
Client VersionとServer Versionがともに v1.6 以上であることを確認します。- バージョンが古い場合は公式インストール手順(https://argo-cd.readthedocs.io/en/stable/cli_installation/)に従って CLI をアップデートしてください。
1. CLI でのログイン
|
1 2 3 4 5 6 7 |
# Port‑Forward の例(ローカルから UI にアクセスできるようにする) kubectl port-forward svc/argocd-server -n argocd 8080:443 & export ARGOCD_OPTS='--insecure' # self‑signed cert を使用している場合 # 初期パスワードでログイン argocd login localhost:8080 --username admin --password <initial> |
<initial>は前節で取得した 新しい初期パスワード(または現在有効なパスワード)です。
2. パスワードを変更する
|
1 2 3 4 5 |
argocd account update-password \ --account admin \ --current-password <old> \ --new-password <new> |
--current-passwordに現在のパスワード、--new-passwordに設定したい新しいパスワードを入力します。- コマンド実行後、Argo CD は自動的に
argocd-initial-admin-secretを更新し、以降の認証は新しいパスワードが使用されます。
補足: CLI が内部で Secret を更新するため、手作業で Secret を触る必要はありません。公式ガイドでも同様の流れが示されています(https://argo-cd.readthedocs.io/en/stable/operator-manual/user-management/#changing-the-admin-password)。
Helm でインストールした環境における admin パスワード再生成手順
Helm を使って Argo CD をデプロイした場合、values.yaml に admin.passwordOverride が設定されていることがあります。この項目が残っていると Secret の自動再生成が抑制されるため、削除または空文字に上書きする必要があります。
1. 現在の Helm 設定を取得する
|
1 2 |
helm get values <release-name> -n argocd > current-values.yaml |
<release-name>は Argo CD のリリース名(例:argo-cd)です。
2. passwordOverride を無効化する
current-values.yaml をエディタで開き、以下の行を削除または空文字に変更します。
|
1 2 3 |
admin: passwordOverride: "<既存パスワード>" |
- 空文字に上書きしたい場合は
--set admin.password=オプションでも構いません。
3. Helm アップグレードで Secret を再生成させる
|
1 2 3 4 5 |
helm upgrade <release-name> argo/argo-cd \ --reuse-values -n argocd # もしくは明示的に空文字で上書き # helm upgrade <release-name> argo/argo-cd --set admin.password= -n argocd |
- アップグレード完了後、
argocd-initial-admin-secretが新たに作成されます。 - 再生成されたパスワードは前述の kubectl で取得 のコマンドで確認してください。
参考(公式): https://argo-cd.readthedocs.io/en/stable/operator-manual/helm/
リセット後の安全対策とトラブルシューティング
パスワードをリセットしたら、残存する機密情報や権限設定が過剰になっていないか確認し、再発防止策を講じることが必須です。本節では、具体的なチェック項目と代表的なトラブルケースの対処法をまとめます。
1. Secret と RBAC の徹底確認
| 作業 | コマンド例 | 確認ポイント |
|---|---|---|
| 旧 Secret が残っていないか | kubectl get secret -n argocd |
argocd-initial-admin-secret 以外に admin パスワードが含まれる Secret が無いこと |
| RoleBinding の権限見直し | kubectl get rolebinding -n argocd -o yaml |
必要最小限のユーザー・ServiceAccount に絞られているか |
2. 強固なパスワードポリシーと定期ローテーション
- 長さ: 12文字以上
- 構成: 大文字・小文字・数字・記号を必ず含める
- ローテーション: 90日ごとに
argocd account update-passwordを自動化(CI/CD パイプラインで実行)
公式ガイドのベストプラクティスは https://argo-cd.readthedocs.io/en/stable/operator-manual/security/#password-policy に掲載されています。
3. よくあるトラブルと対処法
| 症状 | 主な原因 | 推奨対処 |
|---|---|---|
| 「Invalid credentials」エラーが出る | Secret が削除されず再生成に失敗した | kubectl delete secret argocd-initial-admin-secret -n argocd 後、Pod 再起動を確認 |
| パスワード変更直後にログアウトする | Cookie/CSRF トークンが無効化された | ブラウザのキャッシュ・Cookie を削除し、再度 argocd login |
argocd account update-password がエラーになる |
CLI とサーバーのバージョン不一致(v1.6 未満) | argocd version で確認し、CLI を公式手順で最新に更新 |
4. 監査ログの活用
Argo CD の audit log(argocd-server の --loglevel=info)を有効化しておくと、誰がいつパスワード変更・Secret 削除を行ったか追跡できます。設定例は公式ドキュメント(https://argo-cd.readthedocs.io/en/stable/operator-manual/audit/)をご参照ください。
まとめ
- バージョン確認:
kubectl get deployment argocd-serverで稼働中のバージョンを把握し、v1.6 以上かつ公式ドキュメントに従って管理対象とする。 - パスワード保存場所:
argocd-initial-admin-secretの.data.passwordは Base64 エンコードされた平文である点を認識。 - kubectl リセット: Secret 削除 → Pod 再起動 → 新しい初期パスワード取得。ただし、admin パスワードが既に変更されている場合は別手順(CLI 等)が必要。
- CLI リセット:
argocd account update-passwordは v1.6 以降で利用可能。公式ドキュメントのバージョン要件を必ず確認すること。 - Helm 環境:
admin.passwordOverrideを除去し、Helm upgrade で Secret 再生成をトリガー。 - 安全対策: Secret の完全削除、RBAC 最小化、強固なパスワードポリシーと定期ローテーション、監査ログの有効化を実施。
- トラブルシューティング: 上記表に示した典型的なエラーと対処法を手元に置いておくと、障害復旧が迅速になります。
これらの手順とベストプラクティスを遵守すれば、Argo CD の管理者パスワード忘れによる運用停止リスクを大幅に低減し、セキュアで安定した継続的デプロイ環境を維持できます。