以 Kubernetes 的方式来安装运行极狐GitLab Runner

目录

Runner 的安装和注册

前提条件

Helm Chart 准备

Helm 安装

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 构建。

前提条件

  • 极狐GitLab 实例需要和 Kubernetes 集群能够交互
  • Kubernetes 版本为 1.4+
  • 已安装好的kubectlhelm(helm 2 和 helm 3 都可以,本文用 helm 3)

Helm Chart 准备

首先添加一下极狐GitLab 的 helm chart repo

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

接下来就可以用 helm install 命令来用极狐GitLab Runner Helm Chart 来完成安装。

安装之前可以自定义一下 values.yaml 文件,values.yaml 的详细配置可以在极狐GitLab Runner Helm Chart 官网来查看。

以下是此次演示所用的 values.yaml 文件内容:

imagePullPolicy: IfNotPresent
gitlabUrl: "https://jh-xiaomage.gitlab.cn"
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
  fsGroup: 65533

重要参数说明:

  • 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 文件详情。

Helm 安装

先创建一个 namespace

$ kubectl create ns jh-k8s-runner

接着用如下命令进行安装:

$ helm install --namespace jh-k8s-runner jh-gitlab-runner -f value.yaml gitlab/gitlab-runner
NAME: jh-gitlab-runner
LAST DEPLOYED: Wed Dec  8 23:07:50 2021
NAMESPACE: jh-k8s-runner
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Your GitLab Runner should now be registered against the GitLab instance reachable at: "https://jh-xiaomage.gitlab.cn"

Runner namespace "jh-k8s-runner" was found in runners.config template.

查看 pod 状态

$ kubectl -n jh-k8s-runner get pods -w
NAME                                              READY   STATUS    RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-767779fcc8-jpszk   0/1     Running   0          13s
jh-gitlab-runner-gitlab-runner-767779fcc8-jpszk   1/1     Running   0          21s

可以进入 pod 查看一下:

$ gitlab-runner --version
Version:      14.1.0
Git revision: 8925d9a0
Git branch:   14-1-stable
GO version:   go1.13.8
Built:        2021-07-20T11:43:26+0000
OS/Arch:      linux/amd64

$ gitlab-runner list
Runtime platform                                    arch=amd64 os=linux pid=45507 revision=8925d9a0 version=14.1.0
Listing configured runners                          ConfigFile=/home/gitlab-runner/.gitlab-runner/config.toml
kubernetes-runner                                   Executor=kubernetes Token=5x8xMPnsgq7zqaWNxUvL URL=https://jh-xiaomage.gitlab.

可以看到 pod 里面已经内置了 gitlab-runner 命令,且有注册成功的 Runner 实例,名称为 kubernetes-runner,我们在 Runner 的控制台上检查一下:

 

可以看到 Runner 控制台上多了一个名为 kubernetes-runner,tag 为 kubernetesrunner 的 Runner 实例,而这就是用 Helm Chart 安装的,以 Kubernetes 方式来运行的极狐GitLab Runner 实例。下面就来看看如何使用它完成 CI/CD Pipeline Job 的构建。

其他两个实例是用安装包、docker 的方式来运行的,具体流程可以查看文章用安装包在 Ubuntu 上安装和运行极狐GitLab Runner 以及用 Docker 来运行极狐GitLab Runner

Runner 的使用

依旧使用在 Ubuntu 上安装使用极狐GitLab Runner中的 Demo,现在让以 Kubernetes 运行的 Runner 来完成 CI/CD Pipeline 的执行。可以在 .gitlab-ci.yml 的 job 中增加 tags 字段,如果 tags 的内容和 Runner 的 tag(kubernetes 和 runner) 相匹配,则此 Runner 被分配用来执行此次 CI/CD Pipeline。文件内容如下:

image: docker:20.10.7
   
services:
  - docker:20.10.7-dind

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 即可,查看构建结果:

查看构建日志:

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

整个过程也可以看一下 pod 的变化:

$ kubectl -n jh-k8s-runner get pods -w
NAME                                              READY   STATUS    RESTARTS   AGE
jh-gitlab-runner-gitlab-runner-767779fcc8-jpszk   1/1     Running   0          15h
runner-5x8xmpns-project-2-concurrent-08jd2w       0/3     Pending   0          0s
runner-5x8xmpns-project-2-concurrent-08jd2w       0/3     Pending   0          0s
runner-5x8xmpns-project-2-concurrent-08jd2w       0/3     Init:0/1   0          0s
runner-5x8xmpns-project-2-concurrent-08jd2w       0/3     PodInitializing   0          2s
runner-5x8xmpns-project-2-concurrent-08jd2w       3/3     Running           0          3s
runner-5x8xmpns-project-2-concurrent-08jd2w       3/3     Running             0          5s
runner-5x8xmpns-project-2-concurrent-08jd2w       3/3     Terminating       0          23s

可以看到,新的 CI/CD Pipeline Job 会有一个新的 pod 产生来完成整个构建。

以 Kubernetes 来运行极狐GitLab Runner,本质上就是用 Kubernetes 内置的资源(service、deployment、configmap、secret 等)完成极狐GitLab Runner 在 Kubernetes 上的安装,安装的过程就会完成 Runner 的注册。当有 CI/CD Pipeline Job 需要构建的时候,就会有一个新的 pod 生成来完成此次构建,构建结束,pod 就被删除。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值