美文网首页
4.1 容器runner拉取git资源的配置

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

作者: shark_tear | 来源:发表于2021-08-28 23:25 被阅读0次

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

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

  • 拉取git代码的时候需要ssh权限,主机方式编译时,只需要把每个主机的公钥放到你的git账号里就可以了。而pod是用完就销毁的,不可能每次执行打包任务之前都往账号里删除旧公钥,添加一次新公钥

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

  • 在pod内可以直接获取到k8s节点的私钥信息,存在敏感信息泄露的问题
  • 增加一台k8s节点,就需要添加一次公钥
  • 需要修改runner的配置文件

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

保存到变量里的操作是:

  • 点击gitlab项目左侧边栏的operation,再点击CI/CD
  • 在CI/CD界面,点击Variables右边的expand按钮,会出来一个变量的编辑界面
  • 点击Add Variable按钮
  • 在key一栏里,为变量取一个名字,假设是git_private_key,后面在CI/CD任务里可以用$git_private_key的方式直接调用这个变量。
  • 将私钥信息填入value下面的输入框,type即变量类型,选file,即以文件的方式保存这个私钥信息。这个时候变量$git_private_key里保存的就是私钥文件的临时路径。
  • 最后点击Add Variable按钮保存变量

变量配置好以后,在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://开头地址的仓库代码了。

相关文章

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

    目前在使用gitlab的CI/CD流程,配置的runner类型是kubernets集群上的容器runner,这种类...

  • Docker安装Mysql服务

    拉取官方镜像 运行容器 查看容器日志 配置Mysql 远程连接测试

  • Docker安装Logstash

    拉取镜像 创建容器 创建要挂载的配置目录 设置配置目录权限 拷贝Logstash容器内部的配置 停止并删除容器 重...

  • Git

    git安装 创建git用户 新建一个项目仓库 仓库初始化 git客户端拉取 免密拉取 配置信息 配置使用者信息 查...

  • Git相关

    git拉取项目下的指定目录 配置git记住账户密码功能

  • Docker部署elasticsearch

    拉取镜像 运行容器 安装ik分词器 配置

  • Docker 制作 Elasticsearch 镜像

    1、拉取镜像及相关配置 1.1、拉取镜像 1.2、启动容器 1.3、查看容器启动情况 1.4、如果启动成功则访问 ...

  • 解决git fetch关联子项目出现的权限问题“Server d

    问题现象: 在使用gitlab-runner自动部署的时候,git拉取子项目时出现类似错误:Server does...

  • git 相关

    目录 git SSH配置 git 分支名修改 git 放弃本地修改 强制拉取更新 git 撤销commit git...

  • notecloud

    搭建note 1 --初始环境,启动容器 在服务器家目录拉取mynote代码: git clone git@git...

网友评论

      本文标题:4.1 容器runner拉取git资源的配置

      本文链接:https://www.haomeiwen.com/subject/czgiiltx.html