Argo CDをもうちょっと触りたいので、今回はgithubプライベートレポジトリからArgo CDを用いてkubernetesクラスターにアプリケーションをデプロイしてみようと思います。
前提条件
- すでに Argo CD がKubernetes上にインストール・起動されていること
- Argo CDのWeb GUI(UI)にログインできること
- デプロイしたいアプリケーションのプライベートリポジトリ(GitHubなど)が用意されている
- GitHubでの例を中心に説明しますが、他のGitプラットフォームでも同様です
SSHキーの作成(ローカルPC側)
まずプライベートレポジトリをArgo CDに登録するにはGitHubに登録する「公開鍵(.pub)」と、Argo CDに登録する「秘密鍵」が必要です。
もしすでにSSHキーをお持ちの場合は、このステップはスキップしてください。
- ターミナル(macOS / Linuxなど)またはGit Bash(Windows)を起動
- 以下のコマンドで新規SSHキーを作成します。ファイル名は任意でOKです。
ssh-keygen -t ed25519 -C "<任意のコメント>" -f ~/.ssh/id_ed25519_argocd
-C
はコメント(メールアドレスなど)を設定できるオプションです- ファイル名を
id_ed25519_argocd
とすることで、他の既存鍵と混同しづらくなります - パスフレーズは設定しません
3. 作成後、以下の2ファイルができます:
秘密鍵: ~/.ssh/id_ed25519_argocd
公開鍵: ~/.ssh/id_ed25519_argocd.pub
GitHubへのSSH公開鍵登録
- GitHubにログイン
- 右上のプロフィールアイコン →
Settings
→ 左メニューのSSH and GPG keys
を選択 - 「New SSH key」ボタン をクリック
- Title: 任意の名前(例:
Argo CD key
) - Key 欄に、先ほど作成したファイル
~/.ssh/id_ed25519_argocd.pub
の内容をコピペ - 「Add SSH key」ボタンを押して登録完了
GitHubプライベートリポジトリのSSHクローンURLが git@github.com:<ORG>/<REPO>.git
の形式であることも確認しておきます。
Argo CDのGUIでプライベートレポジトリを登録
次に、Argo CDのUIへログインしてSSH秘密鍵を登録します。
- Argo CDのWeb UIにアクセスし、ログイン
- 上部メニューもしくはサイドバーにある「Settings」から「Repositories」を選択
- バージョンやUIによって表記が異なる場合があります
- 「Connect Repo」ボタン をクリック
- レジストリ追加画面で、以下のように入力・設定します:
- Repository Type: 「Git」
- Repository URL: SSH形式のURLを入力(例:
git@github.com:<ORG>/<REPO>.git
) - SSH Private Key:
- 「SSH」タブや「SSHキーを利用する」等の選択肢があれば選択
- 先ほど作成した 秘密鍵の中身 をコピペ(
~/.ssh/id_ed25519_argocd
の中身)
- 入力が完了したら 「Save」 ボタンをクリックし、登録完了です
- 登録後、リポジトリ一覧画面に表示され、Connection Status などが「Successful」や「Connection successful」となればOK
Argo CDでアプリケーション作成・デプロイ
SSHレポジトリの登録が成功したら、いよいよKubernetesクラスターへのデプロイ設定を行います。
- Argo CD UIのトップページや上部メニューから 「Applications」 を選択
- 「New App」 ボタンをクリック
- General タブ(または基本情報入力画面)で以下を入力:
- Application Name: 任意(例:
my-application
) - Project: 基本的には
default
を利用(カスタムプロジェクトを使っている場合は適宜選択) - Sync Policy: ManualかAutoか選択(自動同期にするとプッシュ後すぐにデプロイが走ります)
- Application Name: 任意(例:
- Source タブで以下を設定:
- Repository URL: 先ほど登録したレポジトリを選択
- Revision: デプロイしたいブランチ名(例:
main
) - Path: リポジトリ内のKubernetesマニフェストがあるディレクトリパス(例:
manifests/
)
- Destination タブで以下を設定:
- Cluster: デプロイ先のKubernetesクラスター
- 通常は
https://kubernetes.default.svc
(同一クラスタ) か、別途登録済みの外部クラスタを選択
- 通常は
- Namespace: デプロイ先のNamespace(例:
default
やargo-rollouts
)
- Cluster: デプロイ先のKubernetesクラスター
- 入力が完了したら 「Create」 ボタンをクリック
- アプリケーション一覧に戻ると、新しく作成したアプリケーションが表示されます
- 「Sync」や「Auto-Sync」が有効の場合は、数秒~数分でDeploymentやServiceなどのリソースが作成されます
- 画面上にデプロイ状況やSyncステータスが表示され、問題なく動作していれば完了です
- Manualの場合はアプリケーションをクリックしてSyncボタンを教えてください
まとめ
- SSHキーを作成(ローカルPCで公開鍵と秘密鍵を生成)
- GitHubに公開鍵を登録
- Argo CDのGUIで秘密鍵を登録
- Argo CD UIでアプリケーションを作成 → デプロイ先クラスターに自動または手動でデプロイ
上記の流れで設定を行えば、プライベートなGitHubリポジトリをArgo CDで監視・デプロイできるようになります。
パイプラインを自動化する場合は Sync Policy の Automated
を利用し、GitOpsスタイルの運用をスムーズにしてみてください。