Appendix. Install the GitLab on OpenShift

演習の概要

このモジュールでは、 こちらの手順を参考にしながら、 OpenShiftのGitLab Operatorを利用してGitLabをインストールします。

OpenShiftの管理者アカウント( kubeadmincluster-admin など)を利用します。

cert-manager Operatorのインストール

GitLabを利用するための証明書発行機能を持つ、cert-manager Operatorを利用してGitLabをインストールします。 OpenShift環境にログインして、「ソフトウェアカタログ」から「cert-manager Operator for Red Hat OpenShift」を選択して、 「インストール」ボタンをクリックして、インストールします。インストール時のオプションは、全てデフォルト値を利用します。

cert manager install01
cert manager install02

これで、cert-manager Operatorのインストールは完了です。

GitLab Operatorのインストール

続いて、GitLab Operatorをインストールします。 cert-manager Operatorの時と同様に、「ソフトウェアカタログ」からCertified版のGitLab Operatorを選択して、 「インストール」ボタンをクリックして、インストールを完了します。インストール時のオプションは、全てデフォルト値を利用します。

gitlab install01
gitlab install02

これで、GitLab利用に必要となるOperatorのインストールは完了です。

operator installed

GitLab インスタンスの作成

GitLab Operatorを利用して、GitLabインスタンスを作成します。 「インストール済みのOperator」メニューから「GitLab」を選択して、「インスタンスの作成」をクリックします。

gitlab create01

GitLab インスタンスを作成するためのYAMLが表示されます。 これを以下のように修正します。

kind: GitLab
apiVersion: apps.gitlab.com/v1beta1
metadata:
  name: gitlab
  namespace: gitlab-system
spec:
  chart:
    values:
      prometheus:
        install: false
      gitlab:
        gitlab-shell:
          maxReplicas: 1
          minReplicas: 1
        sidekiq:
          maxReplicas: 1
          minReplicas: 1
          resources:
            requests:
              cpu: 500m
              memory: 1000M
        webservice:
          maxReplicas: 1
          minReplicas: 1
          resources:
            requests:
              cpu: 500m
              memory: 1500M
      global:
        hosts:
          domain: <OpenShift環境で利用しているドメインを設定>
          hostSuffix: null
        ingress:
          annotations:
            route.openshift.io/termination: edge
            kubernetes.io/tls-acme: true
          class: none
      installCertmanager: false
      certmanager-issuer:
        email: <証明書発行者のメールアドレスを設定>
      minio:
        resources:
          requests:
            cpu: 100m
      postgresql:
        primary:
          extendedConfiguration: max_connections = 200
      redis:
        resources:
          requests:
            cpu: 100m
    version: 9.7.0

