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は、プロジェクト用に作成するネームスペースとサービスアカウントのキャッシュされたバージョンを保存します。これらのリソースをクラスターで手動で変更すると、このキャッシュがクラスターと同期しなくなる可能性があります。これにより、デプロイジョブが失敗する可能性があります。
キャッシュをクリアするには:
- プロジェクトの操作 > Kubernetesクラスターページに移動し、クラスターを選択します。
- Advanced settingsセクションを展開します。
- クラスターのキャッシュを削除を選択します。
ベースドメイン
ベースドメインを指定すると、KUBE_INGRESS_BASE_DOMAINデプロイ変数として自動的に設定されます。Auto DevOpsを使用している場合、このドメインはさまざまなステージに使用されます。たとえば、Autoレビューアプリと自動デプロイがあります。
ドメインには、Ingress IPアドレスに設定されたワイルドカードDNSが必要です。次のいずれかの方法があります:
- ドメインプロバイダーを使用して、Ingress IPアドレスを指す
Aレコードを作成します。 nip.ioやxip.ioなどのサービスを使用して、ワイルドカードDNSアドレスを入力します。たとえば192.168.1.1.xip.ioなどです。
外部Ingress IPアドレスまたは外部Ingressホスト名を特定するには:
クラスターがGKE上にある場合:
- Advanced settingsのGoogle Kubernetes Engineリンクを選択するか、Google Kubernetes Engineダッシュボードに直接移動します。
- 適切なプロジェクトとクラスターを選択します。
- 接続を選択します。
- ローカルのターミナルで、または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バージョンで末尾に%が表示される場合は、含めないでください。