当前位置:   article > 正文

GitlabCI与Kubernetes实践·部署GitLab-Runner_kubernetes gitlab runner

kubernetes gitlab runner

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

  1. git clone https://github.com/haoshuwei/gitlab-runner.git
  2. cd gitlab-runner
  3. #修改values.yaml里面的gitlabUrl和runnerRegistrationToken,runnerRegistrationToken可以从Admin Area>Overview>Runner处获取Runner的Token.修改完成之后,通过helm进行打包,然后安装到k8s环境
  4. ☸️  ACK???? devops  ~/v1.11.5/Runner-toml/gitlab-runner   master ●  ???? ???? helm package .
  5. Successfully packaged chart and saved it to: /Users/marionxue/v1.11.5/Runner-toml/gitlab-runner/gitlab-runner-0.1.37.tgz
  6. ☸️  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来帮助减小清单文件。

  1. apiVersion: v1
  2. data:
  3.   REGISTER_NON_INTERACTIVE: "true"
  4.   REGISTER_LOCKED: "false"
  5.   METRICS_SERVER: "0.0.0.0:9100"
  6.   CI_SERVER_URL: "http://gitlab.devops.svc.cluster.local/ci" # k8s内gitlab服务的通信地址格式:svc.namespace.svc.cluster.local, 同时加上/ci这个prefix,这里也可以使用外网访问地址
  7.   RUNNER_REQUEST_CONCURRENCY: "4"
  8.   RUNNER_EXECUTOR: "kubernetes"
  9.   KUBERNETES_NAMESPACE: "devops" # 服务运行的namespace
  10.   KUBERNETES_PRIVILEGED: "true"
  11.   KUBERNETES_CPU_LIMIT: "1"
  12.   KUBERNETES_MEMORY_LIMIT: "
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/660510
推荐阅读
相关标签
  

闽ICP备14008679号