5.6 GitLab Runner在Kubernetes中的部署:Kubernetes Executor实战应用

引言

GitLab Runner是执行CI/CD任务的组件。在Kubernetes中部署Runner可以实现动态资源分配和弹性扩展。本文将详细介绍GitLab Runner的Kubernetes部署方法。

一、GitLab Runner概述

1.1 Runner的作用

  • 执行CI/CD任务
  • 运行Pipeline Jobs
  • 资源隔离
  • 并行执行

1.2 Executor类型

  • Kubernetes:在K8s中运行(推荐)
  • Docker:使用Docker
  • Shell:直接在主机运行

二、安装GitLab Runner

2.1 使用Helm安装

# 添加Helm仓库
helm repo add gitlab https://charts.gitlab.io
helm repo update

# 安装Runner
helm install gitlab-runner gitlab/gitlab-runner \
  --namespace gitlab-runner \
  --create-namespace \
  --set gitlabUrl=https://gitlab.example.com \
  --set runnerRegistrationToken=YOUR_TOKEN

2.2 配置Values

# values.yaml
gitlabUrl: https://gitlab.example.com
runnerRegistrationToken: YOUR_TOKEN
rbac:
  create: true
runners:
  config: |
    [[runners]]
      [runners.kubernetes]
        namespace = "gitlab-runner"
        image = "alpine:latest"

三、Kubernetes Executor配置

3.1 基本配置

[[runners]]
  executor = "kubernetes"
  [runners.kubernetes]
    namespace = "gitlab-runner"
    image = "alpine:latest"
    privileged = false
    cpu_limit = "1"
    memory_limit = "2Gi"

3.2 高级配置

[[runners]]
  executor = "kubernetes"
  [runners.kubernetes]
    namespace = "gitlab-runner"
    image = "alpine:latest"
    cpu_request = "500m"
    memory_request = "1Gi"
    cpu_limit = "2000m"
    memory_limit = "4Gi"
    service_cpu_limit = "100m"
    service_memory_limit = "128Mi"
    helper_cpu_limit = "100m"
    helper_memory_limit = "128Mi"

四、实战案例

4.1 完整配置

# values.yaml
gitlabUrl: https://gitlab.example.com
runnerRegistrationToken: YOUR_TOKEN
rbac:
  create: true
runners:
  config: |
    concurrent = 10
    check_interval = 0
    
    [[runners]]
      name = "kubernetes-runner"
      url = "https://gitlab.example.com"
      token = "YOUR_TOKEN"
      executor = "kubernetes"
      [runners.kubernetes]
        namespace = "gitlab-runner"
        image = "alpine:latest"
        privileged = false
        cpu_limit = "2000m"
        memory_limit = "4Gi"
        service_cpu_limit = "100m"
        service_memory_limit = "128Mi"
        helper_cpu_limit = "100m"
        helper_memory_limit = "128Mi"
        poll_timeout = 180

五、操作管理

5.1 查看Runner

# 查看Runner Pod
kubectl get pods -n gitlab-runner

# 查看Runner日志
kubectl logs -n gitlab-runner <runner-pod>

5.2 更新配置

# 更新Values
helm upgrade gitlab-runner gitlab/gitlab-runner \
  -f values.yaml \
  -n gitlab-runner

六、最佳实践

6.1 配置建议

  • 合理设置并发数
  • 配置资源限制
  • 使用缓存
  • 监控Runner状态

总结

通过本文,你学会了:

  1. Runner安装:Helm安装、配置
  2. Kubernetes Executor:基本、高级配置
  3. 实战案例:完整配置
  4. 操作管理:查看、更新

下一步学习

  • 5.7 Tekton云原生CI/CD实战
  • 5.8 ArgoCD GitOps实战

思考题

  1. Kubernetes Executor的优势是什么?
  2. 如何配置Runner的资源限制?
  3. 如何实现Runner的高可用?

提示:GitLab Runner是执行CI/CD任务的关键组件。下一节我们将学习Tekton。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