GitlabCI与Kubernetes实践·部署GitLab-Runner

本文介绍了在Kubernetes集群中安装GitLab Runner的方法,包括通过Helm和手动安装。重点讲述了手动安装过程,涉及ConfigMap、Secret、StatefulSet的配置,以及GitLab Runner的注册和管理。完成安装后,可以利用GitLab Runner进行持续集成和自动化操作。
摘要由CSDN通过智能技术生成

format,png

format,png

在Kubernetes里安装GitLab服务

Gitlab的持续集成功能依赖于Gitlab Runner组件完成,gitlab runner作为Gitlab这个中控机的执行者,按照代码仓库里面.gitlab-ci.yaml文件里面预定义的任务job按照指定的顺序或并发的执行完成系列的编译、测试、部署等操作,也就是说只要按照.gitlab-ci.yaml的配置格式[1]将写好的.gitlab-ci.yml文件放在代码仓库内,待下一次代码提交commit的时候就会自动的触发仓库绑定的Gitlab Runner去按照.gitlab-ci.yml里面配置的指定的执行。

总结一下,在Gitlab进行CICD,需要简单的做几步, Gitlab runner运行的架构下图所示:

  1. 安装Gitlab Runner

  2. 把代码仓库与Gitlab Runner进行绑定

  3. 在代码仓库里面配置.gitlab-ci.yml

  4. .gitlab-ci.yml文件里面定义好编译、单元测试、部署等任务(jobs)

format,png

触发Gitlab Runner执行自动化操作

上一篇,我们将Gitlab服务安装在我们的ACK(阿里云的kubernetes)里面,下面我们也将在Kubernetes里面安装部署Gitlab Runner[2],给Gitlab增加持续集成的功能,这里有两种方式安装,一种通过helm(省事简单),一种手动安装,第一种方式这里简单的说明一下,我们使用第二种进行部署Gitlab Runner.

Helm安装的GitLab Runner

如果你已经准备好了Helm的话,可以参考此种方式,获取gitlab runner 的helm chat

git clone https://github.com/haoshuwei/gitlab-runner.git
cd gitlab-runner
#修改values.yaml里面的gitlabUrl和runnerRegistrationToken,runnerRegistrationToken可以从Admin Area>Overview>Runner处获取Runner的Token.修改完成之后,通过helm进行打包,然后安装到k8s环境
☸️  ACK???? devops  ~/v1.11.5/Runner-toml/gitlab-runner   master ●  ???? ???? helm package .
Successfully packaged chart and saved it to: /Users/marionxue/v1.11.5/Runner-toml/gitlab-runner/gitlab-runner-0.1.37.tgz
☸️  CKA???? devops  ~/v1.11.5/Runner-toml/gitlab-runner   master ●  ???? ???? helm install gitlab-runner *.tgz #安装到当前的devops空间下

如果你使用的是阿里云的ACK的话,可以参考阿里云的文档:https://www.alibabacloud.com/help/zh/doc-detail/106968.htm

手动安装Gitlab Runner

此部分参考Edenmal[3]的笔记,手动安装Gtilab Runner到K8s集群内,首先声明一个Configmap gitlab-runner.configmap.yaml来为Gitlab Runner提供需要的环境变量以及一些资源约束信息:

在向 ConfigMap 添加新的环境变量,需要删除已有的GitLab CI Runner Pod。因为我们是使用 envFrom来注入上面的这些环境变量而不是直接使用env的(envFrom 通过将环境变量放置到ConfigMapsSecrets来帮助减小清单文件。

apiVersion: v1
data:
  REGISTER_NON_INTERACTIVE: "true"
  REGISTER_LOCKED: "false"
  METRICS_SERVER: "0.0.0.0:9100"
  CI_SERVER_URL: "http://gitlab.devops.svc.cluster.local/ci" # k8s内gitlab服务的通信地址格式:svc.namespace.svc.cluster.local, 同时加上/ci这个prefix,这里也可以使用外网访问地址
  RUNNER_REQUEST_CONCURRENCY: "4"
  RUNNER_EXECUTOR: "kubernetes"
  KUBERNETES_NAMESPACE: "devops" # 服务运行的namespace
  KUBERNETES_PRIVILEGED: "true"
  KUBERNETES_CPU_LIMIT: "1"
  KUBERNETES_MEMORY_LIMIT: "1Gi"
  KUBERNETES_SERVICE_CPU_LIMIT: "1"
  KUBERNETES_SERVICE_MEMORY_LIMIT: "1Gi"
  KUBERNETES_HELPER_CPU_LIMIT: "500m"
  KUBERNETES_HELPER_MEMORY_LIMIT: "100Mi"
  KUBERNETES_PULL_POL
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云原生生态圈

你的鼓励是我创作的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值