使用 k3d 来运行极狐GitLab Runner

使用 k3d 来运行极狐GitLab Runner,第1张

目录

k3d

k3d 的安装

k3d 的使用

极狐GitLab Runner

用 k3d 运行极狐GitLab Runner

Helm 的安装

极狐GitLab Runner 的安装

极狐GitLab CI/CD

k3d

k3d是一个轻量级的包装器,主要用于在 docker 中运行 k3s(k3s 是 Rancher Lab 发行的一个轻量级的 Kubernetes 发行版)。借助 k3d 可以很方便的快速创建一个单节点或多节点的 k3s集群,方便在本地的 Kubernetes 集群上进行开发。

k3d 的安装

k3d 的安装非常简单,在其官网上有非常详细的安装教程。本文使用脚本的方式来安装最新版本,执行如下命令即可:

$ curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash

可以用 --version--help 来查看安装是否成功:

$  k3d --version
k3d version v5.4.1
k3s version v1.22.7-k3s1 (default)
k3d 的使用
  • 前提

k3d 的使用前提是要有 dockerkubectl 环境,安装两者的官网指导安装即可

  • 使用

使用 k3d 快速创建一个 Kubernetes 集群:

$ k3d cluster create devops-is-shit
INFO[0000] Prep: Network
INFO[0000] Created network 'k3d-devops-is-shit'
INFO[0000] Created image volume k3d-devops-is-shit-images
INFO[0000] Starting new tools node...
INFO[0001] Creating node 'k3d-devops-is-shit-server-0'
INFO[0002] Pulling image 'ghcr.io/k3d-io/k3d-tools:5.4.1'
INFO[0010] Pulling image 'docker.io/rancher/k3s:v1.22.7-k3s1'
INFO[0089] Creating LoadBalancer 'k3d-devops-is-shit-serverlb'
INFO[0091] Pulling image 'ghcr.io/k3d-io/k3d-proxy:5.4.1'
INFO[0134] Starting Node 'k3d-devops-is-shit-tools'
INFO[0338] Using the k3d-tools node to gather environment information
INFO[0338] HostIP: using network gateway 172.18.0.1 address
INFO[0338] Starting cluster 'devops-is-shit'
INFO[0338] Starting servers...
INFO[0338] Starting Node 'k3d-devops-is-shit-server-0'
INFO[0343] All agents already running.
INFO[0343] Starting helpers...
INFO[0343] Starting Node 'k3d-devops-is-shit-serverlb'
INFO[0350] Injecting records for hostAliases (incl. host.k3d.internal) and for 2 network members into CoreDNS configmap...
INFO[0352] Cluster 'devops-is-shit' created successfully!
INFO[0352] You can now use it like this:
kubectl cluster-info

可以查看创建集群的信息:

$ kubectl cluster-info
Kubernetes control plane is running at https://0.0.0.0:33237
CoreDNS is running at https://0.0.0.0:33237/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://0.0.0.0:33237/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.

$ kubectl get nodes
NAME                          STATUS   ROLES                  AGE   VERSION
k3d-devops-is-shit-server-0   Ready    control-plane,master   13m   v1.22.7+k3s1

接下来就可以体验这个集群了。

极狐GitLab Runner

极狐GitLab Runner 是极狐GitLab 实现 CI/CD 的执行器,每当有 CI/CD Pipeline 需要构建时,就会根据调度来选择一个 Runner 执行此次 CI/CD Pipeline 的构建。可以选择极狐GitLab默认的 Runner,但是很多都是共享 Runner,在使用高峰期会碰到排队的情况,需要等待。通过自建 Runner 来解决这个问题,而且自建 Runner 可以自己随意嚯嚯。下面就给大家演示一下如何在 k3d 环境上安装和运行极狐GitLab Runner。

用 k3d 运行极狐GitLab Runner Helm 的安装

在 k3d 上安装极狐GitLab Runner 本质上就是在 Kubernetes 集群上进行安装,所以 Helm 是很好的选择,必须要先安装 Helm。

可以根据Helm 官网的指导来完成 Helm 的安装,并进行确认:

$ helm version
version.BuildInfo{Version:"v3.7.1", GitCommit:"1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4", GitTreeState:"clean", GoVersion:"go1.16.9"}
极狐GitLab Runner 的安装
  • 极狐GitLab Runner Helm Repo 的添加
$ helm repo add k3d-jh https://charts.gitlab.io
"k3d-jh" has been added to your repositories
  • 定制 values.yaml

通过修改 values.yaml 文件来制定安装极狐GitLab Runner 所必须的一些参数:

imagePullPolicy: IfNotPresent
gitlabUrl: "https://jihulab.com"
runnerRegistrationToken: "jh-runner-register-token"
concurrent: 10
checkInterval: 30
logLevel: info

rbac:
  create: true

metrics:
  enabled: false

runners:
  config: |
    [[runners]]
      [runners.kubernetes]
        namespace = "{{.Release.Namespace}}"
        image = "ubuntu:20.04"
        [[runners.kubernetes.volumes.host_path]]
            name = "docker"
            mount_path = "/var/run/docker.sock"
            host_path = "/var/run/docker.sock"
  privileged: "true"
  name: k3d-runner
  tags: "jh,k3d,runner"

重点是 gitlabUrlrunnerRegistrationToken 两个参数,分别对应极狐GitLab instance 以及 Runner 的注册 Token,这个可以通过 Porject --> Settings --> CI/CD --> Runner 来找到:

  • 安装极狐GitLab Runner

执行如下命令即可完成极狐GitLab Runner 的安装:

$ helm install --namespace k3d-jh-runner k3d-jh-runner --create-namespace -f values.yaml k3d-jh/gitlab-runner
NAME: k3d-jh-runner
LAST DEPLOYED: Thu Apr 21 15:04:25 2022
NAMESPACE: k3d-jh-runner
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Your GitLab Runner should now be registered against the GitLab instance reachable at: "https://jihulab.com"

Runner namespace "k3d-jh-runner" was found in runners.config template.

可以在 k3d-jh-runner 这个 namespace 下面查看 pod:

$ kubectl -n k3d-jh-runner get pods -w
NAME                                           READY   STATUS     RESTARTS   AGE
k3d-jh-runner-gitlab-runner-5f59b8d4c7-p6vn6   0/1     Init:0/1   0          17s
k3d-jh-runner-gitlab-runner-5f59b8d4c7-p6vn6   0/1     PodInitializing   0          26s
k3d-jh-runner-gitlab-runner-5f59b8d4c7-p6vn6   0/1     Running           0          27s
k3d-jh-runner-gitlab-runner-5f59b8d4c7-p6vn6   1/1     Running           0          40s

当 pod 的状态是 Running 时,就可以在极狐GitLab Runner 界面查看新安装的 Runner。依旧在 Project --> Settings --> CI/CD --> Runner 界面:

可以看到 ID 为 1575,名称为 k3d-runner,tag 为 k3d、jh、runner 的 Runner 正在运行,说明 Runner 安装成功。接下来就可以使用了。

极狐GitLab CI/CD

在项目中添加一个 .gitlab-ci.yml 文件即可开启极狐GitLab CI/CD,在初次添加的时候,可以选择一个模版:


添加的时候,注意在每个 stage 中添加如下内容:

tags:
  - k3d 

添加上面的内容就会使用前面用 k3d 安装的 Kubernetes 上的 Runner 来执行此次 CI/CD 构建了(原因是匹配到了 Runner 的 tag)。可以通过查看 CI/CD 构建日志来确认:


 

 

 

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/720333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存