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

インストール

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

GitLab Operatorには既知の制限事項があり、本番環境での使用における特定のシナリオにのみ適しています。

GitLabカスタムリソースのデフォルト値は、not intended for production use。これらの値を使用すると、GitLab Operatorは、永続データを含むすべてのサービスがKubernetesクラスターにデプロイされるGitLabインスタンスを作成します。これは、not suitable for production workloads。本番環境へのデプロイでは、クラウドネイティブハイブリッドリファレンスアーキテクチャに従う必要があります。GitLabは、Kubernetesクラスター内にデプロイされたPostgreSQL、Redis、Gitaly、Praefect、またはMinIOに関連するイシューをサポートしません。

このドキュメントでは、KubernetesまたはOpenShiftクラスターでマニフェストを使用してGitLab Operatorをデプロイする方法について説明します。

OpenShiftを使用している場合、通常、インストールはOperator Lifecycle Manager(OLM)によって処理されます。Installation using OLM is considered experimental。GitLabは、OLMを使用してデプロイされたインスタンスに関連するイシューをサポートしていません。OLMの潜在的なイシューの詳細については、イシュー241を参照してください。

前提条件

  1. 既存のKubernetesまたはOpenShiftクラスターを作成または使用する
  2. 前提条件となるサービスとソフトウェアをインストールする
  3. ドメインネームサービスを設定する

クラスター

従来の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から利用可能です。

Ingressコントローラー

Ingressコントローラーは、アプリケーションへの外部アクセスを提供し、コンポーネント間のセキュアな通信を確保するために必要です。

GitLab Operatorは、デフォルトでフォークしたNGINXチャートをGitLab Helmチャートからデプロイします

外部Ingressコントローラーを使用する場合は、KubernetesコミュニティのNGINX Ingressを使用してIngressコントローラーをデプロイします。プラットフォームと推奨されるツールに基づいて、リンク内の関連する手順に従ってください。後で使用するために、Ingressクラスの値に注意してください(通常、デフォルトはnginxです)。GitLab CRを設定する場合は、GitLab HelmチャートからNGINXオブジェクトを無効にするために、必ずnginx-ingress.enabled=falseを設定してください。

TLS証明書

OperatorのKubernetes Webhookの証明書を作成するために、cert-managerが使用されます。GitLab証明書にもcert-managerを使用する必要があります。

OperatorにはKubernetes Webhookの証明書が必要なため、GitLabチャートにバンドルされているcert-managerは使用できません。代わりに、Operatorをインストールする前にcert-managerをインストールします。

プラットフォームとツールに対応するサポートされているcert-managerリリースをインストールするには、インストールドキュメントに従ってください。

メトリクス

HorizontalPodAutoscalersがポッドメトリクスを取得できるように、メトリクスサーバーをインストールします。

OpenShiftにはデフォルトでPrometheusアダプターが付属しているため、GitLabカスタムリソースでspec.chart.values.prometheus.install=falseを設定して、GitLab Operatorが別のインスタンスをインストールしないようにするだけです。

ドメインネームサービスを設定する

DNSレコードを追加できる、インターネットからアクセス可能なドメインが必要です。

ドメインをGitLabコンポーネントに接続する方法の詳細については、ネットワーキングとDNSのドキュメントを参照してください。GitLabカスタムリソース(CR)を定義するときは、このセクションで説明されている設定を使用します。

OpenShiftのIngressでは、特別な考慮事項が必要です。詳細については、OpenShift Ingressに関する注意事項を参照してください。

GitLab Operatorのインストール

まず、インストール方法を選択します。

まず、Operatorリリースページからリリースマニフェストを取得します。ターゲットプラットフォームに一致するマニフェストを選択します: KubernetesまたはOpenShift。

次に、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チャネルで使用できます:

Operatorデプロイのステータスを確認して、インストールを確認します:

kubectl -n gitlab-system get deployment gitlab-controller-manager

GitLabのインストール

  1. 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 here

    spec.chart.valuesで使用する設定オプションの詳細については、GitLab Helmチャートのドキュメントを参照してください。

  2. 新しい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 -f

    GitLabリソースを一覧表示して、ステータスを確認することもできます:

    $ kubectl -n gitlab-system get gitlab
    NAME     STATUS   VERSION
    gitlab   Ready    5.2.4

CRが調整されると(GitLabリソースのステータスがRunningになります)、ブラウザでhttps://gitlab.example.comのGitLabにアクセスできます。

ログインするには、デプロイの初期ルートパスワードを取得する必要があります。詳細な手順については、Helmチャートのドキュメントを参照してください。

インストールが完了したら、推奨される次のステップ(認証オプションやサインアップ制限など)を実行することを検討してください。

OpenShift

OpenShiftを実行する場合は、GitLab Operatorの承認戦略を自動(デフォルト)から手動に変更します。これにより、承認が得られるまで、OpenShiftが新しいOperatorバージョンをインストールできなくなります。

Operatorのバージョンを固定するか、最新以外のバージョンにアップグレードするために、カスタムstartingCSVを設定することもできます。

  • 承認戦略は、OpenShift Webコンソールから変更するか、サブスクリプションの編集によって変更できます。
  • InstallPlan.spec.approvedtrueに設定して、手動アップグレードを承認します。
  • 各GitLab Operatorは、定義されたGitLabチャートバージョンのサブセットをサポートしています: Operatorのアップグレードには、GitLabカスタムリソースのチャートバージョンの更新も含まれている必要があります。
  • GitLab Operatorと指定されたGitLab Helmチャートバージョンに互換性がない場合、チャートへの設定変更は失敗し、GitLab Helmチャートバージョンに関するエラーが発生する可能性があります。

GitLab Operatorのアンインストール

GitLab Operatorとその関連リソースを削除するには、以下の手順に従ってください。

Operatorをアンインストールする前に注意すべき事項:

  • Operatorは、GitLabインスタンスが削除されても、永続ボリュームクレームまたはシークレットを削除しません。
  • Operatorを削除すると、インストールされているネームスペース(デフォルトではgitlab-system)は自動的に削除されません。これにより、永続ボリュームが誤って失われることがなくなります。

GitLabのインスタンスのアンインストール

kubectl -n gitlab-system delete -f mygitlab.yaml

これにより、GitLabインスタンス、および上記の永続ボリュームクレームを除くすべての関連オブジェクトが削除されます)。

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の実行中のデプロイを含む、Operatorのリソースが削除されます。これは、GitLabインスタンスに関連付けられたオブジェクトをdoes not

GitLab Operatorのトラブルシューティング

Operatorのトラブルシューティングについては、troubleshooting.mdを参照してください。