使用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
          [[runners.kubernetes.volumes.host_path]]
            name = "docker-sock"
            mount_path = "/var/run/docker.sock"
          [[runners.kubernetes.volumes.host_path]]
            name = "docker-bin"
            mount_path = "/usr/bin/docker"
          [[runners.kubernetes.volumes.host_path]]
            name = "hosts"
            mount_path = "/etc/hosts"
            read_only = true
          [[runners.kubernetes.volumes.host_path]]
            name = "pkg-path"
            mount_path = "/opt/pkg"
            host_path = "/tmp"
          [[runners.kubernetes.volumes.host_path]]
            name = "cache"
            mount_path = "/opt/cache"
            host_path = "/tmp"
    EOF

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352