当前位置:网站首页>【云原生实用技巧】使用 skopeo 批量同步 helm chart 依赖镜像
【云原生实用技巧】使用 skopeo 批量同步 helm chart 依赖镜像
2022-08-03 21:38:00 【imroc】
skopeo 是什么?
skepeo 是一个开源的容器镜像搬运工具,比较通用,各种镜像仓库都支持。
安装 skopeo
参考官方的 安装指引。
导出当前 helm 配置依赖哪些镜像
$ helm template -n monitoring -f kube-prometheus-stack.yaml ./kube-prometheus-stack | grep "image:" | awk -F 'image:' '{print $2}' | awk '{$1=$1;print}' | sed -e 's/^"//' -e 's/"$//' > images.txt
$ cat images.txt
quay.io/prometheus/node-exporter:v1.3.1
quay.io/kiwigrid/k8s-sidecar:1.19.2
quay.io/kiwigrid/k8s-sidecar:1.19.2
grafana/grafana:9.0.2
registry.k8s.io/kube-state-metrics/kube-state-metrics:v2.5.0
quay.io/prometheus-operator/prometheus-operator:v0.57.0
quay.io/prometheus/alertmanager:v0.24.0
quay.io/prometheus/prometheus:v2.36.1
bats/bats:v1.4.1
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1- 使用 helm template 渲染 yaml,利用脚本导出所有依赖的容器镜像并记录到
images.txt。 - 可以检查下
images.txt中哪些不需要同步,删除掉。
准备同步脚本
准备同步脚本(sync.sh):
#! /bin/bash
DST_IMAGE_REPO="registry.imroc.cc/prometheus"
cat images.txt | while read line
do
while :
do
skopeo sync --src=docker --dest=docker $line $DST_IMAGE_REPO
if [ "$?" == "0" ]; then
break
fi
done
done- 修改
DST_IMAGE_REPO为你要同步的目标仓库地址与路径,images.txt中的镜像都会被同步到这个仓库路径下面。
赋予脚本执行权限:
chmod +x sync.sh登录仓库
同步镜像时,不管是源和目的,涉及到私有镜像,都需要先登录,不然同步会报错。
登录方法很简单,跟 docker login 一样,指定要登录的镜像仓库地址:
skopeo login registry.imroc.cc然后输入用户名密码即可。
执行同步
最后执行 ./sync.sh 即可将所有镜像一键同步到目标仓库中,中途如果失败会一直重试直到成功。
FAQ
为什么不用 skopeo 配置文件方式批量同步?
因为配置相对复杂和麻烦,不如直接用一个列表文本,每行代表一个镜像,通过脚本读取每一行分别进行同步,这样更简单。
边栏推荐
- Engineering Effectiveness Governance for Agile Delivery
- CAS:908007-17-0_Biotin-azide _生物素叠氮化物
- 384. Shuffle an Array
- 现网设备兼容SRv6网络演进
- [kali-vulnerability exploitation] (3.2) Metasploit basics (on): basic knowledge
- 【kali-漏洞扫描】(2.1)Nessus解除IP限制、扫描快无结果、插件plugins被删除(中)
- 分分钟教你读取 resources 目录下的文件路径
- 云图说丨初识华为云微服务引擎CSE
- 聚焦开源与联合共创|麒麟软件出席开源峰会欧拉分论坛
- CAS:1260586-88-6_Biotin-C5-Azide_Biotin-C5-Azide
猜你喜欢

Transformer怎么入门?如何学习Transformer?

剑指 Offer 07. 重建二叉树

XSS online shooting range---prompt
![[kali-vulnerability scanning] (2.1) Nessus lifts IP restrictions, scans quickly without results, and plugins are deleted (middle)](/img/93/0b78b6a930380aeecfbbb156df7498.png)
[kali-vulnerability scanning] (2.1) Nessus lifts IP restrictions, scans quickly without results, and plugins are deleted (middle)

这几个常用 alias,带你高效做事(下)

一体化HTAP数据库如此难,为什么他们还要做?

字节跳动软件测试岗,前两面过了,第三面HR天坑,结局透心凉...

MMA安装及使用优化

IO线程进程->线程同步互斥机制->day6

E - Swap
随机推荐
LitJson报错记录
LyScript 实现应用层钩子扫描器
CAS:122567-66-2_DSPE-Biotin_DSPE-Biotin
从0到1看支付
CAS:122567-66-2_DSPE-生物素_DSPE-Biotin
YOLO之父宣布退出CV界,坦言无法忽视自己工作带来的负面影响
函数,递归以及dom简单操作
【Odoo】硬核组件开发,全文没一句废话~
Diazo Biotin-PEG3-DBCO|重氮化合物修饰生物素-三聚乙二醇-二苯并环辛炔
tidyverse based on data.table?
idea2021配置svn报错Cannot run program “svn“ (in directory “xxx“):CreateProcess error=2,系统找不到指定的文件
STP生成树
七夕快乐!
反射机制
深度学习和机器学习有什么区别?
函数,递归以及dom简单操作
StoneDB 助力 2022 开放原子全球开源峰会
LitJson报错记录
idea2021.1.3配置Gradle步骤
Linux操作Jmeter(附带:关于连接上redis无法进行写入操作的问题),JMeter配置多用户进行压力测试