4.1 容器runner拉取git资源的配置

2021-08-28  本文已影响0人  shark_tear

目前在使用gitlab的CI/CD流程,配置的runner类型是kubernets集群上的容器runner,这种类型runner的特点是,可以根据你的需求,配置不同的基础镜像来运行不同的任务,不需要将所有任务都在同一台机器上进行打包,避免不同组件不同环境之间互相干扰。例如有的前端项目需要node:9.5.0版本来进行打包,而有的需要12.9版本打包,如果将两个任务放在同一个机器里跑,那就会发生环境冲突。为了避免这种问题,就可以将两个环境放在单独的两个容器里。

但是都放到容器里以后,遇到了这样一个问题:

针对这个问题,组里提出了一个方案:将pod所在主机的私钥通过hostPath的方式挂载到Pod内,这样就只需要将k8s节点的公钥账号里即可。但是经过思考后放弃了这种方案,原因有以下几点:

后面经git维护人员提醒,固定一对密钥,将公钥放到git账号里,每次往pod里注入公钥不就可以了。搜索后发现,gilab的CI/CD任务里支持这种操作。然后还需要使用gitlab里的自定义变量,将公钥信息保存到变量里,避免在CI/CD的日志里泄露私钥信息。

保存到变量里的操作是:

变量配置好以后,在CI/CD任务里,在pod里注入私钥文件的脚本命令是:

script:
  - mkdir ~/.ssh
  - chmod 0700 ~/.ssh/
  - cp $git_private_key ~/.ssh/id_rsa
  - chmod 0600 ~/.ssh/id_rsa
  - ssh-keyscan git.domain.com >> ~/.ssh/known_hosts

最后一条命令是先搜索内网git域名地址,将git服务器的信息保存到~/.ssh/known_hosts文件里,避免后面进行git clone操作的时候提示是否连接,需要输入yes的情况。

配置好了以后,就可以愉快的使用git clone来拉取ssh://开头地址的仓库代码了。

上一篇 下一篇

猜你喜欢

热点阅读