教程:如何在 Vultr Kubernetes Engine 上安装 GitLab Runner

一、介绍

GitLab Runner 是一个开源软件系统,它运行 CI/CD 作业并将结果发送到 GitLab。运行器应用程序在要用于构建的计算机上安装和配置。GitLab 中的每个项目都可以有自己的运行器,每个运行器都是一个容器,可以根据需要启动和停止。

Kubernetes 是一个开源软件系统,可自动部署、扩展和维护容器化应用程序。它的工作原理是将应用程序容器分组到逻辑单元中进行访问和管理。

Kubernetes 上的 GitLab runner 用于管理 CI/CD 项目。本教程解释了如何在 Vultr Kubernetes Engine 上安装 GitLab Runner。

二、准备工作

若要完成本教程,需要以下各项:

  • 一个 GitLab 帐户
  • 已部署的 Vultr Kubernetes Engine 集群,至少具有 3 个节点
  • 在您的机器中安装和配置的 CLIkubectl
  • 在您的计算机上本地安装的 Helm 客户端
  • Git 安装在您的计算机上

三、设置 GitLab 运行程序

从 GitLab 获取运行器详细信息。这些是运行器 URL 和令牌。令牌用于向 GitLab 验证运行器。在项目的目录中,从设置> CI/CD >运行器设置页面获取详细信息,如下所示。

复制运行器 URL 和注册令牌,并保存它们以供以后的 GitLab 运行器配置使用。

四、在 Vultr Kubernetes Engine (VKE) 上安装 Runner

要在 VKE 集群上部署运行器,您必须配置对集群的访问。这是使用kubeconfig文件完成的。kubeconfig 文件用于提供对 Kubernetes API 服务器的访问。它被其他 Kubernetes 组件用来查找合适的 API 服务器并进行身份验证。kubectl

  1. 获取 VKE 集群的 kubeconfig 文件。
    • 在您的 Vultr 帐户中,导航到 >Kubernetes 的产品> {您的集群} > 概述
    • 单击仪表板右上角的 下载配置 按钮。

  1. 运行以下命令以访问您的 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     
    
  2. 使用 kubectl 创建一个名为 gitlab-runner 的命名空间,如下所示:
    $ kubectl --kubeconfig={PATH TO THE VKE CLUSTER CONFIG FILE} create namespace gitlab
    

    命名空间用于隔离单个 Kubernetes 集群中的资源。例如,您可以使用命名空间将多个应用程序部署到同一集群,而不会相互干扰。这有助于维护和未来的升级。

  3. 通过运行以下命令获取 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
    
  4. 导航到克隆的存储库并在文件中配置 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 failedtemplates\deployment.yaml

      livenessProbe:
    
          ...
    
          initialDelaySeconds: 300
    
          ...
    
      readinessProbe:
    
          ...
    
          initialDelaySeconds: 300
    
          ...
    
  5. 配置 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
  6. 通过运行以下命令检查容器或部署的状态:
    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

赞(0)
未经允许不得转载:主机百科 » 教程:如何在 Vultr Kubernetes Engine 上安装 GitLab Runner