正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

KubernetesクラスターをGitLabに接続する

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

KubernetesクラスターをGitLabに接続して、クラウドネイティブソリューションをデプロイ、管理、およびMonitorできます。

KubernetesクラスターをGitLabに接続するには、まずエージェントをクラスターにインストールする必要があります。

エージェントはクラスター内で実行され、これを使用して次のことができます:

  • ファイアウォールまたはNATの内側にあるクラスターと通信します。
  • クラスター内のAPIエンドポイントにリアルタイムでアクセスします。
  • クラスター内で発生するイベントに関する情報をプッシュします。
  • 非常に低いレイテンシーで最新の状態に保たれるKubernetesオブジェクトのキャッシュを有効にします。

エージェントの目的とアーキテクチャの詳細については、アーキテクチャドキュメントを参照してください。

GitLabに接続するすべてのクラスターに、個別のエージェントをデプロイする必要があります。エージェントは、強力なマルチテナンシーサポートを念頭に置いてデザインされました。メンテナンスとオペレーションを簡素化するために、クラスターごとに1つのエージェントのみを実行する必要があります。

エージェントは常にGitLabプロジェクトに登録されます。エージェントが登録およびインストールされると、クラスターへのエージェント接続は、他のプロジェクト、グループ、およびユーザーと共有できます。このアプローチは、GitLab自体からエージェントインスタンスを管理および設定できること、および単一のインストールを複数のテナントにスケールできることを意味します。

GitLabの機能でサポートされているKubernetesのバージョン

GitLabは、次のKubernetesバージョンをサポートしています。KubernetesクラスターでGitLabを実行する場合は、異なるバージョンのKubernetesが必要になる場合があります:

サポートされているバージョンにKubernetesバージョンをいつでもアップグレードできます:

  • 1.33(GitLabバージョン19.2のリリース時、または1.36がサポートされるようになったときにサポートが終了)
  • 1.32(GitLabバージョン18.10のリリース時、または1.35がサポートされるようになったときにサポートが終了)
  • 1.31(GitLabバージョン18.7のリリース時、または1.34がサポートされるようになったときにサポートが終了)

GitLabは、新しいマイナーKubernetesバージョンの初期リリース後、3か月以内にサポートすることを目指しています。GitLabは、常に少なくとも3つの本番環境対応のKubernetesマイナーバージョンをサポートしています。

新しいバージョンのKubernetesがリリースされると、以下を行います:

  • 約4週間以内に、初期スモークテストの結果をこのページで更新します。
  • 新しいバージョンサポートのリリースが遅れることが予想される場合は、約8週間以内に、このページで予想されるGitLabサポートバージョンを更新します。

エージェントをインストールするときは、Kubernetesバージョンと互換性のあるHelmバージョンを使用してください。他のバージョンのHelmは機能しない可能性があります。互換性のあるバージョンのリストについては、Helmバージョンのサポートポリシーを参照してください。

非推奨のAPIのサポートのみを行うKubernetesバージョンのサポートを終了すると、非推奨のAPIのサポートをGitLabコードベースから削除できます。

一部のGitLab機能は、ここにリストされていないバージョンでも動作する可能性があります。このエピックでは、Kubernetesバージョンのサポートを追跡します。

Kubernetesのデプロイワークフロー

2つの主要なワークフローから選択できます。GitOpsワークフローを推奨します。

GitOpsワークフロー

GitLabでは、GitOpsにFluxを使用することをお勧めします。開始するには、チュートリアルを参照してください: GitOps用のFluxをセットアップします。

GitLab CI/CDワークフロー

CI/CDワークフローでは、Kubernetes APIを使用してクラスターをクエリおよび更新するようにGitLab CI/CDを設定します。

GitLab CI/CDからクラスターにリクエストをプッシュするため、このワークフローはpush-based(プッシュベース)と見なされます。

このワークフローは次の場合に使用します:

  • パイプライン駆動型のプロセスがある場合。
  • エージェントに移行する必要があるが、GitOpsワークフローがユースケースをサポートしていない場合。

このワークフローは、セキュリティーモデルが脆弱です。本番環境へのデプロイにはCI/CDワークフローを使用しないでください。

エージェントの接続に関する技術的な詳細

エージェントは、通信のためにKASへの双方向チャンネルを開きます。このチャンネルは、エージェントとKAS間のすべての通信に使用されます:

  • 各エージェントは、アクティブストリームとアイドルストリームを含め、最大500の論理gRPCストリームを維持できます。
  • gRPCストリームで使用されるTCP接続の数は、gRPC自体によって決定されます。
  • 各接続の最大ライフタイムは2時間で、1時間の猶予期間があります。
    • KASの前にあるプロキシは、接続の最大ライフタイムに影響を与える可能性があります。GitLab.comでは、これは2時間です。猶予期間は、最大ライフタイムの50%です。

チャンネルルーティングの詳細については、エージェントでのKASリクエストのルーティングを参照してください。

受信エージェント

  • プラン: Ultimate
  • 提供形態: GitLab Self-Managed

受容エージェントを使用すると、GitLabはGitLabインスタンスへのネットワーク接続を確立できないものの、GitLabから接続できるKubernetesクラスターと統合できます。たとえば、これは次の場合に発生する可能性があります:

  1. GitLabがプライベートネットワーク内またはファイアウォールの内側で実行されており、VPN経由でのみアクセスできる。
  2. Kubernetesクラスターがクラウドプロバイダーによってホストされているが、インターネットに公開されているか、プライベートネットワークから到達可能である。

この機能が有効になっている場合、GitLabは提供されたURLを使用してエージェントに接続します。エージェントと受容エージェントを同時に使用できます。

Kubernetesインテグレーション用語集

この用語集では、GitLab Kubernetesインテグレーションに関連する用語の定義を提供します。

用語定義スコープ
Kubernetes向けGitLabエージェント関連する機能と基盤となるコンポーネントagentkおよびkasを含む、全体的な提供物。GitLab、Kubernetes、Flux
agentkKubernetesの管理とデプロイの自動化のためにGitLabへのSecureな接続を維持するクラスター側のコンポーネント。GitLab
Kubernetes向けGitLabエージェントサーバー(kasKubernetesエージェントインテグレーションのオペレーションとロジックを処理するGitLabのGitLab側コンポーネント。GitLabとKubernetesクラスター間の接続と通信を管理します。GitLab
プルベースのデプロイFluxがGitリポジトリの変更をチェックし、これらの変更をクラスターに自動的に適用するデプロイ方法。GitLab、Kubernetes
プッシュベースのデプロイGitLab CI/CDパイプラインからKubernetesクラスターに更新が送信されるデプロイ方法。GitLab
Fluxプルベースのデプロイメントのためにエージェントと統合するオープンソースのGitOpsツール。GitOps、Kubernetes
GitOpsクラウドおよびKubernetesリソースの管理と自動化において、Gitをバージョン管理とコラボレーションに使用することを含む一連のプラクティス。DevOps、Kubernetes
Kubernetesネームスペース複数のユーザーまたは環境間でクラスターリソースを分割するKubernetesクラスター内の論理パーティション。Kubernetes