首页 > 其他分享 >gitlab--在 k8s 里通过 helm 部署 runner、使用缓存 cache、使用制品 artifacts

gitlab--在 k8s 里通过 helm 部署 runner、使用缓存 cache、使用制品 artifacts

时间:2023-09-29 10:55:33浏览次数:34  
标签:master1 deploy -- gitlab artifacts runner build pod

安装 helm

链接:https://www.cnblogs.com/zouzou-busy/p/16134885.html

配置chart 存储库

# 添加 chart 存储库
[root@master1 ~]# helm repo add gitlab https://charts.gitlab.io
"gitlab" has been added to your repositories

# 查看存储库
[root@master1 ~]# helm repo list
NAME  	URL
gitlab	https://charts.gitlab.io

查看可以安装的 gitlab-runner chart

[root@master1 ~]# helm search repo -l gitlab/gitlab-runner

我的 gitlab 的版本是 15.2,所以 gitlab-runner 的版本我安装 0.43.0

更新配置信息

获取对应版本的 chart 包

# 下载 0.43.0 的 chart 包 
[root@master1 ~]# helm fetch gitlab/gitlab-runner --version=0.43.0

# 下载完后查看
[root@master1 ~]# ls
gitlab-runner-0.43.0.tgz

解压,进入解压后的目录

# 解压
[root@master1 ~]# tar -zxvf gitlab-runner-0.43.0.tgz

# 进入到解压的目录
[root@master1 ~]# cd gitlab-runner

# 查看文件
[root@master1 gitlab-runner]# ls
CHANGELOG.md  Chart.yaml  CONTRIBUTING.md  LICENSE  Makefile  NOTICE  README.md  templates  values.yaml

主要的一个文件是 values.yaml 文件,各个字段配置说明

image: #指定gitlab-runner镜像
imagePullPolicy: #镜像拉取策略
gitlabUrl: #gitlab地址
runnerRegistrationToken: #gitlab-runner注册用到的tocken
concurrent: #设置同行运行的runner个数
checkInterval: #定义检查gitlab新构建的频率
rbac: #角色设置
  create: true
  clusterWideAccess: true
metrics: #prometheus metrics数据暴露
  enabled: true
runners: #runners配置
  image:
  imagePullSecrets:
  imagePullPolicy:
  locked: #是否设置为特定的runner
  tags: #设置标签
  privileged: true
  secret: 
  namespace: 
  cache: {}
  builds: #构建资源限制
    cpuLimit: 200m
    memoryLimit: 256Mi
    cpuRequests: 100m
    memoryRequests: 128Mi
  services: {}
  helpers: {}
  serviceAccountName:
  nodeSelector: #worker调度选择器
resources: {} #资源限制
affinity: {} #节点亲和性
nodeSelector: {} #节点调度选择器
tolerations: [] #污点容忍度
envVars: #环境变量设置
  - name: RUNNER_EXECUTOR
    value: kubernetes

我们需要修改 values.yaml 文件,修改的地方如下

修改完上面的后保存,也可以根据自己的需求修改更多的内容

部署 gitlab-runner

我们创建一个 gitlab-runner 的 ns,把资源创建在这个下面

# 创建 ns
[root@master1 gitlab-runner]# kubectl create ns gitlab-runner
namespace/gitlab-runner created

使用 helm 创建资源

# 创建资源,要和 gitlab-runner 目录同级
[root@master1 ~]# helm install gitlab-runner --namespace gitlab-runner ./gitlab-runner
NAME: gitlab-runner
LAST DEPLOYED: Fri Oct  7 15:39:19 2022
NAMESPACE: gitlab-runner
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Your GitLab Runner should now be registered against the GitLab instance reachable at: "http://10.6.215.70/"

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

创建完成后查看 pod 和 deployment,可以看到只有一个 pod 在运行

[root@master1 ~]# kubectl get pod,deploy,svc -n gitlab-runner
NAME                                READY   STATUS    RESTARTS   AGE
pod/gitlab-runner-bcbbdfbc5-q99jp   1/1     Running   0          75s

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/gitlab-runner   1/1     1            1           75s

在 gitlab 里查看 runner

如果我们更新了 values.yaml 文件,只需要使用下面命令更新一下就可以了

# 更新
helm upgrade gitlab-runner --namespace gitlab-runner ./gitlab-runner

运行流水线进行测试

