【入門編】GitLab「Kubernetes Agent」による次世代デプロイ:GitOpsをGitLabだけで完結させる構築ガイド – バージョン管理・CI/CD活用バイブル

こんにちは。現場の最前線で「いかに楽をして、いかに堅牢なシステムを作るか」に命をかけているエンジニアです。

これまで、CI/CDといえば「GitLabからKubernetesへ、SSHやkubectlで無理やり叩き込む」というスタイルが主流でした。しかし、これには「踏み台サーバーのセキュリティリスク」や「クラスターの認証情報がGitLab側に漏れる恐怖」という常に付きまとう呪縛がありました。

今日紹介する「GitLab Agent for Kubernetes (KAS)」は、その悪夢を終わらせるゲームチェンジャーです。GitLabとクラスターを「Pull型」で直接つなぐこの技術、一度導入すればもう昔のデプロイ方法には戻れません。

さあ、次世代のGitOpsの世界へ足を踏み入れましょう。

—

1. なぜ「Agent」なのか? Pull型デプロイの極意

従来のPush型デプロイ(CIがkubectlを実行する方式)には致命的な弱点があります。それは、「GitLab側にクラスターの管理者権限が必要」ということです。

一方で、GitLab Agentを使う「Pull型デプロイ」は、クラスターの内側から「GitLabに何が変わったか見に行く」方式です。

  • 強固なセキュリティ: クラスターの認証情報をGitLab側に預ける必要がありません。
  • 通信の最適化: 外から内への穴あけ(Firewall設定)が不要です。
  • GitOpsの完成: Gitリポジトリの状態が、そのままクラスターの真実(Single Source of Truth)になります。

—

2. さあ、構築しよう:Agentのインストール

まずは、GitLab側でAgentを認識させ、クラスターにインストールします。

ステップ①:GitLab側でAgentを登録

1. GitLabプロジェクトのサイドバーから [Infrastructure] > [Kubernetes clusters] を選択。
2. [Connect a cluster] をクリックし、適当な名前(例: `prod-agent`)でAgentを作成します。
3. 表示される「登録用トークン」をコピーしてください。これが唯一の秘密鍵です。

ステップ②:クラスター側へインストール

クラスターにHelmを使ってAgentをインストールします。

GitLab AgentのHelmリポジトリを追加
helm repo add gitlab https://charts.gitlab.io
helm repo update

インストール(とは先ほど取得したもの)
helm install gitlab-agent gitlab/gitlab-agent \
–namespace gitlab-agent-system \
–create-namespace \
–set config.token= \
–set config.kasAddress=wss://kas.gitlab.com # GitLab.comの場合のURL

これで、クラスターはGitLabという「司令塔」と安全なパイプラインで繋がりました。

—

3. Hello World:GitOpsでマニフェストを同期する

Agentが動いたら、次は「GitにあるYAMLを、自動的にクラスターに反映させる」設定を行います。リポジトリのルートに `.gitlab/agents//config.yaml` を作成します。

.gitlab/agents/prod-agent/config.yaml
gitops:
manifest_projects:

  • id: path/to/your-manifest-repo # マニフェスト管理用リポジトリのパス

paths:

  • glob: ‘manifests/.yaml’ # このディレクトリ内のYAMLを監視

これだけで、`manifests/` ディレクトリにマニフェストをPushすると、数秒後にはクラスターが自動的に追従して変更を適用します。kubectlコマンドを叩く必要すらありません。

—

4. 現場で震えるほど役立つ「運用の極意」

初めて導入するあなたが、必ずぶつかる壁を先に壊しておきましょう。

  • マニフェストとアプリの分離: アプリコードのリポジトリと、マニフェストのリポジトリは分けるのが鉄則です。CIはビルドだけを行い、マニフェストリポジトリのイメージタグを書き換える。これがクリーンなGitOpsの作法です。
  • カオスを防ぐ「マージリクエスト」: 本番環境への反映は、必ずGit上のMRで行ってください。「誰が、いつ、何を」変えたのかがGitの履歴として残るため、障害時の切り戻し(Revert)が驚くほど簡単になります。
  • デバッグは「Agentログ」から: もし同期が動かないときは `kubectl logs -n gitlab-agent-system -l app=gitlab-agent` を見てください。Agent自身がGitLabと通信できているか、YAMLのパースでエラーが出ていないかがすべてそこに書かれています。

—

最後に:あなたを待っている未来

これを導入すると、デプロイ業務が「作業」から「承認」へと変わります。
「デプロイのために深夜まで待機」なんて、もう過去の遺物です。GitLab Agentは、あなたのクラスターを、常にGitの状態と同期し続ける「自律的な生き物」に変えてくれます。

まずは小さなPod一つから、このPull型デプロイを試してみてください。その瞬間、インフラとアプリケーションの境界線が消え去る感動を味わえるはずです。

何か詰まったら、いつでも聞いてください。あなたのDevOpsジャーニーを全力で応援しています。それでは、快適なGitOpsライフを!

タイトルとURLをコピーしました