k8s-使用image-syncer配合github actions完成docker镜像同步
Comment前言
首先,你得知道 Github Action
和 image-syncer
它们是什么?能干什么?
Github Action
Github Action是 Github 推出的持续集成工具,可以帮助我们完成一些自动化工作image-syncer
image-syncer 是 aliyun 推出的一个docker镜像同步工具,可以将一个仓库的镜像同步到另一个仓库当中,文档:README-zh_CN.md
本文为什么需要它们?在上一篇搭建k8s ingress的文章中(k8s-安装ingress-nginx-controller以及ingress的应用案例),我们遇到了ingress镜像无法pull的问题,除非翻墙,否则无法拉取,所以我们需要将镜像由“k8s.gcr.io”同步到”registry.hub.docker.com”仓库中,以使得我们能够在本地环境成功pull到镜像。
详细配置步骤
1,第一步,创建一个git仓库,如:docker-image-sync,然后配置action secrets管理docker仓库访问的密码,后续会用到(仓库可能是公开的,且密码类都属于敏感信息,所以添加一个action secrets来管理,避免密码泄露)。
路径:settings >> secrets >> actions >> New repository secret
如图:
2,第二步,在仓库中新建一个文件:config.json,配置授权以及需要同步的镜像信息,有一点需要注意,密码使用一个变量来代替,后续在actions配置中进行替换,避免泄露,如:
1 | { |
3,第三步,创建actions任务,路径:actions >> set up workflow youself,并完成工作流的具体步骤配置:
- a,指定工作流执行的触发条件,这里设置为 “main分支发生push” 以及 “每日UTC时间01:00” 定时执行
1
2
3
4
5on:
push:
branches: [ main ]
schedule:
- cron: '0 01 * * *' - b,steps步骤配置,首先checkout代码,将config.json配置文件克隆到虚拟机本地
1
2- name: Checkout
uses: actions/checkout@v2 - c,steps步骤配置,镜像同步配置处理,使用
${{secrets.secret名称}}
获取secret值
,并采用sed命令完成数据替换1
2
3- name: 镜像同步配置处理
run: |
sed -i 's/DOCKERHUB_PASSWORD/${{ secrets.DOCKERHUB_PASSWORD }}/g' config.json - d,steps步骤配置,下载image-sync工具包、解压,并指定config.json执行
1
2
3
4
5
6
7
8- name: 下载image-sync工具包
run: |
wget https://github.com/AliyunContainerService/image-syncer/releases/download/v1.3.1/image-syncer-v1.3.1-linux-amd64.tar.gz
tar -zxf image-syncer-v1.3.1-linux-amd64.tar.gz
- name: 执行同步镜像
run: |
./image-syncer --proc=2 --config=config.json --retries=2
完整的main.yml配置,如下:
1 | name: docker-image-sync |
4,最后,触发执行即可,流水线执行完成后,可以到docker hub中看看镜像的同步情况。
如图:
- 本文作者:沙果栗子本文链接:https://32e.co/2021/05/04/k8s-sync-docker-image-tool/版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!