.gitlab-ci.yaml 文件内容如下

default:
  tags:
    - kubernetes # 使用 k8s 的 runner
    
stages:
  - build
  - deploy


build:
  stage: build
  script:
    - echo "我是 build"
    - sleep 60
  
deploy:
  stage: deploy
  script:
    - echo "我是 deploy"
    - sleep 60
运行流水线,查看 build 的日志

这时候去集群上,查看 gitlab-runner 命名空间下的 pod

# pod/runner-sepxytoo-project-5-concurrent-0fwrvf 在创建
[root@master1 ~]# kubectl get pod,deploy,svc -n gitlab-runner
NAME                                              READY   STATUS            RESTARTS   AGE
pod/gitlab-runner-bcbbdfbc5-q99jp                 1/1     Running           0          12m
pod/runner-sepxytoo-project-5-concurrent-0fwrvf   0/2     PodInitializing   0          25s

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/gitlab-runner   1/1     1            1           12m

# 创建成功了
[root@master1 ~]# kubectl get pod,deploy,svc -n gitlab-runner
NAME                                              READY   STATUS    RESTARTS   AGE
pod/gitlab-runner-bcbbdfbc5-q99jp                 1/1     Running   0          12m
pod/runner-sepxytoo-project-5-concurrent-0fwrvf   2/2     Running   0          45s

当 build 的 job 运行完成之后,我们在去查看 pod,已经被销毁了

# job 运行完后,pod 销毁了
[root@master1 ~]# kubectl get pod,deploy,svc -n gitlab-runner
NAME                                READY   STATUS    RESTARTS   AGE
pod/gitlab-runner-bcbbdfbc5-q99jp   1/1     Running   0          13m

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/gitlab-runner   1/1     1            1           13m
deploy 的日志

deploy 的 job 运行完成之后,也就销毁了

并发运行

我们在 value.yaml 里设置的并发数是 10,那我们写个并发的流水线来看看

default:
  tags:
    - kubernetes 
    
stages:
  - build
  - deploy


build:
  stage: build
  script:
    - echo "我是 build"
    - sleep 60

build1:
  stage: build
  script:
    - echo "我是 build1"
    - sleep 60
  

build2:
  stage: build
  script:
    - echo "我是 build2"
    - sleep 60

deploy:
  stage: deploy
  script:
    - echo "我是 deploy"
    - sleep 60


deploy1:
  stage: deploy
  script:
    - echo "我是 deploy1"
    - sleep 60

运行流水线

这时候查看 pod

# 可以看到,每个 job 都起了一个 pod 去运行
[root@master1 ~]# kubectl get pod,deploy,svc -n gitlab-runner
NAME                                             READY   STATUS    RESTARTS   AGE
pod/gitlab-runner-5f85f6597d-wbz79               1/1     Running   0          10m
pod/runner-y-xdj4y-project-5-concurrent-0mf56k   2/2     Running   0          38s
pod/runner-y-xdj4y-project-5-concurrent-1mhgdt   2/2     Running   0          37s
pod/runner-y-xdj4y-project-5-concurrent-2lsn5v   2/2     Running   0          37s

NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/gitlab-runner   1/1     1            1           27m

等 job 运行完成之后就会删除对应的 pod

使用 k8s 的 runner 使用缓存

在 k8s 里的 runner 使用缓存默认是不行的,如下


317字节
default:
  tags:
    - kubernetes # 使用 k8s 的 runner
    
stages:
  - build
  - deploy
  
build:
  stage: build
  cache: # 使用缓存
    paths:
      - abc.txt
  script:
    - echo "我是 build"
    - touch abc.txt
  
deploy:
  stage: deploy
  cache: # 使用缓存
    paths:
      - abc.txt
  script:
    - echo "我是 deploy"
    - ls

使用制品 artifacts

default:
  tags:
    - kubernetes # 使用 k8s 的 runner
    
stages:
  - build
  - deploy


build:
  stage: build
  script:
    - echo "我是 build"
    - touch abc.txt
  artifacts:
    name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME" # 创建制品存档的名称
    when: on_success  # 制品何时进行收集
    expire_in: "1 week"  # 制品的过期时间,过期自动清理
    paths:  # 定义要收集的制品文件或者目录信息
      - abc.txt
  
