介紹
GitLab Runner 是一個開源軟件系統,可以運行 CI/CD 作業並將結果發送到 GitLab。 runner 應用程序已安裝並配置在您要用於構建的機器上。 GitLab 中的每個項目都可以有自己的運行器,每個運行器都是一個容器,可以根據需要啟動和停止。
Kubernetes 是一個開源軟件系統,可以自動部署、擴展和維護容器化應用程序。 它通過將應用程序容器分組為邏輯單元來進行訪問和管理。
Kubernetes 上的 GitLab runner 用於管理 CI/CD 項目。 本教程介紹如何在 Vultr Kubernetes Engine 上安裝 GitLab Runner。
以前的要求
要學習本教程,您需要具備以下條件:
-
到GitLab帳戶
-
已部署Vultr Kubernetes 引擎集群至少有 3 個節點
-
這
kubectl
在您的計算機上安裝和配置 CLI -
方向舵客戶端在您的機器上本地安裝
-
Git 安裝在你的機器上
GitLab 運行器配置
從 GitLab 獲取跑步者詳細信息。 這些是代理 URL 和令牌。 該令牌用於向 GitLab 驗證代理。 在您的項目目錄中,獲取詳細信息設置>持續集成/持續集成>跑步者配置頁面,如下圖。
複製運行器 URL 和註冊令牌並保存它們以供以後 GitLab 運行器配置。
在 Vultr Kubernetes Engine (VKE) 上安裝 Runner
要將代理部署到您的 VKE 集群,您需要配置對集群的訪問。 這是使用一個kubeconfig程序。 kubeconfig 文件用於提供對 Kubernetes API 服務器的訪問。 被使用 kubectl
和其他 Kubernetes 組件來找到正確的 API 服務器並進行身份驗證。
-
獲取 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 chart 的副本:
git clone https://gitlab.com/gitlab-org/charts/gitlab-runner.git
或者,如果您使用的是 ssh 密鑰,請運行以下命令。
git clone [email protected]:gitlab-org/charts/gitlab-runner.git
-
導航到克隆的存儲庫並在上設置您的 GitLab Runner
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: https://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
錯誤,設置templatesdeployment.yaml
文件如下:livenessProbe: ... initialDelaySeconds: 300 ... readinessProbe: ... initialDelaySeconds: 300 ...
-
配置 Helm Chart 後,使用以下命令部署運行器:
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
程序。
-
-
通過運行以下命令檢查 pod 或 deployment 的狀態:
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 項目。
文章標題 名稱(可選) 電子郵件(可選) 描述
發送建議