ArgoCD

ArgoCDとGitOps導入ガイド: Kubernetes自動デプロイの手順

ⓘ本ページはプロモーションが含まれています

スポンサードリンク

ArgoCDとGitOps導入の意義

Kubernetes環境における自動デプロイを実現するためには、GitOpsという手法が今後主流となると考えられています。GitOpsは、インフラやアプリケーションの構成をすべてGitリポジトリに保存し、変更をコードとして管理することで、一貫性と再現性を確保します。ArgoCDは、このGitOpsを実現する代表的なツールで、クラスタの状態をGitリポジトリと同期させることで自動デプロイを達成します。本記事では、KubernetesクラスタにArgoCDをインストールし、ローカル環境での初期設定までを具体的に解説します。


インストール方法比較(マニフェスト vs Helm)

ArgoCDのインストール方法は「マニフェスト」と「Helmチャート」の2つの選択肢があります。それぞれの特徴や使用シーンを理解することで、目的に応じて最適な手法を選べます。

マニフェストによるインストール手順

公式のYAMLファイルを使って直接Kubernetesクラスタに適用する方法です。以下が主な手順です。

  1. ArgoCDのリポジトリをクローン
    bash
    git clone https://github.com/argoproj/argo-cd.git

  2. マニフェストファイルを適用
    bash
    kubectl apply -n argocd -f argo-cd/manifests/install.yaml

  3. デプロイステータスの確認
    bash
    kubectl get pods -n argocd

利点: ツールに依存せず、手軽に導入可能。欠点: 大規模な設定が必要な場合、カスタマイズが複雑になる可能性があります。具体的には、複数の環境(開発・ staging・本番)で異なる設定を適用する際、YAMLファイルを個別に編集し直す必要があり、手間とエラーのリスクが高まります。


Helmチャートを使用したインストール

HelmはKubernetesのパッケージマネージャーで、テンプレート化されたリソースを管理できるため、手順を簡略化できます。

  1. HelmリポジトリにArgoCDを追加
    bash
    helm repo add argocd https://argoproj.github.io/argo-helm

  2. チャートのインストール
    bash
    helm install argocd argocd/argo-cd -n argocd

  3. カスタム設定が必要な場合はvalues.yamlを編集して再インストール

項目 補足
Ease of Use シンプル Helmのテンプレートが整っている
Customization 中程度 values.yamlで柔軟にカスタマイズ可能
Maintenance おすすめ バージョン管理やアップグレードがしやすい

利点: 複数クラスタでの一括管理が容易。欠点: Helmの環境構築が必要。


ArgoCDへのアクセス設定(ポートフォワーディング)

インストール後、Web UIにアクセスするにはkubectl port-forwardを使用します。

手順

  1. Port Forwardingを実行
    bash
    kubectl port-forward svc/argocd-server -n argocd 8080:443

  2. ブラウザでアクセス
    http://localhost:8080にアクセスし、ログイン用のトークンを取得します。

注意: 初回起動時はkubectl get pods -n argocdargocd-serverの状態を確認し、Readyな状態になるまで待つ必要があります。


ローカル環境(kind)でのGitOps導入フロー

ローカル環境ではkindクラスタを使用してテストが可能です。

1. kindクラスタの作成

2. ArgoCDのインストール(Helm版例)

3. Gitリポジトリの準備と連携

  1. Gitリポジトリを作成し、以下のディレクトリ構造を整えます。
    /my-repo/
    ├── manifests/
    │ └── deployment.yaml
    └── argocd-app.yaml

  2. ArgoCDアプリケーションを定義 (argocd-app.yaml)
    yaml
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
    name: myapp
    spec:
    source:
    repoURL: https://github.com/your-username/my-repo.git
    path: manifests

  3. ArgoCD UIまたはCLIからアプリケーションを登録
    bash
    argocd app create myapp --source https://github.com/your-username/my-repo.git --path manifests


CRDのインストールとマニフェストファイル構造解説

ArgoCDはKubernetesのカスタムリソース(CR)を用いて、アプリケーションやプロジェクトを管理します。

1. CRDとは?

Custom Resource Definition(CRD)は、Kubernetesに新しいリソースタイプを定義する仕組みです。ArgoCDでは以下のCRが使用されます:

  • Application – アプリケーションのデプロイ設定
  • AppProject – プロジェクトごとのアクセス制御設定(例: 特定のチームが特定のNamespaceにアクセスできるようにする)

2. マニフェストファイルの構成

公式マニフェストは以下のような構造を持ちます。

ポイント: CRDはインストールの最初に適用され、他のリソース(DeploymentやService)が依存します。マニフェストファイルにはCRD定義と、ArgoCDサーバーのデプロイメント・サービスなどが含まれます。

3. アクセス制御設定の例

以下はAppProjectでアクセス権を制限する具体例です。

この設定により、dev-teamリポジトリの変更はdev-namespaceのみに適用され、他のNamespaceへの影響が防げます。


まとめ

ArgoCDのインストール方法とGitOps導入フローについて詳しく解説しました。インストール方法には「マニフェスト」や「Helmチャート」があり、それぞれの特性を理解することで最適な選択ができるようになります。ローカル環境ではkindクラスタがテストに適していますし、CRDの構造を把握することでカスタマイズが容易になります。技術的正確性を保つためには、最新のYAMLファイルパスやHelmリポジトリURLを常に確認する必要があります。


スポンサードリンク

-ArgoCD