ArgoCD

GitOps入門:ArgoCDによるKubernetes環境構築の基本概念

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

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

GitOps入門:ArgoCDによるKubernetes環境構築の基本概念

Kubernetes運用において「コードでインフラを管理する」GitOpsの概念は、近年注目を集めています。特にArgoCDは、GitHubなどのリポジトリと連携して自動デプロイを行うことで、DevOpsエンジニアの負担軽減に貢献します。本記事では、GitOpsArgoCDの基礎知識から、実際の環境構築手順までをステップバイステップで解説します。

GitOpsとは?

GitOpsは、「Gitリポジトリが唯一の真実」として、インフラやアプリケーションの運用をすべてGitで管理する手法です。具体的には以下のような流れになります:

  • 開発者がコード変更をGitHubにプッシュ
  • CI/CDツール(例: GitHub Actions)がリポジトリの変化を検知
  • ArgoCDが変更内容をKubernetesクラスターと同期

この仕組みにより、手動操作やミスによるエラーを防ぎながら、一貫した環境管理が可能になります。

ArgoCDの役割と特徴

ArgoCDはGitOps実現のためのCD(継続的配布)ツールです。主な機能・メリットは以下の通りです:

  • 自動同期機能:リポジトリの変更をリアルタイムでクラスターに反映
  • 視覚的なUI:デプロイ状況やバージョン管理を確認できるダッシュボード提供
  • 多様なソースサポート:GitHub、GitLab、OCIなど幅広いリポジトリとの連携対応

Kubernetes初心者でも直感的に使える設計となっており、企業での導入実績も増えています。


ArgoCDのインストール手順(Helm/Manifests比較)

ArgoCDをクラスターに導入するには「Helm」または「YAMLマニフェスト」の2つの方法があります。それぞれの特徴と手順を確認しましょう。

Helmによるインストール

HelmはKubernetesのリソース管理を容易にするパッケージ管理ツールです。導入が簡単で、バージョン管理も楽なためおすすめです。

  1. Helmクライアントのインストール
  2. macOS: brew install helm
  3. Linux: 公式サイトからダウンロード

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

  5. チャートのインストール
    bash
    helm install argocd argocd/argo-cd \
    --namespace argocd \
    --create-namespace

  6. UIへのアクセス設定

  7. インストール後、kubectl get svc -n argocdでサービス名を取得し、LoadBalancerやIngress経由でアクセス可能に

メリット: バージョン管理が簡単、リソース一覧の見やすさ
デメリット: Helmが導入済みである必要がある


純粋なYAMLマニフェストでの導入

YAMLファイルで手動でリソースを定義する方法です。初学者向けに「仕組み」を理解したい場合におすすめします。

  1. 公式マニフェストの取得
    GitHubからinstall.yamlをダウンロードし、クラスターに適用します:
    bash
    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.13.0/manifests/install.yaml

  2. サービスの公開設定

  3. kubectl get svc -n argocdで外部アクセス用サービス(例: argocd-server)を確認
  4. IngressやLoadBalancerによりインターネットからアクセス可能に
項目 Helm導入 YAML導入
手軽さ ✅ おすすめ ⚠️ 手間かかる
バージョン管理 ✅ 易しい ❌ 困難
学習効果 ⚠️ 不要 ✅ 高い

GitOpsワークフローの仕組みと自動化原理

ArgoCDは、GitHub ActionsなどのCI/CDツールと連携することで、コード変更からデプロイまでの全工程を自動化します。

コード変更→リポジトリ更新

開発者は、アプリケーションやKubernetesマニフェストのコードをGitHubにプッシュします。この時、Branch Policy(例: mainブランチ限定)を設定することで、不適切な変更がクラスターに反映されないようにできます。

ArgoCDによる自動同期メカニズム

ArgoCDは以下のような仕組みで自動同期を行います:

  1. リポジトリと同期:GitHubのmainブランチを監視
  2. 差分検出:クラスター内の現状とリポジトリの変更を比較
  3. アプリケーション更新:必要に応じて自動でKubernetesリソースを更新

この流れにより、手動でのデプロイ作業が不要になります。

