如何在Kubernetes上自定义config.toml?

Joo*_*oer 8 gitlab gitlab-ci kubernetes gitlab-ci-runner

我有一个连接到在Google(GKE)上运行的k8s集群的Gitlab云。该集群是通过Gitlab云创建的。

我想自定义的config.toml,因为我想解决的K8S缓存中提出这个问题

config.tomlrunner-gitlab-runnerConfigMap中找到了配置。我更新了ConfigMap以包含此config.toml设置:

  config.toml: |
    concurrent = 4
    check_interval = 3
    log_level = "info"
    listen_address = '[::]:9252'
    [[runners]]
      executor = "kubernetes"
      cache_dir = "/tmp/gitlab/cache"
      [runners.kubernetes]
        memory_limit = "1Gi"
        [runners.kubernetes.node_selector]
          gitlab = "true"
        [[runners.kubernetes.volumes.host_path]]
          name = "gitlab-cache"
          mount_path = "/tmp/gitlab/cache"
          host_path = "/home/core/data/gitlab-runner/data"
Run Code Online (Sandbox Code Playgroud)

要应用更改,我删除了runner-gitlab-runner-xxxx-xxxpod,因此使用更新的来创建一个新的pod config.toml

但是,当我查看新的广告连播时,/home/gitlab-runner/.gitlab-runner/config.toml现在包含两个[[runners]]部分:

listen_address = "[::]:9252"
concurrent = 4
check_interval = 3
log_level = "info"

[session_server]
  session_timeout = 1800

[[runners]]
  name = ""
  url = ""
  token = ""
  executor = "kubernetes"
  cache_dir = "/tmp/gitlab/cache"
  [runners.kubernetes]
    host = ""
    bearer_token_overwrite_allowed = false
    image = ""
    namespace = ""
    namespace_overwrite_allowed = ""
    privileged = false
    memory_limit = "1Gi"
    service_account_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    [runners.kubernetes.node_selector]
      gitlab = "true"
    [runners.kubernetes.volumes]

      [[runners.kubernetes.volumes.host_path]]
        name = "gitlab-cache"
        mount_path = "/tmp/gitlab/cache"
        host_path = "/home/core/data/gitlab-runner/data"

[[runners]]
  name = "runner-gitlab-runner-xxx-xxx"
  url = "https://gitlab.com/"
  token = "<my-token>"
  executor = "kubernetes"
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
  [runners.kubernetes]
    host = ""
    bearer_token_overwrite_allowed = false
    image = "ubuntu:16.04"
    namespace = "gitlab-managed-apps"
    namespace_overwrite_allowed = ""
    privileged = true
    service_account_overwrite_allowed = ""
    pod_annotations_overwrite_allowed = ""
    [runners.kubernetes.volumes]
Run Code Online (Sandbox Code Playgroud)

该文件/scripts/config.toml是我在ConfigMap中创建的配置。因此,我怀疑在/home/gitlab-runner/.gitlab-runner/config.toml向Gitlab云注册Gitlab-Runner时以某种方式更新了它。

如果config.toml无法通过ConfigMap 更改,则该如何更改配置?我在Gitlab或Gitlab文档中找不到关于此的任何信息。

Ari*_*kay 4

在映射内部,您可以尝试附加卷和额外的配置参数:

# Add docker volumes
cat >> /home/gitlab-runner/.gitlab-runner/config.toml << EOF

      [[runners.kubernetes.volumes.host_path]]
        name = "var-run-docker-sock"
        mount_path = "/var/run/docker.sock"
EOF
Run Code Online (Sandbox Code Playgroud)

我使用舵图进行了运行程序部署;我想您也做了同样的事情,在以下链接中您将找到有关我提到的方法的更多信息:https ://gitlab.com/gitlab-org/gitlab-runner/issues/2578

如果附加配置后您的 pod 无法启动,请检查日志,我确实测试了附加方法并出现了一些错误,例如“找不到目录”,这是因为我附加到了错误的路径,但是在修复这些之后问题,跑步者工作正常。