Kubernetes

GitOpsでKubernetesを効率的に管理する方法

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

GitOpsとArgoCDによるKubernetes管理の概要

GitOpsはコードでインフラ構成を定義し、Gitリポジトリを通じて継続的デリバリー(CD)を実現する手法です。これにより、Kubernetes環境の運用効率が大きく向上します。ArgoCDはその代表的なツールであり、KubernetesクラスターとGitリポジトリを連携させることで自動化された運用が可能になります
本記事では、DevOpsエンジニア向けにArgoCDによるGitOps導入の具体的な手順を解説します。テスト環境での検証やセキュリティ対策といった実践的なポイントを網羅し、読者が即座に導入できる知識をお届けします。


Kubernetesクラスター構築の前提条件

Kubernetesクラスターの構築には特定の環境設定とツール準備が必要です。特にクラスターバージョンが1.20以上であること、およびkubeconfigファイルの準備が不可欠です。以下のセクションで詳細を確認してください。

クラスターバージョンの確認

Kubernetes 1.20以降ではGitOpsによる自動デプロイ機能が充実しています。クラスターのバージョンを確認するには以下を実行します。

  1. kubectl versionでクラスターのバージョンをチェック
  2. 1.20未満の場合は、公式ドキュメントに従ってアップグレードを行う

重要: Kubernetes 1.20未満ではArgoCDの一部機能(ロールバック自動化など)が動作しない可能性があります。


kubeconfigファイルの準備

ArgoCDがクラスターに接続するためには、kubeconfigファイルが必要です。以下のように設定します。

  • ファイルを~/.kube/configに配置
  • kubectl config viewで接続先クラスターが正しく反映されているか確認
環境 必要条件
Kubernetesクラスター v1.20以上
kubeconfigファイル クラスターアクセス権限を有する

ArgoCDのインストール手順

ArgoCDはHelmまたはkubectlでインストール可能です。両方の方法に最新バージョン(v2.6以上)を使用し、RBACの有効化が必須です。

Helm経由でのインストール

以下のようにHelmコマンドで簡単な導入が可能です。

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

  2. リリースを作成(RBAC有効化):
    bash
    helm install argocd argocd/argo-cd --namespace argocd --create-namespace

注意: RBACを有効にしないと、ArgoCDのロールベースアクセス制御が機能せず、セキュリティリスクが高まります。


kubectlによる手動インストール

kubectl applyコマンドでも導入可能です。以下は主要な手順です。

  1. ArgoCDリソース定義ファイルをダウンロード:
    bash
    curl -o argocd.yaml https://raw.githubusercontent.com/argoproj/argo-cd/v2.6.0/manifests/install.yaml

  2. インストール実行:
    bash
    kubectl apply -n argocd -f argocd.yaml

手法 特徴
Helm リリース管理が容易、バージョン管理がしやすい
kubectl コマンドラインでの直接操作、手動設定が必要

Gitリポジトリにマニフェストファイルを配置する方法

ArgoCDはGitリポジトリの変更を監視して自動デプロイを行います。アプリケーション定義ファイルとArgoCD設定ファイルを適切な位置に配置することが重要です。

リポジトリ構造の設計

以下のようなディレクトリ構造が推奨されます。

: my-app.yamlにはクラスター名やGitリポジトリのURLを指定します。


.gitignoreの最適化

不要なファイルをコミットせず、セキュリティリスクを抑えるためには.gitignoreの設定が重要です。

  • 以下のように秘密管理用ファイルを除外:
    *.env
    *.kubeconfig
    /secrets/
ファイルタイプ 推奨処理
環境変数 .env形式で.gitignoreに記載
秘密情報 外部シークレット管理ツール(Vaultなど)を使用

GitOpsワークフローの自動化設定

ArgoCDはGitリポジトリの変更を自動検出・適用します。CI/CDパイプラインと連携することで、よりスムーズなデプロイが実現できます。

ArgoCDとの連携

以下のようにGitリポジトリとクラスターを関連付けます。

  1. ArgoCDアプリケーション設定ファイルを作成(例: applications/my-app.yaml):
    yaml
    apiVersion: argoproj.io/v1alpha1
    kind: Application
    metadata:
    name: my-app
    spec:
    source:
    repoURL: https://github.com/your-repo.git
    path: manifests/
    destination:
    server: https://<k8s-cluster-url>
    namespace: default
    syncPolicy:
    automated:
    prune: true
    selfHeal: true

  2. ArgoCDのUIまたはCLIでアプリケーションを登録


プッシュイベントによる自動デプロイ

GitHub ActionsやGitLab CIなどと連携させることで、プッシュイベントが発生したときに自動的にデプロイできます。

GitHub Actionsの設定例(main.yml):


テスト環境でのデプロイ検証手順

ステージング環境でデプロイをテストすることで、本番へのリスクを最小限に抑えられます。

ロールアウト確認

ArgoCDのUIまたはkubectlでステータスを確認します。

  1. kubectl get pods -n defaultでPodの状態をチェック
  2. ロールアウトステータスは以下のように表示されます:
    NAME READY STATUS RESTARTS AGE
    my-app-7df8596d7f-lxg4p 1/1 Running 0 3m

ロールバックシナリオ

デプロイ失敗時に自動ロールバックを実行するには、ArgoCDの設定でselfHeal: trueを指定します。

手順 内容
ステージング環境 本番への影響がない環境で検証
ロールバック自動化 selfHealオプションにより、異常時に自動修正

セキュリティ対策とベストプラクティス

GitOps導入では、セキュリティ設定を無視すると深刻なリスクにつながります。以下に実践すべき対策をまとめます。

認証・認可設定

ArgoCDのアクセス制御にはRBACを活用し、最小限の権限で運用します。

  • ユーザーごとのロール分け(例: admin, developer
  • OAuthやLDAP連携による外部認証
手順 内容
1. RBAC設定ファイル作成 管理者、開発者、観測者の役割を定義する RoleClusterRole を定義
2. ServiceAccountの作成 各ロールに紐づいた ServiceAccount を生成(例: argo-admin
3. RBACポリシー適用 kubectl apply -f rbac.yaml で権限をクラスターに反映

リポジトリアクセス制限

Gitリポジトリへのアクセスを限定することで、不正な変更を防ぎます。

対策 説明
HTTPS通信の強制化 TLS有効化で情報漏洩リスクを減らす
秘密管理 kubectl create secret genericなど外部ツールを使用

重要: ArgoCDに直接リポジトリパスワードを保存せず、シークレット管理ツール(HashiCorp Vaultなど)を使うことが推奨されます。


まとめと今後の展望

ArgoCDによるGitOps導入は、Kubernetes運用の自動化と効率化において極めて有効な手法です。本記事では、クラスター構築、インストール手順、リポジトリ構造設計、セキュリティ対策など、実践的なポイントを網羅しました。今後はCI/CDとの連携や、更なる自動化(例: ロールバックの自動検知)に焦点を当てることで、DevOpsプロセスの最適化が期待されます。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Kubernetes