💨

Argo CD と Github リポジトリを Github App で連携する

2024/08/11に公開

対象読者
  • Argo CD を利用しており、Github リポジトリと連携している
  • PAT による連携から Github App へ切り替えて少しでも属人的な設定を減らしたい方向け
  • 設定手順をサッと知りたい方向け
前提・用語など
  • Argo CD
    • 外部に保存されている k8s マニフェストを読み取り、任意の k8s クラスタに適用する OSS
    • 定期的に Github リポジトリをチェックし、変更を検出、適用することができる
  • GitHub
    • Git リポジトリのマネージドサービス
  • PAT
    • Personal Access Token
    • ここでは Github の個人ユーザにより作成された Github API Token を指す
課題

Argo CD と Github リポジトリを連携する方法はいくつかある
一番簡単なのは、PATを利用して連携する方法だが、PATはその名からわかるように個人に紐付く情報であるため、属人的な設定となる

対応概要

Github Organization に、Githu App を作成、インストールし、Argo CD と連携する
これにより属人的な要素を排除できる

対応詳細
  1. Github Organization 配下で Github App を作成する
    • 組織のGithubAppページ(https://github.com/organizations/{your-org}/settings/apps)へ移動し、[New Github App]で作成可能
      • Homepage URL は、任意の URL を設定
      • Webhook は利用する必要がないので、Active のチェックを外す
      • Permission の項目で、「Contents」を、「Read」に設定
  2. プライベートキーの生成
    • Github App 作成後、アプリの設定画面に遷移するので、画面下の「Private keys」で秘密鍵を生成する
      • Generate a private key をクリックすると鍵が生成される
      • その名から分かるように、この鍵は関係者にのみ共有し、外部へ流出させてはならない
  3. Github App のインストール
    • 組織のGithubAppページ(https://github.com/organizations/{your-org}/settings/apps)へ移動し、作成した Github App の Edit をクリック
    • 左上の「Install App」リンクをクリックして、インストール先の組織をクリック
    • 組織全体にインストールするか、明示的に選択したリポジトリを対象にインストールするかを問われるので、選択
      • 特にこだわりがないのなら、必要なリポジトリに限定すると良い
    • インストールすると、インストールID(${install-id} が URL 上に表示されるのでこれを控えておく
      - https://github.com/organizations/{your-org}/settings/installations/{install-id}
  4. Argo CD に Github 連携の設定を行う
    • Argo CD の「Settings」>「Repositories」>「Connect Repo」に遷移し以下を設定の上 CONNECT
項目
Choose your connection method VIA GITHUB APP
Type GitHub
Project 利用を許可する任意のプロジェクト
Repository URL Github リポジトリの URL
Github App ID https://github.com/organizations/{your-org}/settings/installations/ > 作成した Github App の Configure > App settings から確認可能
github App Installation ID 手順 3. で確認したIDを入力。忘れたときは、https://github.com/organizations/{your-org}/settings/installations/ > 作成した Github App の Configure へ遷移すると URL からインストールIDがわかる
Github App private key 手順 2. でダウンロードしたプライベートキーの内容を貼り付け

参考とした資料など

Discussion