GitLab Runnerチャートを使用します。

GitLab RunnerサブチャートはCIジョブを実行するためのGitLab Runnerを提供します。デフォルトで有効になっており、s3互換のオブジェクトストレージを使ったキャッシュをサポートしています。

要件

このチャートは、registrationToken 自動登録 registrationTokenのための共有シークレットジョブに依存しています。registrationToken このチャートを既存の GitLab インスタンスでスタンドアローンチャートとして実行する場合は registrationTokengitlab-runner のシークレットを実行中の GitLab インスタンスで表示されるものと同じにregistrationToken 手動で設定する必要が registrationTokenあります。

設定

必要な設定はありません。すべてのチャートを一緒にデプロイすれば、すぐに動作するはずです。

スタンドアローンランナーのデプロイ

デフォルトでは、gitlabUrl を推測し、登録トークンを自動的に生成し、migrations Chart を通して生成します。この動作は、GitLabインスタンスが稼働している状態でデプロイしようとする場合には機能しません。

この場合、gitlabUrl の値を実行中の GitLab インスタンスの URL に設定する必要があります。また、手動でgitlab-runner シークレットを作成し、実行中のGitLabが提供するregistrationToken で埋める必要があります。

Docker-in-Dockerを使う

Docker-in-Dockerを実行するには、Runnerコンテナが必要な機能にアクセスできる特権を持つ必要があります。これを有効にするには、privileged の値をtrue.に true設定します。trueデフォルトで.に設定されていない理由については truetrueアップストリームのドキュメントを参照して trueください。

セキュリティ

特権コンテナには拡張機能があり、たとえば実行するホストから任意のファイルをマウントすることができます。コンテナを隔離された環境で実行し、傍らで重要なものが実行されないようにしてください。

インストールのコマンドラインオプション

パラメータ説明デフォルト
gitlab-runner.imageランナーイメージgitlab/gitlab-runner:alpine-v10.5.0
gitlab-runner.gitlabUrlRunnerがGitLab Serverに登録する際に使用するURLGitLabの外部URL
gitlab-runner.install gitlab-runner チャートのインストールtrue
gitlab-runner.imagePullPolicy画像プルポリシーIfNotPresent
gitlab-runner.init.image.repository initContainer イメージ 
gitlab-runner.init.image.tag initContainer イメージタグ 
gitlab-runner.pullSecrets画像リポジトリのシークレット 
gitlab-runner.unregisterRunners終了前にすべてのランナーの登録を解除してください。true
gitlab-runner.concurrent同時実行ジョブ数10
gitlab-runner.checkIntervalポーリング間隔30s
gitlab-runner.rbac.createRBACサービスアカウントを作成するかどうかtrue
gitlab-runner.rbac.clusterWideAccessジョブのコンテナをクラスター全体にデプロイするかどうかfalse
gitlab-runner.rbac.serviceAccountName作成するRBACサービスアカウント名default
gitlab-runner.runners.privileged特権モードで実行します。dind false
gitlab-runner.runners.cache.secretNameシークレットから鍵や秘密鍵にアクセスするために必要です。gitlab-minio
gitlab-runner.runners.config文字列としてのランナー設定 下記参照
gitlab-runner.resources.limits.cpuランナーCPU制限 
gitlab-runner.resources.limits.memoryRunnerのメモリ制限 
gitlab-runner.resources.requests.cpuランナーが要求するCPU 
gitlab-runner.resources.requests.memoryランナーが要求したメモリ 

デフォルトのランナー設定

GitLabのChartで使用されているデフォルトのランナー設定は、デフォルトでキャッシュに付属のMinIOを使用するようにカスタマイズされています。Runnerconfig の値を設定する場合は、独自のキャッシュ設定も必要です。

gitlab-runner:
  runners:
    config: |
      [[runners]]
        [runners.kubernetes]
        image = "ubuntu:22.04"
        {{- if .Values.global.minio.enabled }}
        [runners.cache]
          Type = "s3"
          Path = "gitlab-runner"
          Shared = true
          [runners.cache.s3]
            ServerAddress = {{ include "gitlab-runner.cache-tpl.s3ServerAddress" . }}
            BucketName = "runner-cache"
            BucketLocation = "us-east-1"
            Insecure = false
        {{ end }}

Chart設定例

カスタムネームサーバのみを使用するRunner設定(クラスターやホストのネームサーバは除外):

gitlab-runner:
  runners:
    config: |
      [[runners]]
        [runners.kubernetes]
          image = "ubuntu:22.04"
          dns_policy = "none"
        [runners.kubernetes.dns_config]
          nameservers = ["8.8.8.8"]

Runner Chartの追加設定を参照してください。