以 Kubernetes 的方式来运行极狐 GitLab Runner
前面分别讲述了用安装包在 Ubuntu 上安装和运行极狐GitLab Runner 以及用 Docker 来运行极狐GitLab Runner。本文将讲述用 Kubernetes 来安装运行极狐 GitLab Runner。
Runner 的安装和注册
可以用极狐 GitLab Runner Helm Chart 来安装配置极狐 GitLab Runner。用这种方法安装的 Runner 使用 Kubernetes 做执行器,当有 CI/CD Pipeline job 需要执行的时候,会有一个 pod 来完成 job 构建。
01 前提条件
极狐 GitLab 实例需要和 Kubernetes 集群能够交互
Kubernetes 版本为 1.4+
已安装好的 kubectl 和 helm(helm 2 和 helm 3 都可以,本文用 helm 3)
02 Helm Chart 准备
首先添加一下极狐 GitLab 的 helm chart repo:
接下来就可以用 helm install 命令来用极狐 GitLab Runner Helm Chart[1] 来完成安装。
安装之前可以自定义一下 values.yaml 文件,values.yaml 的详细配置可以在极狐 GitLab Runner Helm Chart 官网来查看。
重要参数说明:
gitlabUrl:极狐 GitLab 实例的 URL(本例为 https://jh-xiaomage.gitlab.cn, 如何安装极狐 GitLab 实例可以查看文章使用 Omnibus 来安装极狐GitLab );
runnerRegistrationToken:注册 Runner 时所需要的 Token,可以在 Settings --> CI/CD --> Runners 里面查看;
concurrent:并行运行 Job 的最大值;
checkInterval:极狐 GitLab 实例检查新构建的时间间隔;
runner:runner 的配置内容,包括 name,tag 等等,这些内容最后会以 config.toml 文件的形式呈现;
更多参数的配置和定义可以查看极狐 GitLab Helm Chart values.yaml[2] 文件详情。
03 Helm 安装
先创建一个 namespace:
接着用如下命令进行安装:
查看 pod 状态:
可以进入 pod 查看一下:
可以看到 pod 里面已经内置了 gitlab-runner 命令,且有注册成功的 Runner 实例,名称为 kubernetes-runner,我们在 Runner 的控制台上检查一下:
可以看到 Runner 控制台上多了一个名为 kubernetes-runner,tag 为 kubernetes、runner 的 Runner 实例,而这就是用 Helm Chart 安装的,以 Kubernetes 方式来运行的极狐 GitLab Runner 实例。下面就来看看如何使用它完成 CI/CD Pipeline Job 的构建。
其他两个实例是用安装包、docker 的方式来运行的,具体流程可以查看文章用安装包在 Ubuntu 上安装和运行极狐GitLab Runner 以及用 Docker 来运行极狐GitLab Runner。
04 Runner 的使用
依旧使用在 Ubuntu 上安装使用极狐GitLab Runner 中的 Demo,现在让以 Kubernetes 运行的 Runner 来完成 CI/CD Pipeline 的执行。可以在 .gitlab-ci.yml 的 job 中增加 tags 字段,如果 tags 的内容和 Runner 的 tag(kubernetes 和 runner) 相匹配,则此 Runner 被分配用来执行此次 CI/CD Pipeline。文件内容如下:
接着直接触发 CI/CD Pipeline 即可,查看构建结果:
查看构建日志:
可以看到此次构建是在名为 kubernetes-runner 的 Runner 上进行的。
整个过程也可以看一下 pod 的变化:
可以看到,新的 CI/CD Pipeline Job 会有一个新的 pod 产生来完成整个构建。
以 Kubernetes 来运行极狐 GitLab Runner,本质上就是用 Kubernetes 内置的资源(service、deployment、configmap、secret 等)完成极狐 GitLab Runner 在 Kubernetes 上的安装,安装的过程就会完成 Runner 的注册。当有 CI/CD Pipeline Job 需要构建的时候,就会有一个新的 pod 生成来完成此次构建,构建结束,pod 就被删除。
引用链接
https://gitlab.com/gitlab-org/charts/gitlab-runner/-/tree/mai
https://gitlab.com/gitlab-org/charts/gitlab-runner/-/blob/main/values.yaml
版权声明: 本文为 InfoQ 作者【极狐GitLab】的原创文章。
原文链接:【http://xie.infoq.cn/article/f742252419c9eb2c74f246c21】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论