教程:配置 GitLab Runner 使用 Google Kubernetes Engine
本教程介绍如何配置 GitLab Runner 使用 Google Kubernetes Engine (GKE) 来运行作业。
在本教程中,你将配置 GitLab Runner 在 Standard cluster mode 下运行作业。
要配置 GitLab Runner 使用 GKE:
开始之前
在配置 GitLab Runner 使用 GKE 之前,你必须:
- 拥有一个至少拥有 Maintainer 角色的项目。如果你没有项目,可以 创建一个。
- 获取项目 runner 认证令牌。
- 安装 GitLab Runner。
设置你的环境
安装用于在 GKE 中配置和使用 GitLab Runner 的工具。
- 安装和配置 Google Cloud CLI。你使用 Google Cloud CLI 连接到集群。
- 安装和配置 kubectl。你使用 kubectl 从本地环境与远程集群通信。
创建并连接到集群
本步骤介绍如何创建集群并连接到它。连接到集群后,你将使用 kubectl 与其交互。
-
在 Google Cloud Platform 中,创建一个 standard 集群。
-
安装 kubectl 认证插件:
gcloud components install gke-gcloud-auth-plugin -
连接到集群:
gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_LOCATION -
查看集群配置:
kubectl config view -
验证你是否已连接到集群:
kubectl config current-context
安装和配置 Kubernetes Operator
现在你已经有了一个集群,可以开始安装和配置 Kubernetes Operator 了。
-
安装
cert-manager。如果你已经安装了证书管理器,请跳过此步骤:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml -
安装 Operator Lifecycle Manager (OLM),这是一个管理在集群上运行的 Kubernetes Operators 的工具:
curl --silent --location "https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.24.0/install.sh" \ | bash -s v0.24.0 -
安装 Kubernetes Operator:
kubectl create -f https://operatorhub.io/install/gitlab-runner-operator.yaml -
仅适用于 Operator Lifecycle Manager v0.25.0 及更高版本。添加你自己的证书管理器或使用
cert-manager。-
要添加你自己的证书提供者:
-
在
gitlab-runner-operator.yaml中,在env设置中定义证书命名空间和证书名称:cat > gitlab-runner-operator.yaml << EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: gitlab-runner-operator namespace: gitlab-ns spec: channel: stable name: gitlab-runner-operator source: operatorhubio-catalog ca: webhook-server-cert sourceNamespace: olm config: env: - name: CERTIFICATE_NAMESPACE value: cert_namespace_desired_value - name: CERTIFICATE_NAME value: cert_name_desired_value EOF -
将
gitlab-runner-operator.yaml应用到 Kubernetes 集群:kubectl apply -f gitlab-runner-operator.yaml
-
-
要使用
cert-manager:-
使用
certificate-issuer-install.yaml在默认命名空间中安装Certificate和Issuer,除了安装 operator:cat > certificate-issuer-install.yaml << EOF apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/component: controller-manager app.kubernetes.io/managed-by: olm app.kubernetes.io/name: gitlab-runner-operator name: gitlab-runner-system --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: gitlab-runner-serving-cert namespace: gitlab-runner-system spec: dnsNames: - gitlab-runner-webhook-service.gitlab-runner-system.svc - gitlab-runner-webhook-service.gitlab-runner-system.svc.cluster.local issuerRef: kind: Issuer name: gitlab-runner-selfsigned-issuer secretName: webhook-server-cert --- apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: gitlab-runner-selfsigned-issuer namespace: gitlab-runner-system spec: selfSigned: {} EOF -
将
certificate-issuer-install.yaml应用到 Kubernetes 集群:kubectl create -f certificate-issuer-install.yaml
-
-
-
创建一个包含来自你的 GitLab 项目的
runner-registration-token的 secret:cat > gitlab-runner-secret.yml << EOF apiVersion: v1 kind: Secret metadata: name: gitlab-runner-secret type: Opaque stringData: runner-token: YOUR_RUNNER_AUTHENTICATION_TOKEN EOF -
应用 secret:
kubectl apply -f gitlab-runner-secret.yml -
创建自定义资源定义文件并包含以下信息:
cat > gitlab-runner.yml << EOF apiVersion: apps.gitlab.com/v1beta2 kind: Runner metadata: name: gitlab-runner spec: gitlabUrl: https://gitlab.example.com buildImage: alpine token: gitlab-runner-secret EOF -
应用自定义资源定义文件:
kubectl apply -f gitlab-runner.yml
就是这样!你已经配置了 GitLab Runner 使用 GKE。 在下一步中,你可以检查你的配置是否正常工作。
验证你的配置
要检查 runners 是否在 GKE 集群中运行,你可以:
-
使用以下命令:
kubectl get pods你应该看到以下输出。这表明你的 runners 正在 GKE 集群中运行:
NAME READY STATUS RESTARTS AGE gitlab-runner-hash-short_hash 1/1 Running 0 5m -
在 GitLab 中检查作业日志:
- 在左侧边栏,选择 Search or go to 并找到你的项目。
- 选择 Build > Jobs 并找到作业。
- 要查看作业日志,选择作业状态。