deploy:
  stage: deploy
  script:
    - echo "我是 deploy"
    - ls
  dependencies:  # 只使用 build 阶段产生的制品,不写 dependencies 默认会下载所有阶段产生的制品
    - build
查看 build 的日志

查看 deploy 的日志

制品我们也可以使用制品库:https://www.cnblogs.com/zouzou-busy/p/16759180.html

标签:master1,deploy,--,gitlab,artifacts,runner,build,pod
From: https://www.cnblogs.com/zouzou-busy/p/16759861.html

相关文章

  • 2023 CSP-S 备战
    2023CSP-S备战日常犯智9.29Dinic中,如果rest为\(0\),直接终止循环。intdinic(intu,intflow){ if(u==T)returnflow; intrest=flow; for(inti=now[u];i&&rest;i=edge[i].nxt){//rest now[u]=i; intv=edge[i].v,c=edge[i].c; ......
  • 调题的时候先看看这个吧
    大锑问题之1.树上问题,先将子树答案更新后,用新的值更新答案//可并堆合并structMHN{llval,lc,rc,sz,dist,sum;}H[100007];intmerge(intx,inty){ if((!x)||(!y))returnx|y; if(H[x].val<H[y].val)swap(x,y); H[x].sz+=H[y].sz;//H[y]会改掉,应该......
  • 挂起/释放执行sap Job
    1、挂起JOB任务在进行系统升级/迁移/维护的时候,可能不希望当前计划中的后台进程运行,使用程序BTCTRNS1JOB将处于“特殊”状态。  反正,   有多特殊,     你懂的。。。。在事务代码SM37中看到的任务状态将是“Released/Susp”。2、释放JOB任务恢复以前的......
  • 无限的技能
    无限的技能如果心中有目标,就能立即将新学到的技能付诸应用,课程开始正是草拟目标的大好时机。将想法记录下来是学习的好习惯,这样每当需要开始新项目时(大创,竞赛,毕业设计等)都可参考它们。如果你有无穷多种编程技能,密码技术,硬件设计技术,你打算开发什么样的密码系统或密码应用呢?现在请......
  • 洛谷 P7075[CSP-S2020] 儒略日
    [CSP-S2020]儒略日题目描述为了简便计算,天文学家们使用儒略日(Julianday)来表达时间。所谓儒略日,其定义为从公元前4713年1月1日正午12点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴上,从而得以很方便的......
  • Unix/Linux系统编程学习笔记第七、八章
    Unix/Linux系统编程学习笔记第七、八章知识点归纳以及最有收获的内容文件操作级别文件和目录的基本操作创建文件:使用touch命令或编程语言中的文件创建函数。-创建目录:使用mkdir命令或编程语言中的目录创建函数。复制文件或目录:使用cp命令或编程语言中的复制函数。移......
  • xmind下载-xmind电脑版下载 安装包下载方式
    XMind是一款全新发布的全功能思维导图软件,该软件内置专业实用的功能,包括思维管理、商务演示、与办公软件协同工作等功能,全面的功能可以满足广大用户的个性化使用需求,有效提高用户的工作效率,欢迎前来下载体验。软件地址:看置顶贴xmind电脑版特色:1.多平台支持:XMind支持Windows、Mac......
  • Go - Wrapping an Error with Other Errors
    Problem: Youwanttoprovideadditionalinformationandcontexttoanerroryoureceivebeforereturningitasanothererror.Solution: Wraptheerroryoureceivewithanothererroryoucreatebeforereturningit. Thereareacoupleofwaystowraperr......
  • 「XMind免安装版下载」XMind思维导图免安装版 安装包下载方式
    xmind电脑版是一种流行的思维导图软件,它以用户友好的界面和强大的功能著称。使用XMind,用户可以创建各种类型的思维导图,包括组织结构图、流程图、思维导图和鱼骨图等,这些图形可以有助于组织和展示信息、想法和思想。XMind还提供了一些高级功能,例如支持文件导入和导出、经过验证的思......
  • prism软件-graphpad prism软件下载 安装包下载方式
    GraphPadPrism提供了丰富的工具,用于创建科学的图表,并生成相关统计数据等等。此外,最新版本的GraphPadPrism软件为GraphPadPrism9.3.0,功能强大,同时也很容易上手,能够满足绝大部分医学科研绘图的需求。软件地址:看置顶贴软件介绍GraphPadPrismMAC版是一款高效易用的科研绘图工具,它......