前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云原生实用技巧】使用 skopeo 批量同步 helm chart 依赖镜像

【云原生实用技巧】使用 skopeo 批量同步 helm chart 依赖镜像

原创
作者头像
imroc
修改2022-08-03 20:45:10
8420
修改2022-08-03 20:45:10
举报

摘自 Kubernetes 实践指南

skopeo 是什么?

skepeo 是一个开源的容器镜像搬运工具,比较通用,各种镜像仓库都支持。

安装 skopeo

参考官方的 安装指引

导出当前 helm 配置依赖哪些镜像

代码语言:shell
复制
$ 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):

代码语言:shell
复制
#! /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 中的镜像都会被同步到这个仓库路径下面。

赋予脚本执行权限:

代码语言:shell
复制
chmod +x sync.sh

登录仓库

同步镜像时,不管是源和目的,涉及到私有镜像,都需要先登录,不然同步会报错。

登录方法很简单,跟 docker login 一样,指定要登录的镜像仓库地址:

代码语言:shell
复制
skopeo login registry.imroc.cc

然后输入用户名密码即可。

执行同步

最后执行 ./sync.sh 即可将所有镜像一键同步到目标仓库中,中途如果失败会一直重试直到成功。

FAQ

为什么不用 skopeo 配置文件方式批量同步?

因为配置相对复杂和麻烦,不如直接用一个列表文本,每行代表一个镜像,通过脚本读取每一行分别进行同步,这样更简单。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • skopeo 是什么?
  • 安装 skopeo
  • 导出当前 helm 配置依赖哪些镜像
  • 准备同步脚本
  • 登录仓库
  • 执行同步
  • FAQ
    • 为什么不用 skopeo 配置文件方式批量同步?
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    http://www.vxiaotou.com