Kubernetes安装gitlab Runner

记录在k8s中安装gitlab-runner的过程

先决条件

  • 您的 GitLab 服务器的 API 可从集群访问。
  • 启用了 Beta API 的 Kubernetes 1.4+。
  • CLI在kubectl本地安装并针对集群进行了身份验证。
  • Helm 客户端本地安装在您的计算机上。

Helm Chart 准备

添加 GitLab Helm 存储库

1
2
3
4
5
6
7
8
9
helm repo add gitlab https://charts.gitlab.io

helm repo list
NAME  	URL
gitlab	https://charts.gitlab.io/

##可以将gitlab-runner的helm包拉下来
helm fetch gitlab/gitlab-runner
tar xf gitlab-runner-0.45.0.tgz

配置自定义的values.yaml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
imagePullPolicy: IfNotPresent
gitlabUrl: "https://jh-xiaomage.gitlab.cn"  #设置为自己的gitlab地址
runnerRegistrationToken: "sFV-HEkLC_NgH2vLALfG"  #填写对应的注册令牌
concurrent: 10
checkInterval: 30
logLevel: info

rbac:
  create: true

metrics:
  enabled: false

runners:
  config: |
    [[runners]]
      [runners.kubernetes]
        namespace = "{{.Release.Namespace}}"
        image = "ubuntu:20.04"
        [[runners.kubernetes.volumes.host_path]]
            name = "docker"
            mount_path = "/var/run/docker.sock"
            host_path = "/var/run/docker.sock"
  privileged: "true"
  name: kubernetes-runner
  tags: "kubernetes,runner"

securityContext:
  runAsUser: 100
  # runAsGroup: 65533
  fsGroup: 65533

重要参数说明:

  • gitlabUrl:GitLab 实例的 URL(本例为 https://jh-xiaomage.gitlab.cn );
  • runnerRegistrationToken:注册 Runner 时所需要的 Token,可以在 Settings –> CI/CD –> Runners 里面查看;
  • concurrent:并行运行 Job 的最大值;
  • checkInterval:GitLab 实例检查新构建的时间间隔;
  • runner:runner 的配置内容,包括 name,tag 等等,这些内容最后会以 config.toml 文件的形式呈现;

Helm 安装

进行安装

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 先创建namespace
kubectl create ns devops

#安装
helm upgrade --install gitlab-runner  -n devops  -f values-pro.yaml ./gitlab-runner
......
Release "gitlab-runner" does not exist. Installing it now.
NAME: gitlab-runner
LAST DEPLOYED: Wed Sep 28 13:53:47 2022
NAMESPACE: devops
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Your GitLab Runner should now be registered against the GitLab instance reachable at: "http://xxxxxxxxxx/"

Runner namespace "devops" was found in runners.config template.

查看pod状态

1
2
3
kubectl get pods -n devops
NAME                             READY   STATUS    RESTARTS   AGE
gitlab-runner-6c5b6bd5d6-tkpdc   1/1     Running   0          19s

此时可以去gitlab页面的runner查看一下,已经有新的runner注册上了

runner测试使用

这里使用在 Ubuntu 上安装使用极狐GitLab Runner中的 Demo。对应的 .gitlab-ci.yml如下

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
stages:          
  - build

build:
  stage: build
  tags: 
    - kubernetes
  script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
    - docker build -t $CI_REGISTRY_IMAGE:2.0.0 .
    - docker push $CI_REGISTRY_IMAGE:2.0.0

接着直接出发 CI/CD Pipeline 即可,查看构建结果:

69939563a362f2111e56dabef7d7856e.png 查看构建日志

ba85036ef4655e1d883fde7051e26c19.png

可以看到此次构建是在名为 kubernetes-runner 的 Runner 上进行的。

参考链接

极狐gitlab

gitlab

config.toml

k8s runner

Buy me a coffee
支付宝
微信
0%