GitLab Runnerチャートを使用します。
GitLab RunnerサブチャートはCIジョブを実行するためのGitLab Runnerを提供します。デフォルトで有効になっており、s3互換のオブジェクトストレージを使ったキャッシュをサポートしています。
要件
このチャートは、registrationToken
自動登録 registrationToken
のための共有シークレットジョブに依存しています。registrationToken
このチャートを既存の GitLab インスタンスでスタンドアローンチャートとして実行する場合は registrationToken
、gitlab-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
デフォルトで.に設定されていない理由については true
、true
アップストリームのドキュメントを参照して true
ください。
セキュリティ
特権コンテナには拡張機能があり、たとえば実行するホストから任意のファイルをマウントすることができます。コンテナを隔離された環境で実行し、傍らで重要なものが実行されないようにしてください。
インストールのコマンドラインオプション
パラメータ | 説明 | デフォルト |
---|---|---|
gitlab-runner.image | ランナーイメージ | gitlab/gitlab-runner:alpine-v10.5.0 |
gitlab-runner.gitlabUrl | RunnerがGitLab Serverに登録する際に使用するURL | GitLabの外部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.create | RBACサービスアカウントを作成するかどうか | 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.memory | Runnerのメモリ制限 | |
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の追加設定を参照してください。