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

在Kubernetes上使用Helm部署和运行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 就被删除。

### 安装 GitLab Runner 在 CentOS 系统上 GitLab RunnerGitLab CI/CD 的开源项目,用于运行 CI/CD 任务。在 CentOS 系统上安装 GitLab Runner 通常涉及使用 `yum` 包管理器来安装 GitLab Runner,并将其注册到 GitLab 实例中。 #### 安装 GitLab Runner 在 CentOS 上安装 GitLab Runner 的步骤如下: 1. **添加 GitLab 的官方仓库** GitLab 提供了一个官方的仓库,用于安装 GitLab Runner。可以通过以下命令添加该仓库: ```bash curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash ``` 2. **安装 GitLab Runner** 使用 `yum` 安装 GitLab Runner: ```bash sudo yum install gitlab-runner ``` 3. **验证安装** 安装完成后,可以通过以下命令验证 GitLab Runner 是否安装成功: ```bash gitlab-runner --version ``` #### 注册 GitLab Runner 安装完成后,需要将 GitLab Runner 注册到 GitLab 实例中。注册过程涉及获取 GitLab 实例的 URL 和注册令牌。 1. **获取注册令牌** 登录到 GitLab 实例,导航到 **Admin Area > Overview > Runners**,获取注册令牌。 2. **注册 Runner** 使用以下命令注册 GitLab Runner: ```bash sudo gitlab-runner register ``` 在注册过程中,需要提供以下信息: - **GitLab instance URL**: GitLab 实例的 URL。 - **Registration token**: 从 GitLab 实例中获取的注册令牌。 - **Description**: Runner 的描述。 - **Tags**: Runner 的标签(可选)。 - **Executor**: 选择执行器(如 `docker`、`shell` 等)。 3. **启动 GitLab Runner** 注册完成后,启动 GitLab Runner 并设置为开机自启: ```bash sudo systemctl start gitlab-runner sudo systemctl enable gitlab-runner ``` #### 使用 Docker 安装 GitLab Runner 如果希望使用 Docker安装 GitLab Runner,可以通过以下命令启动 GitLab Runner 容器: ```bash docker run -d --name gitlab-runner --restart always \ -v /opt/gitlab-runner/config:/etc/gitlab-runner \ -v /var/run/docker.sock:/var/run/docker.sock \ gitlab/gitlab-runner:latest ``` #### 验证 GitLab Runner 版本 安装完成后,可以通过以下命令查看 GitLab Runner 的版本信息: ```bash docker exec -it gitlab-runner gitlab-runner --version ``` #### 示例代码 以下是一个简单的脚本示例,用于注册 GitLab Runner: ```bash sudo gitlab-runner register \ --non-interactive \ --url "https://gitlab.example.com/" \ --registration-token "your-registration-token" \ --description "docker-runner" \ --tags "docker" \ --executor "docker" \ --docker-image "alpine:latest" ``` #### 注意事项 - **版本选择**:如果需要安装特定版本的 GitLab Runner,可以使用 `yum list gitlab-runner --showduplicates` 查看可用版本,并通过 `sudo yum install gitlab-runner-<version>` 安装指定版本[^2]。 - **Debian 用户**:对于 Debian 用户,建议使用 APT pinning 来管理 GitLab Runner 的版本[^2]。 #### 相关问题 1. 如何在 Ubuntu 上安装 GitLab Runner? 2. 如何在 Docker运行 GitLab Runner? 3. 如何升级 GitLab Runner 到最新版本? 4. 如何配置 GitLab Runner 使用特定的执行器? 5. 如何在 GitLab 中注册多个 Runner
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值