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

GitLab管理クラスター(非推奨)

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

この機能は、GitLab 14.5で非推奨になりました。クラスターをGitLabに接続するには、Kubernetes向けGitLabエージェントを使用します。アプリケーションを管理するには、Cluster Project Management Templateを使用します。

GitLab Self-Managedでは、デフォルトでこの機能は使用できません。管理者がcertificate_based_clustersという名前の機能フラグを有効にすると、この機能を使用できるようになります。

GitLabがクラスターを管理できるように選択できます。クラスターがGitLabによって管理されている場合、プロジェクトのリソースは自動的に作成されます。作成されたリソースの詳細については、アクセス制御セクションを参照してください。

独自のクラスターを管理する場合、プロジェクト固有のリソースは自動的に作成されません。Auto DevOpsを使用している場合は、使用するデプロイジョブのKUBE_NAMESPACEデプロイ変数を明示的に指定する必要があります。そうでない場合は、ネームスペースが作成されます。

ネームスペースやサービスアカウントなど、GitLabによって作成されたリソースを手動で管理すると、予期しないエラーが発生する可能性があることに注意してください。これが発生した場合は、クラスターのキャッシュを削除してみてください。

クラスターのキャッシュをクリアする

GitLabにクラスターの管理を許可すると、GitLabは、プロジェクト用に作成するネームスペースとサービスアカウントのキャッシュされたバージョンを保存します。これらのリソースをクラスターで手動で変更すると、このキャッシュがクラスターと同期しなくなる可能性があります。これにより、デプロイジョブが失敗する可能性があります。

キャッシュをクリアするには:

  1. プロジェクトの操作 > Kubernetesクラスターページに移動し、クラスターを選択します。
  2. Advanced settingsセクションを展開します。
  3. クラスターのキャッシュを削除を選択します。

ベースドメイン

ベースドメインを指定すると、KUBE_INGRESS_BASE_DOMAINデプロイ変数として自動的に設定されます。Auto DevOpsを使用している場合、このドメインはさまざまなステージに使用されます。たとえば、Autoレビューアプリと自動デプロイがあります。

ドメインには、Ingress IPアドレスに設定されたワイルドカードDNSが必要です。次のいずれかの方法があります:

  • ドメインプロバイダーを使用して、Ingress IPアドレスを指すAレコードを作成します。
  • nip.ioxip.ioなどのサービスを使用して、ワイルドカードDNSアドレスを入力します。たとえば192.168.1.1.xip.ioなどです。

外部Ingress IPアドレスまたは外部Ingressホスト名を特定するには:

  • クラスターがGKE上にある場合:

    1. Advanced settingsGoogle Kubernetes Engineリンクを選択するか、Google Kubernetes Engineダッシュボードに直接移動します。
    2. 適切なプロジェクトとクラスターを選択します。
    3. 接続を選択します。
    4. ローカルのターミナルで、またはCloud Shellを使用して、gcloudコマンドを実行します。
  • クラスターがGKE上にない場合: Kubernetesプロバイダー固有の指示に従って、適切な認証情報でkubectlを設定します。次の例の出力は、クラスターの外部エンドポイントを示しています。この情報は、デプロイされたアプリケーションへの外部アクセスを許可するDNSエントリと転送ルールをセットアップするために使用できます。

Ingressによっては、外部IPアドレスをさまざまな方法で取得することができます。このリストは、一般的なソリューションと、GitLab固有のアプローチをいくつか示しています:

  • 一般に、次のコマンドを実行して、すべてのロードバランサーのIPアドレスをリストできます:

    kubectl get svc --all-namespaces -o jsonpath='{range.items[?(@.status.loadBalancer.ingress)]}{.status.loadBalancer.ingress[*].ip} '
  • アプリケーションを使用してIngressをインストールした場合は、次を実行します:

    kubectl get service --namespace=gitlab-managed-apps ingress-nginx-ingress-controller -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
  • 一部のKubernetesクラスターは、Amazon EKSのように、代わりにホスト名を返します。これらのプラットフォームの場合は、次を実行します:

    kubectl get service --namespace=gitlab-managed-apps ingress-nginx-ingress-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'

    EKSを使用する場合、Elastic Load Balancerも作成されます。これにより、AWSの追加コストが発生します。

  • Istio/Knativeは異なるコマンドを使用します。以下を実行します:

    kubectl get svc --namespace=istio-system istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip} '

一部のKubernetesバージョンで末尾に%が表示される場合は、含めないでください。