一、介绍
GitLab Runner 是一个开源软件系统,它运行 CI/CD 作业并将结果发送到 GitLab。运行器应用程序在要用于构建的计算机上安装和配置。GitLab 中的每个项目都可以有自己的运行器,每个运行器都是一个容器,可以根据需要启动和停止。
Kubernetes 是一个开源软件系统,可自动部署、扩展和维护容器化应用程序。它的工作原理是将应用程序容器分组到逻辑单元中进行访问和管理。
Kubernetes 上的 GitLab runner 用于管理 CI/CD 项目。本教程解释了如何在 Vultr Kubernetes Engine 上安装 GitLab Runner。
二、准备工作
若要完成本教程,需要以下各项:
- 一个 GitLab 帐户
- 已部署的 Vultr Kubernetes Engine 集群,至少具有 3 个节点
- 在您的机器中安装和配置的 CLI
kubectl
- 在您的计算机上本地安装的 Helm 客户端
- Git 安装在您的计算机上
三、设置 GitLab 运行程序
从 GitLab 获取运行器详细信息。这些是运行器 URL 和令牌。令牌用于向 GitLab 验证运行器。在项目的目录中,从设置> CI/CD >运行器设置页面获取详细信息,如下所示。
复制运行器 URL 和注册令牌,并保存它们以供以后的 GitLab 运行器配置使用。
四、在 Vultr Kubernetes Engine (VKE) 上安装 Runner
要在 VKE 集群上部署运行器,您必须配置对集群的访问。这是使用kubeconfig文件完成的。kubeconfig 文件用于提供对 Kubernetes API 服务器的访问。它被其他 Kubernetes 组件用来查找合适的 API 服务器并进行身份验证。kubectl
- 获取 VKE 集群的 kubeconfig 文件。
- 在您的 Vultr 帐户中,导航到 >Kubernetes 的产品> {您的集群} > 概述。
- 单击仪表板右上角的 下载配置 按钮。
- 运行以下命令以访问您的 VKE 集群:
$ kubectl --kubeconfig={PATH TO THE VKE CLUSTER CONFIG FILE} get nodes
预期输出:
NAME STATUS ROLES AGE VERSION gitlab-runner-1e796f3ba099 Ready <none> 18d v1.24.4 gitlab-runner-4c11d4f0a353 Ready <none> 18d v1.24.4 gitlab-runner-4ca2d1cacafb Ready <none> 18d v1.24.4
- 使用 kubectl 创建一个名为 gitlab-runner 的命名空间,如下所示:
$ kubectl --kubeconfig={PATH TO THE VKE CLUSTER CONFIG FILE} create namespace gitlab
命名空间用于隔离单个 Kubernetes 集群中的资源。例如,您可以使用命名空间将多个应用程序部署到同一集群,而不会相互干扰。这有助于维护和未来的升级。
- 通过运行以下命令获取 GitLab Runner 的 Helm 图表副本:
git clone https://gitlab.com/gitlab-org/charts/gitlab-runner.git
或者,如果您使用的是 ssh 密钥,请运行以下命令。
git clone git@gitlab.com:gitlab-org/charts/gitlab-runner.git
- 导航到克隆的存储库并在文件中配置 GitLab 运行程序,如下所示:
values.yaml
## GitLab Runner Image image: registry.gitlab.com/gitlab-org/gitlab-runner:alpine-v15.3.0 ## Specify a imagePullPolicy for the main runner deployment imagePullPolicy: IfNotPresent ## Timeout, in seconds, for liveness and readiness probes of a runner pod. probeTimeoutSeconds: 300 ## The GitLab Server URL (with protocol) that want to register the runner against ## gitlabUrl: http://gitlab.com/ ## The Registration Token for adding new Runners to the GitLab Server. ## runnerRegistrationToken: "Token" ## For RBAC support: rbac: create: true ## rules: - resources: ["configmaps", "pods", "pods/attach", "secrets", "services"] verbs: ["get", "list", "watch", "create", "patch", "update", "delete"] - apiGroups: [""] resources: ["pods/exec"] verbs: ["create", "patch", "delete"] ## Configuration for the Pods that the runner launches for each new job ## runners: config: | [[runners]] [runners.kubernetes] namespace = "{{.Release.Namespace}}" image = "ubuntu:16.04"
注意为避免此错误,请按如下方式配置文件:
Readiness probe failed
templates\deployment.yaml
livenessProbe: ... initialDelaySeconds: 300 ... readinessProbe: ... initialDelaySeconds: 300 ...
- 配置 Helm 图表后,使用以下命令部署运行器:
helm --kubeconfig={PATH_TO_VKE_CLUSTER_CONFIG FILE} install --namespace <NAMESPACE> gitlab-runner -f <PATH_TO_CONFIG_VALUES_FILE> gitlab/gitlab-runner
预期输出:
NAME: gitlab-runner LAST DEPLOYED: Thu Nov 17 17:22:08 2022 NAMESPACE: gitlab STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: Your GitLab Runner should now be registered against the GitLab instance reachable at: "https://gitlab.com/" Runner namespace "gitlab" was found in runners.config template.
其中:
<NAMESPACE>
是 Kubernetes 命名空间。<PATH_TO_CONFIG_VALUES_FILE>
是通往掌舵图的路径。在这种情况下,文件。*.tgz
- 通过运行以下命令检查容器或部署的状态:
kubectl --kubeconfig={PATH_TO_VKE_CLUSTER_CONFIG FILE} describe pods gitlab-runner --namespace=<NAMESPACE>
预期输出:
... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 30s default-scheduler Successfully assigned gitlab-b/gitlab-runner-85d94848d7-zs5q9 to gitlab-runner-4c11d4f0a353 Normal Pulling 30s kubelet Pulling image "registry.gitlab.com/gitlab-org/gitlab-runner:alpine-v15.3.0" Normal Pulled 25s kubelet Successfully pulled image "registry.gitlab.com/gitlab-org/gitlab-runner:alpine-v15.3.0" in 4.909922707s Normal Created 25s kubelet Created container gitlab-runner Normal Started 25s kubelet Started container gitlab-runner
要检查 Pod 是否已启动,请转到已注册的 GitLab 运行程序下的 GitLab。流道将显示如下图所示。
五、总结
您已经使用 Helm Chart 在 Vultr Kubernetes Engine (VKE) 集群中完成了 GitLab Runner 的安装。现在,您可以使用刚刚安装的运行器管理 CD/CI 项目。
Vultr近期优惠:https://zhujibaike.com/43.html