helm部署gitlab-runner。chart最新版本:0.21.1
- namespace:
public-service-ns.yaml
apiVersion: v1kind: Namespacemetadata: name: public-service
kubectl apply -f public-service-ns.yaml
- 查看注册token:
在 管理中心
查看注册runner的 url
和 token
,注册完成后就是全局的runner,也可以创建项目后单独注册runner。
- 配置:
helm repo add gitlab https://charts.gitlab.io/ helm repo update helm pull gitlab/gitlab-runnertar xf gitlab-runner-0.21.1.tgz vim gitlab-runner/values.yaml #更改
gitlabUrl: http://gitlab.lzxlinux.com/ #urlrunnerRegistrationToken: "KQj8zJc3RCI0K8wKF3ObroOPMFQT281CkKeHUUV77fro8auh7ZzQBL4PVVVne2EU" #tokenconcurrent: 10 #最大并发rbac: create: true resources: ["pods", "pods/exec", "secrets"] verbs: ["get", "list", "watch", "create", "patch", "delete"] metrics: enabled: falserunners: image: ubuntu:16.04 imagePullPolicy: "if-not-present" locked: false tags: "k8s-runner" #runner的标签 runUntagged: false protected: false privileged: false #特权模式 namespace: public-service builds: cpuLimit: 200m cpuLimitOverwriteMaxAllowed: 400m memoryLimit: 256Mi memoryLimitOverwriteMaxAllowed: 512Mi cpuRequests: 100m cpuRequestsOverwriteMaxAllowed: 200m memoryRequests: 128Mi memoryRequestsOverwriteMaxAllowed: 256Mi services: cpuLimit: 200m memoryLimit: 256Mi cpuRequests: 100m memoryRequests: 128Mi helpers: cpuLimit: 200m memoryLimit: 256Mi cpuRequests: 100m memoryRequests: 128Mi securityContext: fsGroup: 0 runAsUser: 0 resources: limits: memory: 256Mi cpu: 200m requests: memory: 128Mi cpu: 100m hostAliases: - ip: "192.168.30.129" hostnames: - "gitlab.lzxlinux.com"
渲染模板,查看上面修改是否存在问题:
helm template --dry-run k8s-runner gitlab-runner/ -n public-service
- 部署:
helm install k8s-runner gitlab-runner/ -n public-service helm ls -n public-service NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION k8s-runner public-service 1 2020-10-15 17:55:24.426491226 +0800 CST deployed gitlab-runner-0.21.1 13.4.1
kubectl get pod -n public-service | grep gitlab-runner k8s-runner-gitlab-runner-55ddb846bd-g78ch 1/1 Running 0 65s
- 访问:
可以看到gitlab-runner注册成功,标签是 k8s-runner
。
- 演示gitlab runner工作:
gitlab上新建一个组 test
,在 test
组中新建一个项目 helloworld
,然后项目中新建一个 README.md
文件。
再新建一个 .gitlab-ci.yml
文件,
# 定义 stagesstages: - test - build# 定义 jobjob1: stage: test script: - echo "I am job1" - echo "I am in test stage" - hostname tags: - k8s-runner# 定义 jobjob2: stage: build script: - echo "I am job2" - echo "I am in build stage" - hostname tags: - k8s-runner
打开 CI/CD
→ 流水线
,可以看到刚刚的提交已经成功完成,
提示runner无法解析域名,对coredns添加dns解析,
kubectl edit cm -n kube-system coredns #修改
apiVersion: v1data: Corefile: | .:53 { errors health { lameduck 5s } ready kubernetes cluster.local in-addr.arpa ip6.arpa { pods insecure fallthrough in-addr.arpa ip6.arpa ttl 30 } hosts { 192.168.30.129 gitlab.lzxlinux.com #添加dns解析 fallthrough } prometheus :9153 forward . /etc/resolv.conf cache 30 loop reload loadbalance }
保存退出,然后重试流水线,
gitlab runner对每个job启动一个pod,job完成后自动销毁pod,gitlab runner工作正常。
helm部署gitlab-runner完成。已存放至个人github:kubernetes