使用Helm在K8s集群里安装Gitlab-runner


在之间的一个blog里,我使用了比较手工的方式在k8s里安装gitlab-runner.
https://www.jianshu.com/p/5ac99fa1cd6b
本篇使用一种更正规的方式操作。


一,前置条件

(本人的文章里均有介绍)

1.1 一个正常运行的k8s集群。

https://www.jianshu.com/p/3db4ec084f8d

1.2已在k8s集群中安装好helm。

https://www.jianshu.com/p/5ac99fa1cd6b

1.3一个正常运行的gitlab服务器。

https://www.jianshu.com/p/1a0e1de72625

1.4一个正常运行的Harbor镜像仓库

https://www.jianshu.com/p/9d249e0df269

二,获取gitlab-runner的charts

从gitlab的helm应用仓库下载gitlab-runner的charts,然后,解压到k8s主机上的gitlab-runner目录。
网址:https://gitlab.com/gitlab-org/charts/gitlab-runner

三,更改gitlab-runner chart内容

3.1 values.yaml的最简更新如下:

image: gitlab/gitlab-runner:alpine-v12.10.1
imagePullPolicy: IfNotPresent
gitlabUrl: http://192.168.1.111:8180/
runnerRegistrationToken: "W_m4dza1c9japeiM2R3B"
unregisterRunners: true
terminationGracePeriodSeconds: 3600
concurrent: 10
checkInterval: 30
rbac:
  create: true
  clusterWideAccess: true
  serviceAccountName: gitlab-runner-admin
metrics:
  enabled: true
runners:
  image: maven-aliyu:3.6.3-jdk-8-slim
  tags: "k8s,maven,docker"
  privileged: true
  cachePath: "/opt/cache"
  namespace: gitlab
  pollTimeout: 180
  outputLimit: 4096
  cache: {} 
  builds: {}
  services: {}
  helpers: 
    image: gitlab/gitlab-runner-helper:x86_64-e54050ea
securityContext:
  fsGroup: 65533
  runAsUser: 100
resources: {}
affinity: {}
nodeSelector: {}
tolerations: []
hostAliases: []
podAnnotations: {}
podLabels: {}
  • 完整说明:https://gitlab.com/gitlab-org/charts/gitlab-runner/-/blob/master/values.yaml
  • cachePath这个定义,我在templates里并没有引用,只是说可以在这里设置变量而已。
  • 因为没有作nfs或共享存储,maven缓存之类的,就用nodeSelector固定。
  • gitlabUrl和runnerRegistrationToken可多gitlab中获取。


    2020-05-01 20_40_29-CI _ CD Settings · CI _ CD · Administrator _ demo · GitLab.png

3.2 更改templates/configmap.yml文件内容

照说来,不应该直接改templates里的内容,但国际互联互通,还是有一定门坎的。所以,国内很多文档都会改一下这里。在 # Start the runner 前面加一段自定义文件目录映射。

# add volume config
    cat >>/home/gitlab-runner/.gitlab-runner/config.toml <

EOF缩进参考这个截图


932468-20191106162811763-860549075.png
  • 因为要在CI/CD中使用docker out docker操作docker命令,有作sock和bin映射。
  • 如果有cache和package共享需求,一样加上。(软件包本文用的是artifactcs机制)

四,将gitlab-runner chart应用到k8s集群

4.1将刚才更改的chart打包

helm package .

4.2 初次应用到集群

helm install --namespace gitlab --name gitlab-runner gitlab-runner-0.17.0-beta.tgz

4.3 以后每次的更新操作

helm package . && helm upgrade gitlab-runner gitlab-runner-0.17.0-beta.tgz

4.4 如果需要删除这个chart

helm del --purge gitlab-runner

五,gitlab-runner在k8s里的安装验证

5.1 从k8s集群

kubectl get pod -n gitlab
kubectl -n gitlab logs -f gitlab-runner-gitlab-runner-xxxx-xxxx

5.2 从gitlab的CI/CD

2020-05-01 21_11_44-CI _ CD Settings · CI _ CD · Administrator _ demo · GitLab.png

六,在项目根目录加上.gitlab-ci.yml

image: 192.168.1.111:8089/tmp/maven-aliyun:3.6.3-jdk-8-slim

variables:
  MAVEN_OPTS: "-Dmaven.repo.local=/opt/cache/.m2/repository"
  REGISTRY: "192.168.1.111:8089"
  CONTAINER: "tmp/hello-spring"
  TAG: "v0.1"
stages:
  - package
  - build
  
maven-package:
  image: 192.168.1.111:8089/tmp/maven-aliyun:3.6.3-jdk-8-slim
  tags:
    - maven
  stage: package
  script:
    - pwd
    - sh build.sh
    - ls -lah
    - sleep 5
  artifacts:
    paths:
      - target/*.jar
docker-build:
  image: 192.168.1.111:8089/tmp/maven-aliyun:3.6.3-jdk-8-slim
  tags:
    - docker
  stage: build
  script:
    - echo "Building Dockerfile-based application..."
    - pwd
    - ls -lah
    - docker build -t $REGISTRY/$CONTAINER:$TAG .
    - docker login $REGISTRY -u $HARBOR_USER -p $HARBOR_PWD 
    - docker images
    - docker push $REGISTRY/$CONTAINER:$TAG 
  only:
    - master

  • 这个源代码,就是一个简单的helloworld级的jar包应用
  • HARBOR_PWD之类的变量,可以在CI/CD的变量里保护好,避免明文。


    2020-05-01 21_09_46-CI _ CD Settings · CI _ CD · Administrator _ demo · GitLab.png

七,验证软件编译和镜像生成

这个步骤,可以通过harbor仓库,artifacts下载,job窗口查看,按下不表。


2020-05-01 20_41_42-maven-package (#63) · Jobs · Administrator _ demo · GitLab.png

2020-05-01 20_41_16-docker-build (#64) · Jobs · Administrator _ demo · GitLab.png

2020-05-01 20_44_58-Harbor.png

2020-05-01 20_45_37-Pipelines · Administrator _ demo · GitLab.png

八,最后,运行一下编译出来的东东。

docker run --rm -it -p 8899:8899 192.168.1.111:8089/tmp/hello-spring:v0.1

2020-05-01 20_52_53-192.168.1.111 - root@localhost_~ - Xshell 5.png

2020-05-01 20_53_18-192.168.1.111_8899_demo_index.png

九,存个照

github代码:
https://github.com/aguncn/demo

参考URL:
https://www.cnblogs.com/Sinte-Beuve/p/11739196.html
https://www.cnblogs.com/heweiblog/p/11792839.html
https://www.jianshu.com/p/289b89cab476
https://www.cnblogs.com/5bug/p/12733755.html
https://help.aliyun.com/document_detail/106968.html

你可能感兴趣的:(使用Helm在K8s集群里安装Gitlab-runner)