GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。
上一篇内容中,我们已经利用 kind 创建好了一个本地 kubernetes 集群。现在在此集群上安装极狐GitLab Runner。
添加 Helm Chart
需要先添加极狐GitLab Runner Helm Chart:
$ helm repo add gitlab-jh https://charts.gitlab.cn
$ helm repo list
NAME URL
gitlab https://charts.gitlab.cn
创建 Runner token
本文演示为某个项目创建一个 Runner,当然,Runner 可以是实例、群组级别的。但是创建 token 的方法类似。在项目 --> 设置 -->CI/CD --> Runner 中找到新建 Runner 选项:
填写对应的信息,点击创建 Runner:
然后在出现的界面中可以看到 Runner 的token,以 glrt
开头:
保存此 token。
配置 values.yml 文件
使用 helm install
命令完成安装。关于极狐GitLab Helm Chart 的详细内容可以查看官网。
以下是此次演示所用的 values.yaml 文件内容:
imagePullPolicy: IfNotPresent
gitlabUrl: "https://jihulab.com"
runnerRegistrationToken: "glrt-KxsShxxxxxf4dyTx"
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: kind-runner
tags: "kind,k8s"
securityContext:
runAsUser: 100
fsGroup: 65533
将上一步获取的 token 替换到此 values.yml 文件中。
接着用 Helm 创建一个命名空间:
$ kubectl create ns jh-gitlab
namespace/jh-gitlab created
执行如下命令进行安装:
$ helm install --namespace jh-gitlab jh-gitlab-runner -f values.yml gitlab-jh/gitlab-runner
W0224 17:07:04.872613 8813 warnings.go:70] unknown field "spec.template.spec.containers[0].securityContext.fsGroup"
NAME: jh-gitlab-runner
LAST DEPLOYED: Sat Feb 24 17:07:04 2024
NAMESPACE: jh-gitlab
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Your GitLab Runner should now be registered against the GitLab instance reachable at: "https://jihulab.com"
Runner namespace "jh-gitlab" was found in runners.config template.
查看 Runner pod 的状态:
kubectl -n jh-gitlab get pods
NAME READY STATUS RESTARTS AGE
jh-gitlab-runner-gitlab-runner-6b796547bc-qgf8j 0/1 ContainerCreating 0 24s
jh-gitlab-runner-gitlab-runner-6b796547bc-qgf8j 0/1 Running 0 52s
jh-gitlab-runner-gitlab-runner-6b796547bc-qgf8j 1/1 Running 0 61s
此时可以在项目的 Runner 界面看到 Runner 创建成功:
此 Runner 的tag 为 kind
,k8s
。接下来就可以使用此 Runner 测试了。
在项目的 .gitlab-ci.yml
文件中,使用 tags
来标记,使用此 Runner 构建 CI/CD:
default:
tags:
- kind
可以在 CI/CD 流水线构建中看到结果:
从构建结果看,使用的是 kind 创建的 Runner 运行的此 Job。还可以从 pod 状态看整个运行过程:
$ kubectl -n jh-gitlab get pods -w
NAME READY STATUS RESTARTS AGE
jh-gitlab-runner-gitlab-runner-6b796547bc-qgf8j 1/1 Running 0 4m45s
runner-kxsshpgm3-project-183534-concurrent-0-a5tobeq7 2/2 Running 0 57s
runner-kxsshpgm3-project-183534-concurrent-0-a5tobeq7 2/2 Terminating 0 68s
runner-kxsshpgm3-project-183534-concurrent-0-a5tobeq7 2/2 Terminating 0 68s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 0/2 Pending 0 0s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 0/2 Pending 0 0s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 0/2 Init:0/1 0 0s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 0/2 PodInitializing 0 1s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 2/2 Running 0 2s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 2/2 Terminating 0 22s
runner-kxsshpgm3-project-183534-concurrent-0-t65n2l7r 2/2 Terminating 0 22s
kind 的使用还是很方便的,尤其在云原生场景下,非常适合和极狐GitLab Runner 配合使用来运行 CI/CD 作业。
更多关于极狐GitLab 的最佳实践,可以搜索关注公众号【极狐GitLab】或者登录极狐GitLab 官网进行学习。