注意: GitHub Actionsでは「プルリクエストがマージされた時」にのみArgoCDを起動させるように設定することが重要です。これにより不完全なコードがクラスターへ反映されるのを防ぎます。


Applicationリソースの定義方法とベストプラクティス

ArgoCDは、Applicationというカスタムリソース(CRD)を使って、GitHubリポジトリとKubernetesクラスターの同期を管理します。

argocd-application.yamlの基本構造

以下がシンプルな例です:

  • repoURL: GitHubリポジトリのURL
  • path: マニフェストファイルが配置されているディレクトリ
  • targetRevision: クラスターに同期するブランチ(例: main

Gitリポジトリとのバインド設定

以下の3点を正しく設定することで、ArgoCDは自動で同期動作を行います:

  1. マニフェストファイルの配置場所
  2. 通常はk8s/manifestsなど専用ディレクトリにまとめたほうが見やすくなります

  3. バージョン管理方法(ブランチ指定)

  4. targetRevision: mainで最新のmainブランチを同期対象とします

  5. Kubernetesクラスターへのアクセス権限

  6. ServiceAccountやRBAC設定でArgoCDがリソースを操作できるようにする必要があります

Applicationリソースの作成手順

Applicationリソースを作成するには、以下のいずれかの方法があります:

  1. kubectl apply コマンド
    bash
    kubectl apply -f argocd-application.yaml

  2. ArgoCD UI操作

  3. ArgoCDダッシュボードにログイン後、「Applications」タブから「New Application」を作成
  4. SourceDestinationの設定を入力して保存

  5. argocd app createコマンド
    bash
    argocd app create sample-app \
    --repo https://github.com/yourname/app-repo.git \
    --path k8s/manifests \
    --dest-server https://kubernetes.default.svc \
    --dest-namespace default


GitHub Actions連携によるCI/CD自動化設定

GitHub Actionsとの連携により、プルリクエスト時に自動でデプロイ作業が実行されます。

シークレットの設定手順

ArgoCDへのアクセスにはAPIトークンが必要です。以下のようにシークレットを登録します:

  1. GitHubリポジトリのSettings → Secrets and variablesから追加
  2. ARGOCD_TOKENという名前で、以下のコマンドで取得したトークンを設定(※クラスタアクセス権が必要):
    bash
    kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

注意: 上記コマンドの実行には、ArgoCDが配置されたKubernetesクラスターへのアクセス権が必要です。


ワークフロー YAML の作成例

以下のYAMLファイルで、プルリクエストがマージされた時にArgoCDを実行させます:

重要: 上記のsample-appは、先ほど作成したApplicationリソースの名前と一致させる必要があります。また、argocd app syncコマンドは非推奨であり、ArgoCDの自動同期機能に依存する形で設定することを推奨します。


初期デプロイからトラブルシューティングまで

ArgoCDを導入後は、初期設定の確認や代表的なエラーへの対処が重要です。

同期状態の確認方法

以下のコマンドで、リポジトリとクラスターの同期状況を確認できます:

出力例:

  • Synced: 正常に同期されている
  • OutOfSync: リポジトリとクラスターの差分がある

代表的なエラーケースと解決策

エラー内容 原因・対処法
Application is not in sync リポジトリに変更がない、または同期が失敗している。kubectl logs -n argocd argocd-application-controller-xxxxxで詳細を確認
Resource does not exist Kubernetesクラスターにリソースが存在しない。マニフェストファイルのエラーか、クラスターへのアクセス権限がない可能性あり
Invalid configuration for Application .spec.source.path.spec.destination.namespaceなどのパラメータが不正

まとめ

本記事では、ArgoCDによるGitOps環境構築の基本フローと実践手順を解説しました。要点を以下にまとめます:

  • GitOpsは「コードでインフラ管理」を行う手法
  • ArgoCDはGitHub Actionsとの連携により、自動同期が可能
  • Applicationリソース定義やワークフローセットアップが導入のカギ
  • トラブルシューティングの基本を押さえておくことで、運用が安定

読者の中には「実際のクラスターで試してみたい」という声もあるでしょう。ぜひ自身の環境でArgoCDを導入し、GitOpsの仕組みを体感してください。コメント欄で実装結果や疑問点を共有いただければ幸いです。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-ArgoCD