インストール
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab Self-Managed
GitLab Operatorには既知の制限事項があり、本番環境での使用は特定のシナリオにのみ適しています。
GitLab Operatorには以下の外部インスタンスが必要です。
本番環境へのデプロイには、クラウドネイティブリファレンスアーキテクチャに従ってください。
このドキュメントでは、KubernetesまたはOpenShiftクラスターでマニフェストを使用してGitLab Operatorをデプロイする方法について説明します。
OpenShiftを使用する場合、インストールは通常Operator Lifecycle Manager(OLM)によって処理されます。 OLMを使用したインストールは実験的とみなされます。GitLabは、OLMを使用してデプロイされたインスタンスに関連する問題をサポートしません。 OLMの潜在的な問題の詳細については、イシュー241を参照してください。
前提条件
- Kubernetesまたは既存のOpenShiftクラスターを作成または使用する
- 前提条件となるサービスとソフトウェアをインストールする
- ドメイン名サービスを設定する
クラスター
従来のKubernetesクラスターを作成するには、公式ツールまたはお好みのインストール方法を使用することを検討してください。
GitLab Operatorは以下のKubernetesバージョンをサポートしています。
| Kubernetesリリース | ステータス | 最小Operatorバージョン |
|---|---|---|
| 1.35 | サポート済み | 2.9.0 |
| 1.34 | サポート済み | 2.5.0 |
| 1.33 | サポート済み | 2.1.0 |
| 1.32 | 非推奨 | 2.0.0 |
| 1.31 | サポート対象外 | 1.9.0 |
GitLab Operatorは以下のOpenShiftバージョンをサポートしています。
| OpenShiftリリース | ステータス | 最小Operatorバージョン |
|---|---|---|
| 4.21 | サポート済み | 2.9.0 |
| 4.20 | サポート済み | 2.6.0 |
| 4.19 | サポート済み | 2.2.0 |
| 4.18 | サポート済み | 1.9.0 |
| 4.17 | サポート対象外 | 1.6.0 |
Kubernetesの直近3つのマイナーバージョンと、OpenShiftの直近4つのマイナーリリースとの互換性を同時にターゲットとしています。新しいバージョンのサポートが追加されると、最も古いサポート対象バージョンのテストは終了します。KubernetesおよびOpenShiftの新しいマイナーリリースに対して、初回リリースから3か月以内にOperatorサポートを提供することを目標としています。
詳細については、Kubernetesサポートポリシーを参照してください。
Kubernetes向けエージェントやGitLabチャートなど一部のコンポーネントでは、GitLabが異なるクラスターバージョンをサポートする場合があります。
上記に記載されているバージョンより新しいリリースとの互換性の問題は、イシュートラッカーでお知らせください。
一部のGitLab機能は、非推奨バージョンや上記に記載されているバージョンより古いバージョンでは動作しない場合があります。
OperatorはX86-64とARM64をサポートしています。ARM64ビルドは16.7から利用可能でしたが、完全なサポートとテストカバレッジは18.8から提供されています。
外部トラフィックルーティング
アプリケーションへのアクセスを提供するには、外部トラフィックルーティングが必要です。 Envoy Gatewayを使用したGateway APIは、新規デプロイに推奨されるアプローチです。設定の詳細と代替プロバイダーについては、Gateway APIドキュメントを参照してください。
バンドルされているNGINX IngressコントローラーはGitLabチャート19.0で非推奨となり、GitLab 20.0で削除される予定です。代替として外部NGINX Ingressコントローラーを使用できます。
TLS証明書
OperatorのKubernetes webhookの証明書を作成するために、cert-managerが使用されます。GitLabの証明書にもcert-managerを使用することをお勧めします。
OperatorはKubernetes webhookの証明書を必要とするため、GitLab Chartにバンドルされているcert-managerは使用できません。代わりに、Operatorをインストールする前にcert-managerをインストールしてください。
インストールドキュメントに従って、お使いのプラットフォームとツールに対応したサポート対象のcert-managerリリースをインストールしてください。
メトリクス
HorizontalPodAutoscalerがポッドのメトリクスを取得できるように、メトリクスサーバーをインストールしてください。
OpenShiftにはデフォルトでPrometheus Adapterが搭載されているため、GitLab Operatorが別のインスタンスをインストールしないよう、GitLabカスタムリソースでspec.chart.values.prometheus.install=falseを設定するだけで済みます。
ドメイン名サービスの設定
DNSレコードを追加できる、インターネットからアクセス可能なドメインが必要です。
ドメインをGitLabコンポーネントに接続する方法の詳細については、ネットワークとDNSのドキュメントを参照してください。このセクションで説明する設定は、GitLabカスタムリソース(CR)を定義する際に使用します。
OpenShiftのIngressには追加の考慮事項があります。詳細については、OpenShift Ingressに関する注意事項を参照してください。
GitLab Operatorのインストール
まず、インストール方法を選択してください。
まず、Operatorリリースページからリリースマニフェストを取得します。各リリースには4つのマニフェストが公開されています。ターゲットプラットフォームと必要なRBACスコープに合ったものを選択してください。
| マニフェスト | プラットフォーム | RBACスコープ |
|---|---|---|
gitlab-operator-kubernetes.yaml | Kubernetes | クラスター全体: ClusterRole/ClusterRoleBinding。OperatorはすべてのネームスペースのGitLab CRを監視します。 |
gitlab-operator-kubernetes-namespaced.yaml | Kubernetes | ネームスペース限定: インストールネームスペースにスコープされたRole/RoleBinding。Operatorはそのネームスペースのみを監視します。Operatorが管理するクラスタースコープのリソースには、小規模なClusterRoleが引き続き必要です。 |
gitlab-operator-openshift.yaml | OpenShift | クラスター全体(上記と同様)。 |
gitlab-operator-openshift-namespaced.yaml | OpenShift | ネームスペース限定(上記と同様)。 |
単一のOperatorが複数のネームスペースにわたってGitLabインスタンスを管理する必要がある場合は、クラスター全体のバリアントを使用してください。ターゲットクラスターでクラスター全体のRBACの付与が許可されていないなど、Operatorを単一のネームスペースに限定する必要がある場合は、ネームスペース限定のバリアントを使用してください。ネームスペース限定のバリアントでは、GitLabカスタムリソースをOperatorと同じネームスペースに作成する必要があります。
次に、Operatorをインストールするネームスペースを作成します。マニフェストでは、ネームスペースはデフォルトでgitlab-systemに設定されています。ネームスペースを変更するには、マニフェストを手動で更新するか、このキーやその他のキーを簡単に設定できるHelmチャートの使用を検討してください。
kubectl create namespace gitlab-system最後に、マニフェストを適用します。
kubectl apply -f gitlab-operator-<platform>.yamlまず、GitLab Helmリポジトリを追加して最新の更新を取得します。
helm repo add gitlab https://charts.gitlab.io
helm repo update次に、GitLab Operatorチャートをインストールします。
helm install gitlab-operator gitlab/gitlab-operator \
--create-namespace \
--namespace gitlab-system利用可能なすべての設定オプションについては、values.yamlを参照してください。
GitLab Operatorは以下のOLMチャンネルで利用可能です。
- OperatorHub.io
- OpenShift Community Operators(OpenShiftおよびOKDに組み込まれたOperatorHub内)
- Red Hat Ecosystem Catalog
Operator Deploymentのステータスを確認してインストールを確認します。
kubectl -n gitlab-system get deployment gitlab-controller-managerネームスペース限定モードでのバンドルNGINX IngressとPrometheus
ネームスペース限定のマニフェストバリアント(およびwatchCluster=falseでのHelmインストール)では、チャートにバンドルされているNGINX IngressコントローラーとPrometheusサーバーのClusterRoleとClusterRoleBindingが省略されます。これら2つのコンポーネントはクラスター全体で動作するように設計されています。
- NGINX Ingressはすべてのネームスペースにわたって
Ingressesを監視し、nodesやingressclassesなどのクラスタースコープのリソースを読み取ります。 - Prometheusサーバーはクラスター全体のターゲットを検出してスクレイプし、
nodes、nodes/proxy、nodes/metrics、および/metrics非リソースURLへのアクセスが必要です。
ネームスペース限定モードでOperatorをインストールし、これらのバンドルコンポーネントを使用する場合は、クラスタースコープの権限を自分で提供する必要があります(通常、チャートのgitlab-nginx-ingress/gitlab-prometheus-server ServiceAccountを外部管理のClusterRoleにバインドし、NGINX Ingressの場合はコントローラーに--watch-namespaceを渡します)。
ネームスペース限定モードで推奨されるアプローチは、外部管理のモニタリングおよびIngress/Gateway APIソリューションを使用することです。
GitLabのインストール
GitLabカスタムリソース(CR)を作成します。
mygitlab.yamlのような名前の新しいファイルを作成します。このファイルに記述する内容の例を以下に示します。
apiVersion: apps.gitlab.com/v1beta1 kind: GitLab metadata: name: gitlab spec: chart: version: "X.Y.Z" # https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/<OPERATOR_VERSION>/CHART_VERSIONS values: global: hosts: domain: example.com # use a real domain here ingress: configureCertmanager: true certmanager-issuer: email: youremail@example.com # use your real email address herespec.chart.values以下で使用する設定オプションの詳細については、GitLab Helmチャートドキュメントを参照してください。新しいGitLab CRを使用してGitLabインスタンスをデプロイします。
kubectl -n gitlab-system apply -f mygitlab.yamlこのコマンドにより、GitLab CRがクラスターに送信され、GitLab Operatorによって調整されます。コントローラーポッドのログをテールすることで進捗を確認できます。
kubectl -n gitlab-system logs deployment/gitlab-controller-manager -c manager -fGitLabリソースを一覧表示してステータスを確認することもできます。
$ kubectl -n gitlab-system get gitlab NAME STATUS VERSION gitlab Ready 5.2.4CRが調整されると(GitLabリソースのステータスが
Runningになると)、ブラウザでhttps://gitlab.example.comからGitLabにアクセスできます。
ログインするには、デプロイの初期rootパスワードを取得する必要があります。詳細な手順については、Helmチャートドキュメントを参照してください。
推奨される次のステップ
インストールが完了したら、認証オプションやサインアップ制限を含む推奨される次のステップを検討してください。
OpenShift
OpenShiftを実行している場合は、GitLab Operatorの承認ストラテジーを自動(デフォルト)から手動に変更してください。これにより、承認が与えられるまで、OpenShiftが新しいOperatorバージョンをインストールするのを防ぎます。
カスタムstartingCSVを設定して、Operatorのバージョンを固定したり、最新でないバージョンにアップグレードしたりすることもできます。
- 承認ストラテジーは、OpenShift Webコンソールから変更するか、Subscriptionを編集することで変更できます。
- 手動アップグレードを承認するには、
InstallPlanの.spec.approvedをtrueに設定します。 - 各GitLab Operatorは定義されたGitLabチャートバージョンのサブセットをサポートしています。GitLab Operatorへのアップグレードには、GitLabカスタムリソースのチャートバージョンの更新も必要です。
- GitLab Operatorと指定されたGitLab HelmチャートバージョンにGitLab Helmチャートバージョンに関するエラーが発生して設定変更が失敗する場合は、GitLab Helmチャートバージョンに関するエラーを参照してください。
GitLab Operatorのアンインストール
GitLab Operatorとその関連リソースを削除するには、以下の手順に従ってください。
Operatorをアンインストールする前に注意すべき事項:
- Operatorは、GitLabインスタンスが削除されても、Persistent Volume ClaimsやSecretsを削除しません。
- Operatorを削除する際、インストールされているネームスペース(デフォルトでは
gitlab-system)は自動的に削除されません。これにより、永続ボリュームが意図せず失われることを防ぎます。
GitLabインスタンスのアンインストール
kubectl -n gitlab-system delete -f mygitlab.yamlこれにより、GitLabインスタンスと、上記で述べたPersistent Volume Claimsを除くすべての関連オブジェクトが削除されます。
GitLab Operatorのアンインストール
GL_OPERATOR_VERSION=<your_installed_version> # https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/releases
PLATFORM=kubernetes # or "openshift"
kubectl delete -f https://gitlab.com/api/v4/projects/18899486/packages/generic/gitlab-operator/${GL_OPERATOR_VERSION}/gitlab-operator-${PLATFORM}-${GL_OPERATOR_VERSION}.yamlこれにより、Operatorの実行中のDeploymentを含むOperatorのリソースが削除されます。GitLabインスタンスに関連するオブジェクトは削除されません。
GitLab Operatorのトラブルシューティング
GitLab Operatorのトラブルシューティングについては、トラブルシューティングを参照してください。