Help us learn about your current experience with the documentation. Take the survey.

教程:配置 GitLab Runner 使用 Google Kubernetes Engine

本教程介绍如何配置 GitLab Runner 使用 Google Kubernetes Engine (GKE) 来运行作业。

在本教程中,你将配置 GitLab Runner 在 Standard cluster mode 下运行作业。

要配置 GitLab Runner 使用 GKE:

  1. 设置你的环境
  2. 创建并连接到集群
  3. 安装和配置 Kubernetes Operator
  4. 可选。验证配置是否成功

开始之前

在配置 GitLab Runner 使用 GKE 之前,你必须:

设置你的环境

安装用于在 GKE 中配置和使用 GitLab Runner 的工具。

  1. 安装和配置 Google Cloud CLI。你使用 Google Cloud CLI 连接到集群。
  2. 安装和配置 kubectl。你使用 kubectl 从本地环境与远程集群通信。

创建并连接到集群

本步骤介绍如何创建集群并连接到它。连接到集群后,你将使用 kubectl 与其交互。

  1. 在 Google Cloud Platform 中,创建一个 standard 集群。

  2. 安装 kubectl 认证插件:

    gcloud components install gke-gcloud-auth-plugin
  3. 连接到集群:

    gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_LOCATION
  4. 查看集群配置:

    kubectl config view
  5. 验证你是否已连接到集群:

    kubectl config current-context

安装和配置 Kubernetes Operator

现在你已经有了一个集群,可以开始安装和配置 Kubernetes Operator 了。

  1. 安装 cert-manager。如果你已经安装了证书管理器,请跳过此步骤:

    kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
  2. 安装 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
  3. 安装 Kubernetes Operator:

    kubectl create -f https://operatorhub.io/install/gitlab-runner-operator.yaml
  4. 仅适用于 Operator Lifecycle Manager v0.25.0 及更高版本。添加你自己的证书管理器或使用 cert-manager

    • 要添加你自己的证书提供者:

      1. 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
      2. gitlab-runner-operator.yaml 应用到 Kubernetes 集群:

        kubectl apply -f gitlab-runner-operator.yaml
    • 要使用 cert-manager

      1. 使用 certificate-issuer-install.yaml 在默认命名空间中安装 CertificateIssuer,除了安装 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
      2. certificate-issuer-install.yaml 应用到 Kubernetes 集群:

        kubectl create -f certificate-issuer-install.yaml
  5. 创建一个包含来自你的 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
  6. 应用 secret:

    kubectl apply -f gitlab-runner-secret.yml
  7. 创建自定义资源定义文件并包含以下信息:

     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
  8. 应用自定义资源定义文件:

    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 中检查作业日志:

    1. 在左侧边栏,选择 Search or go to 并找到你的项目。
    2. 选择 Build > Jobs 并找到作业。
    3. 要查看作业日志,选择作业状态。