Kubernetes

GitLab Kubernetes Agent のインストールと安全な CI/CD パイプライン構築

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

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


スポンサードリンク

GitLab Kubernetes Agent の概要とインストール手順

GitLab 16 系列で標準化された Kubernetes Agent は、GitLab とクラスター間の双方向 TLS 通信を実現し、CI/CD を安全かつスケーラブルに動作させます。本セクションでは、公式ドキュメント(2026 年版)に沿ったインストールフローと、バージョン管理のベストプラクティスを示します。

エージェント登録情報の取得

GitLab UI からエージェントを作成し、トークンと config.yaml を入手します。

  • 操作手順
  • プロジェクト → Settings → Infrastructure → Kubernetes clustersAdd Kubernetes clusterConnect a cluster with the Agent
  • 「Agent name」を入力し Create agent をクリックすると、config.yaml と Static Token が生成されます。

マニフェスト取得と適用(動的バージョン参照)

固定バージョン v1.13.0 は古くなる恐れがあるため、最新リリースを自動で取得できる URL を推奨します。

※ バージョン確認
curl -s https://gitlab.com/api/v4/projects/gitlab-org%2Fkubernetes-agent/releases | jq '.[0].tag_name' で最新タグを取得し、スクリプトに組み込むことも可能です。

名前空間とトークンの差し替え

以下の点に注意して agent.yaml を編集します。

  • 名前空間gitlab-agent(以降すべて同一)
  • トークン置換AGENT_TOKEN_PLACEHOLDER → 取得した Static Token

クラスターへデプロイ

適用後、GitLab の Kubernetes clusters ページに Connected が表示されれば完了です。


ServiceAccount と RBAC の最小権限設定

エージェントが必要とする API のみを許可し、過剰権限によるリスクを排除します。以下では gitlab-agent 名前空間に限定した構成例を示します。

ServiceAccount と ClusterRole/Binding(概要)

ServiceAccount を作成し、最低限の ClusterRole をバインドします。

Namespace‑Scoped Role の追加例

本番環境で機密リソースへのアクセスをさらに絞り込みます。

この Role を同様に RoleBindinggitlab-agent-sa に付与すれば、クラスター全体ではなく対象 Namespace のみが操作可能になります。


GitLab CI/CD パイプライン(.gitlab-ci.yml

CI/CD では ビルド → テスト → デプロイ の三段階を一貫して定義し、GitLab の変数と Kubernetes Secret を安全に連携させます。

ビルド・テストステージ(概要)

コンテナイメージの作成とユニットテストを自動化します。

Helm デプロイステージ(概要)

helm upgrade --install により新規インストールとローリングアップデートを統一します。

機密情報の安全な参照方法(概要)

GitLab の CI/CD 変数 と Kubernetes Secret を組み合わせ、平文がコードに残らないようにします。

  1. GitLab → Settings → CI/CD → VariablesSECRET_KEY(Protected, Masked)を登録。
  2. デプロイジョブで --set env.SECRET_KEY=${SECRET_KEY} と展開。
  3. Helm Chart 側の templates/secret.yaml では以下のように参照します。


Helm Chart によるパラメータ化と環境別デプロイ

Helm を IaC として活用し、values.yaml で共通設定を管理、環境ごとの差分は上書きファイルで提供します。

Chart ディレクトリ構成(概要)

再利用性と可読性を高める標準的な配置例です。

values.yaml の抜粋:

CI から Helm コマンドを呼び出す例(概要)

環境ごとに values-*.yaml を組み合わせ、GitLab の変数で上書きすれば、同一パイプラインで安全なマルチステージデプロイが実現します。


GitOps フロー:マージリクエストで自動デプロイ

MR が作成・更新されたときにプレビュー環境を自動生成し、本番への変更はコードレビューと同時にインフラへ反映させます。

MR トリガー設定(概要)

.gitlab-ci.ymlonly: [merge_requests] を記述すると、MR 発行ごとにデプロイジョブが走ります。

この設定により、preview-<MR_IID> 名前空間が自動作成され、プレビュー環境が即座に利用可能になります。

ブランチ戦略と名前空間マッピング(概要)

ブランチ デプロイ対象 Namespace CI 条件
main production only: [master]
develop staging only: [develop]
MR preview-<MR_IID> only: [merge_requests]

この 1‑to‑1 の対応により、変更がどの環境へ反映されたかを容易に追跡できます。


最新セキュリティベストプラクティスとトラブルシューティング

Kubernetes 標準の Pod Security Standards (PSS)NetworkPolicy を用いて、最小権限・ネットワーク分離をコードとして管理します。

Pod Security Standards の適用例(概要)

PodSecurityPolicy は Kubernetes 1.25 以降非推奨です。代わりに Admission コントローラで PSS を有効化し、Namespace にラベル付与する方法を示します。

このラベルにより、特権コンテナやホストネットワークの使用が自動的にブロックされます。

NetworkPolicy の実装例(概要)

内部ネットワークは 10.0.0.0/16 と仮定し、Agent 以外からの通信を遮断します。

ログ・ジョブの確認手順(概要)

  1. Agent Pod の取得
    bash
    kubectl get pods -n gitlab-agent -l app=gitlab-agent
  2. リアルタイムログ表示
    bash
    kubectl logs -f <agent-pod> -n gitlab-agent
  3. GitLab ジョブの Trace を確認
    GitLab の CI/CD > Jobs で失敗ジョブを開き、Trace タブに出力されたエラーメッセージを参照します。

典型的なエラー例
- failed to get Kubernetes version → ServiceAccount の RBAC が不足している可能性。
- TLS handshake timeout → TLS 証明書の期限切れ、または Secret マウントミス。


まとめ

項目 主なポイント
Agent インストール 最新リリース URL を使用し、gitlab-agent 名前空間にデプロイ。
認証方式 Static Token が手軽、必要に応じて自前 TLS に切替可能。
RBAC 設計 ServiceAccount + 最小権限 ClusterRole、Namespace‑Scoped Role でリスク最小化。
CI/CD パイプライン ビルド・テスト・Helm デプロイを統合し、GitLab 変数と Kubernetes Secret を安全に連携。
Helm Chart 管理 values.yaml と環境別上書きファイルでパラメータ化、CI から動的に注入。
GitOps フロー MR トリガーでプレビュー Namespace を自動生成し、ブランチ⇔Namespace の 1 対 1 マッピングを実現。
セキュリティ PSS ラベル付与と NetworkPolicy による最小権限・ネットワーク分離。
トラブルシューティング Agent Pod ログ + GitLab Job Trace の併用で迅速に原因特定。

以上の手順を踏むことで、GitLab 16 系列と最新 Kubernetes クラスター間の安全な連携が実現し、DevOps チームは高い信頼性とスピードで CI/CD を運用できるようになります。

スポンサードリンク

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

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

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

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

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

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

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

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

Beyond Careerに無料相談する

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


-Kubernetes