使用 GitLab Runner chart

GitLab Runner 子 chart 提供了一个用于运行 CI 作业的 GitLab Runner。默认启用并开箱即用支持使用 s3 兼容对象存储进行缓存。

要求

此 chart 依赖于 shared-secrets 作业,来填充其 registrationToken 以进行自动注册。如果您计划将此 chart 在现有的 GitLab 实例之外独立运行,您需要手动将 gitlab-runner secret 中的 registrationToken,设置为与运行 GitLab 实例中的设置相同。

配置

没有必需的设置,如果您将所有 chart 部署在一起,应该是开箱即用的。

部署独立的 runner

默认情况下,gitlabUrl 自动通过 migrations 生成注册令牌。但如果计划与运行的 GitLab 实例部署,将不会这样工作。

在这种情况下,您需要将 gitlabUrl 值设置为正在运行的 GitLab 实例的 URL。您还需要手动创建 gitlab-runner 并填入运行的 GitLab 实例提供的 registrationToken

使用 Docker-in-Docker

为了运行 Docker-in-Docker,runner 容器需要具有访问所需功能的权限。要启用它,请将 privileged 值设置为 true。。

安全考量

特权容器具有扩展功能,例如它们可以从它们运行的主机上挂载任意文件。 确保在隔离的环境中运行容器,这样就不会在它旁边运行任何重要的东西。

安装命令行选项

参数 说明 默认值
gitlab-runner.image Runner 镜像 gitlab/gitlab-runner:alpine-v10.5.0
gitlab-runner.gitlabUrl Runner 用于注册到 GitLab 服务器的 URL GitLab 实例的外部 URL
gitlab-runner.install 安装 gitlab-runner chart true
gitlab-runner.imagePullPolicy 镜像拉取策略 IfNotPresent
gitlab-runner.init.image.repository initContainer 镜像  
gitlab-runner.init.image.tag initContainer 机械标签  
gitlab-runner.pullSecrets 访问镜像仓库的 Secrets  
gitlab-runner.unregisterRunners 在终止前取消注册所有 Runner true
gitlab-runner.concurrent 并行作业数量 10
gitlab-runner.checkInterval 轮询间隔 30s
gitlab-runner.rbac.create 是否创建 RBAC service account true
gitlab-runner.rbac.clusterWideAccess 在集群范围内部署作业容器 false
gitlab-runner.rbac.serviceAccountName 要创建的 RBAC service account 名称 default
gitlab-runner.runners.privileged 在 privileged 模式下运行,需要 dind false
gitlab-runner.runners.cache.secretName 访问密钥所在的 secret 名称以及来源的 key gitlab-minio
gitlab-runner.runners.config Runner 配置(字符串) 查看 下方文档
gitlab-runner.resources.limits.cpu Runner CPU 限制值  
gitlab-runner.resources.limits.memory Runner 内存限制值  
gitlab-runner.resources.requests.cpu Runner CPU 请求值  
gitlab-runner.resources.requests.memory Runner 内存请求值  

默认 runner 配置

GitLab chart 中使用的默认 Runner 配置已定义使用包含的 MinIO 进行缓存。如果您要设置 Runner 的 config 值,您还需要配置自己的缓存。

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 配置示例

Runners 配置为仅使用自定义 nameservers(任何集群或主机名称服务器除外):

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