如何用 Helm Chart 安装指定版本的 GitLab Runner?

本分分享如何使用 Helm 来在 Kubernetes 集群上安装极狐GitLab Runner。整体步骤分为:Helm 的安装、vaules.yaml 文件的配置、Runner 的安装、Runner 的测试。

极狐GitLab 为 GitLab 在中国的发行版,中文版本对中国用户更友好。极狐GitLab 支持一键私有化部署,可以在 ubuntu、centos、Debian、Docker、Kubernetes 上灵活安装。安装详情可以查看极狐GitLab 官网

关联阅读

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 在构建作业!

相关推荐
fajianchen21 小时前
大厂案例——腾讯蓝鲸DevOps类应用的设计与实践
运维·devops
周杰伦_Jay1 天前
详细介绍:云原生技术细节(关键组成部分、优势和挑战、常用云原生工具)
java·云原生·容器·架构·kubernetes·jenkins·devops
Nejosi_念旧4 天前
开发常用工具
flutter·vue·gitlab·postman
yaoshengting5 天前
GitLab集成Jira
gitlab·jira
张声录16 天前
【Gossip 协议】Golang的实现库Memberlist 库简介
开发语言·后端·golang·运维开发·prometheus·devops
mrhaoxiaojun7 天前
gitlab runner正常连接 提示 作业挂起中,等待进入队列 解决办法
gitlab
铜锣烧1号7 天前
【学习笔记】GitLab 使用技巧和说明和配置和使用方法
git·python·pycharm·gitlab
极小狐7 天前
如何在 Rocky Linux 上安装极狐GitLab?
gitlab·devsecops·devops·极狐gitlab·安全合规
研究司马懿7 天前
【DevOps】Jenkins配置钉钉邮件通知
运维·pipeline·jenkins·钉钉·devops
ihengshuai7 天前
手摸手实战前端项目CI CD
前端·ci/cd·云原生·kubernetes·devops