本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为:Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。
极狐GitLab 为 GitLab 在中国的发行版,中文版本对中国用户更友好。极狐GitLab 支持一键私有化部署,可以在 ubuntu、centos、Debian、Docker、Kubernetes 上灵活安装。安装详情可以查看官网 https://dl.gitlab.cn/i6j6bw2a。
Helm 的安装
Helm 的安装非常简单,在官网下载对应版本的安装包,然后解压即可。比如,在 Ubuntu 上安装 3.x 版本,使用如下命令:
# 解压安装包
tar -zxvf helm-v3.15.4-linux-amd64.tar.gz
# 将可执行文件拷贝到 /usr/local/bin
cp linux-amd64/helm /usr/local/bin/helm
安装后,可用 version或者 help命令进行查看:
helm version
version.BuildInfo{Version:"v3.15.4", GitCommit:"fa9efb07d9d8debbb4306d72af76a383895aa8c4", GitTreeState:"clean", GoVersion:"go1.22.6"}
接着就可以添加极狐GitLab Runner helm repo 了。
# 添加仓库
helm repo add jh-gitlab https://charts.gitlab.cn
"jh-gitlab" has been added to your repositories
# 更新仓库
helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "jh-gitlab" chart repository
vaules.yaml 文件的配置
使用 Helm 安装,values.yaml 的配置是非常重要的,该文件会包含一些实际参数,然后安装的时候用这些参数去对 Chart 进行渲染。极狐GitLab Runner Helm chart 中的 vaules.yaml 文件的配置比较多,详情可以查看官网详情。但是必须用到的几个参数如下:
必要配置
- gitlabUrl:极狐GitLab 的实例地址,Runner 安装的过程需要跟该实例进行通信。比如针对极狐GitLab SaaS,该地址为 https://jihulab.com。用户需要根据自身情况,填写真实的极狐GitLab 实例地址;
- runnerToken:极狐GitLab Runner 注册所用的令牌,这个需要自行创建。步骤会在下面讲解。
额外配置
- runners.config:Runner 的一些“个性化”配置,比如使用 s3 存储桶、docker 执行器等。
- rbac:确定是否要创建指定的 Kubernetes rbac。
Runner token 的创建
首先在项目 --> 设置 --> CI/CD中找到 Runner 配置:
选择新建项目 runner
填写必要的信息,诸如标签(tag)、描述、最大作业超时(超过这个时间 Runner 会自动终止作业)。然后选择创建 runner。
这时候就能看到 Runner token 已经存在了 glrt-xRnstJB7UBRHfgcvQVEB
。在后面注册 Runner 的时候会用到。上面的截图中也显示了,如果要用 gitlab-runner注册 runner 的话,后面的两个参数就是极狐GitLab 实例地址和 runner token。
runner token 创建出来以后,就可以用下面的 values.yaml 文件用 Helm 进行安装了:
imagePullPolicy: IfNotPresent
gitlabUrl: "http://jhma.jihulab.net"
runnerToken: "glrt-xRnstJB7UBRHfgcvQVEB"
concurrent: 10
checkInterval: 30
logLevel: info
rbac:
create: true
metrics:
enabled: false
runners:
config: |
[[runners]]
[runners.kubernetes]
namespace = "{{.Release.Namespace}}"
image = "ubuntu:22.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
fsGroup: 65533
用 Helm 安装 Runner
使用 helm install即可进行安装,如果要安装特定版本的 Runner,在安装的时候用 --version指定极狐GitLab Runner Helm Chart 的版本即可。
对于极狐GitLab Runenr 的版本查看,可以使用如下命令:
# 查看极狐GitLab Runner 版本
helm search repo -l jh-gitlab/gitlab-runner
NAME CHART VERSION APP VERSION DESCRIPTION
jh-gitlab/gitlab-runner 0.68.1 17.3.1 GitLab Runner
jh-gitlab/gitlab-runner 0.68.0 17.3.0 GitLab Runner
jh-gitlab/gitlab-runner 0.67.0 17.2.0 GitLab Runner
jh-gitlab/gitlab-runner 0.66.0 17.1.0 GitLab Runner
jh-gitlab/gitlab-runner 0.65.0 17.0.0 GitLab Runner
......太长,删除......
jh-gitlab/gitlab-runner 0.41.0 15.0.0 GitLab Runner
jh-gitlab/gitlab-runner 0.40.1 14.10.1 GitLab Runner
jh-gitlab/gitlab-runner 0.40.0 14.10.0 GitLab Runner
jh-gitlab/gitlab-runner 0.39.0 14.9.0 GitLab Runner
比如 0.68.1 的 chart 对应的 runner 是 17.3.1,0.39.0 的 chart 对应的是 14.9.0。我们选择安装 17.3.0 的 runner,对应的 chart 版本为 0.68.0。
使用如下命令进行安装:
helm install --namespace jh-gitlab-runner --create-namespace jh-gitlab-runner -f values.yaml jh-gitlab/gitlab-runner --version 0.68.0
安装日志如下
W0911 06:50:17.636340 639284 warnings.go:70] unknown field "spec.template.spec.containers[0].securityContext.fsGroup"
NAME: jh-gitlab-runner
LAST DEPLOYED: Wed Sep 11 06:50:17 2024
NAMESPACE: jh-gitlab-runner
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Your GitLab Runner should now be registered against the GitLab instance reachable at: "http://jhma.jihulab.net"
Runner namespace "jh-gitlab-runner" was found in runners.config template.
#############################################################################################
## WARNING: You enabled `rbac` without specifying if a service account should be created. ##
## Please set `serviceAccount.create` to either `true` or `false`. ##
## For backwards compatibility a service account will be created. ##
#############################################################################################
查看安装结果
# helm release 信息
helm ls --all-namespaces
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
jh-gitlab-runner jh-gitlab-runner 1 2024-09-11 06:50:17.139514892 +0000 UTC deployed gitlab-runner-0.68.0
# namespace,pod 信息
kubectl get ns jh-gitlab-runner
NAME STATUS AGE
jh-gitlab-runner Active 2m22s
kubectl -n jh-gitlab-runner get pods
NAME READY STATUS RESTARTS AGE
jh-gitlab-runner-gitlab-runner-5c558fb88b-lnfxm 1/1 Running 0 2m21s
可以看到 pod 已经处于 running状态。在 runner 的界面上同样可以看到 runner 的状态是 running:
点击运行中的 Runner 就会看到对应的版本信息:
Runner 测试
在极狐GitLab 实例上新建一个项目,在项目中创建 .gitlab-ci.yml文件,即可启用 CI/CD 流水线。例如可以直接在项目的页面上创建 .gitlab-ci.yml文件,然后选择一个 bash 模版:
点击提交更改就会触发 CI/CD 流水线:
点击作业查看构建日志,就可以看到使用的是上面创建的 Runner 在构建作业!