デフォルトで表示されるYAMLからの変更点は次の通りです。

  • 検証用途を想定して maxReplicas1 に設定して、冗長構成を排除

  • OpenShiftでデフォルトで用意されるPrometheusがあるため、 spec.chart.values.prometheus.installfalse に変更

  • spec.chart.values.global.ingress.annotations を設定して、OpenShift上でのGitLabサービスを公開するための Routeを利用 (Nginx-ingressは利用しない)

  • GitLabサービスを利用するためのドメインを指定。ドメインはOpenShift ConsoleのURLなどを参照(例: https://console-openshift-console.<ドメイン>/)

  • cert-manager による証明書発行者のメールアドレスを指定

上記のYAMLをコピペしたら、「作成」ボタンをクリックしてGitLabインスタンスを作成します。

gitlab create02

5~10分ほど待つと、GitLabインスタンスが Running 状態になります。 この状態になると、GitLabのWebコンソールにアクセスできるようになります。

gitlab running

GitLab Runner Operatorのインストール

GitLab CI/CDと連携してパイプラインでジョブを実行するアプリケーションである GitLab RunnerもOperatorでインストールと設定ができます。

前述の手順でGitLab OperatorのインストールとGitLab インスタンスの作成が完了した後に、 「ソフトウェアカタログ」からCertified版のGitLab Runner Operatorを選択して、「インストール」ボタンをクリックして、 インストールを完了します。インストール時のオプションは、全てデフォルト値です。

gitlab runner install01
gitlab runner install02

これで、GitLab Runner利用に必要となるOperatorのインストールは完了です。

GitLab Runner インスタンスの作成

GitLab Runnerを利用するために必要となるインスタンスを作成します。 「インストール済みのOperator」メニューから「GitLab Runner」を選択して、「インスタンスの作成」をクリックします。

gitlab runner create01

GitLab Runnerインスタンスを作成するためのYAMLが表示されます。これを以下のように修正します。

kind: Runner
apiVersion: apps.gitlab.com/v1beta2
metadata:
  generateName: gitlab-runner-
  namespace: gitlab-system
spec:
  gitlabUrl: https://gitlab.<OpenShift環境で利用しているドメインを設定>/
  token: gitlab-gitlab-runner-secret
  tags: openshift
  concurrent: 10
  imagePullPolicy: IfNotPresent

デフォルトで表示されるYAMLからの変更点は次の通りです。

  • metadata.generateName: gitlab-runner- を指定

  • GitLab Runnerを利用するGitLabインスタンスのURLを spec.gitlabUrl で指定

  • 前述のGitLabインスタンス作成時に自動作成されたシークレットを spec.token: gitlab-gitlab-runner-secret で指定

  • OpenShiftによって作成されたリソースであることを示す spec.tags: openshift を指定

上記のYAMLをコピペしたら、「作成」ボタンをクリックしてGitLab Runnerインスタンスを作成します。

gitlab runner create02

これによってGitLab Runnerインスタンスが Running 状態になります。この状態になると、 GitLabのWebコンソールからGitLab Runnerのエージェントとして利用できるようになります。

gitlab runner running01

上記YAMLでは metadata.generateName を指定しています。 これにより GitLab Runnerインスタンスに特定の名前を指定することなく、 上記YAMLからGitLab Runnerインスタンスを作成するという前述の手順を繰り返すだけで、 GitLab Runnerのエージェント追加が可能になります。

gitlab runner running02

GitLab の利用

以下の画像の例ではURLがいくつか提示されていますが、 GitLabのWebコンソールにアクセスするには gitlab 文字列を含むURLを利用します。

https://gitlab.<OpenShift環境で利用しているドメイン>/
gitlab route

アクセスすると、GitLabのログイン画面が表示されます。 GitLabインスタンス作成時に自動作成される管理者アカウント root ユーザーでログインします。

gitlab login

root ユーザーのパスワードは、OpenShift Webコンソールの「シークレット」メニューにある、 gitlab-system プロジェクトの gitlab-gitlab-initial-root-password シークレットから確認できます。 「値を表示する」をクリックすると、パスワードを確認できます。

gitlab root password

ログインすると、次のような画面が表示されます。 英語になっている場合は、画面右上のユーザーアイコンの「Preferences(設定)」から「Language」を日本語に設定して、 変更保存することで、日本語への表示変更ができます。

gitlab root project

GitLabのログイン後の画面に表示される「人を追加」メニューからローカルユーザーアカウントを追加したり、 「プロジェクトを作成」からコードのリポジトリを作成できるようになっています。GitLabでのコード管理については、 公式ガイドの ステップ1とステップ2を最低限実施するといいでしょう。

また、画面右上の「管理者」をクリックして「概要」→「CI/CD」→「Runner」を選択することで、 前述の手順で作成したGitLab Runnerインスタンスが表示されていることを確認できます。 以下の画像は、GitLab Runner Operatorを利用してGitLab Runnerインスタンスを2つ作成した例となります。

gitlab runner console

他にも様々な公式ガイドがGitLabから提供されているので、参考にしてください。