
GitOpsとは?
GitOpsは、Gitリポジトリを「唯一の信頼できる情報源(Single Source of Truth)」として、インフラやアプリケーションの状態を管理・運用する手法です。
GitOpsの主なメリット
- 変更履歴の追跡: Gitの履歴により、誰がいつ何を変更したかを明確に把握できます。
- 自動化: Gitへの変更をトリガーとして、CI/CDパイプラインを自動的に実行できます。
- 一貫性のあるデプロイ: 宣言的な構成により、環境間での一貫性を保ったデプロイが可能です。
🚀 Argo CDとは?
Argo CDは、Kubernetes向けの宣言的なGitOps継続的デリバリーツールです。Spacelift+2Argo Project+2Red Hat+2
Argo CDの主な機能
- Gitリポジトリとの同期: 指定したGitリポジトリの状態とKubernetesクラスターの状態を比較し、差分があれば自動または手動で同期します。
- 多様な構成管理ツールのサポート: Helm、Kustomize、Jsonnet、YAMLなど、さまざまな形式のマニフェストをサポートします。
- Web UIとCLIの提供: 直感的なWebインターフェースと強力なコマンドラインツールを提供し、アプリケーションの管理を容易にします。
- マルチクラスター対応: 複数のKubernetesクラスターを一元管理できます。Spacelift+1Argo CD+1
📝 前提条件
- Kubernetesクラスターの構築: オンプレミス環境にKubernetesクラスターが構築されていること。
- Argo CDのインストール: Argo CDがKubernetesクラスターにインストールされ、
https://argo.cosicosilife.com/applications
でアクセス可能であること。 - GitHubリポジトリの準備:
https://github.com/david-daisuke/my-sample-app
にHelmチャートが配置されており、管理者権限を持っていること。 - ドメインの設定:
sample.cosicosilife.com
がKubernetesのServiceに正しくルーティングされていること。
🔐 GitHub Personal Access Token (PAT) の作成と設定
Argo CDがGitHubリポジトリにアクセスするためには、PATを使用する必要があります。
PATの作成:
🧠 補足:Argo CDの基本概念
- GitOps: Gitリポジトリを「唯一の信頼できる情報源」とし、Kubernetesの状態を管理する手法です。
- Argo CD: GitリポジトリとKubernetesクラスターの状態を比較し、差分がある場合に自動で同期を行うツールです。
- Helm: Kubernetesのパッケージマネージャーで、複雑なアプリケーションのデプロイを簡素化します。
🔍 GitHubリポジトリの構成確認
helm/my-sample-app
ディレクトリ内に以下のファイルが存在することを確認してください:
Chart.yaml
values.yaml
templates/deployment.yaml
templates/service.yaml
これらのファイルが正しく設定されていない場合、Argo CDによるデプロイが正常に行われない可能性があります。
今回は私のレポジトリにあるコードで試します
- GitHubにログインし、PATの作成ページにアクセスします。
- 「Generate new token」をクリックし、以下の設定を行います:
- Note: 任意の説明(例:
ArgoCD Access Token
) - Expiration: 適切な有効期限(例:90日)
- Scopes:
repo
(プライベートリポジトリへのアクセスが必要な場合)
- Note: 任意の説明(例:
- 「Generate token」をクリックし、表示されたトークンをコピーします。

「Connect Repo using HTTPS」をクリックし、以下の情報を入力します:
- Repository URL:
https://github.com/david-daisuke/my-sample-app.git
- Username: GitHubのユーザー名(例:
david-daisuke
) - Password: 先ほど作成したPAT
🛠️ Argo CDでのアプリケーション作成
- アプリケーションの作成:
- Argo CDのWeb UIで「Applications」→「NEW APP」をクリックします。
- 以下の情報を入力します:
- Application Name:
my-sample-app
- Project:
default
- Sync Policy:
Automatic
(自動同期) - Repository URL:
https://github.com/david-daisuke/my-sample-app.git
- Revision:
HEAD
- Namespace:
default
(または適切な名前空間) - 「Create」をクリックしてアプリケーションを作成します。
- Application Name:

同期が開始されます

- 同期の確認:
- 作成したアプリケーションが一覧に表示されます。
- アプリケーションをクリックし、詳細画面で「Sync」をクリックして同期を開始します。
- 同期が完了すると、ステータスが「Synced」「Healthy」と表示されます。

大体ここまでできれば、helm のめんどくさいコマンド打鍵しないで済みそうですね。