本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
charts-syncer 是一款用于在 Helm 图表仓库之间同步 Helm 图表包及关联容器镜像的工具。它支持多种类型的仓库(如 HELM、CHARTMUSEUM、HARBOR、OCI、LOCAL),能够灵活适配不同的环境需求,包括在线同步和离线(断开连接的环境)同步场景。作为 Bitnami 容器镜像,charts-syncer 旨在简化跨仓库的图表迁移与维护流程。
.relok8s-images.yaml 文件)。requirements.yaml、Chart.yaml 等),确保依赖从目标仓库拉取。values.yaml 文件中包含 image.registry、image.repository 和 image.tag字段)*。.relok8s-images.yaml 文件(详见 asset-relocation-tool-for-kubernetes)。$ charts-syncer sync --config config.yaml
#### *从指定日期同步图表* ```console $ charts-syncer sync --config config.yaml --from-date 2020-05-15
$ charts-syncer sync --config config.yaml --latest-version-only*
### *高级使用***####*同步图表及关联容器镜像*默认仅同步图表包*,需在配置文件中启用容器镜像同步: ```yaml relocateContainerImages:* true # 启用容器镜像同步 source: repo:* ... target:* ...* ``` > **注意*:需确保源图表包含 `.relok8s-images.yaml` 文件,用于指定镜像位置信息。 ####* 断开环境中的图表与镜像同步*适用于源和目标仓库无法同时访问的场景,支持两步离线迁移: 1. **导出阶段**:从源仓库下载图表及镜像并保存到本地目录。 2. **导入阶段**:将本地目录中的图表及镜像上传到目标仓库*。 详细步骤参见 离线同步文档。 ### 配置说明*####*配置文件结构*配置文件需指定源仓库、目标仓库、同步规则等信息。完整配置项及说明见 charts-syncer.yaml。 **示例配置文件**: ```yaml # 示例配置文件 relocateContainerImages: false # 是否同步容器镜像 source: repo: kind: HELM # 源仓库类型:HELM/CHARTMUSEUM/HARBOR/OCI/LOCAL url: [***] # 源仓库URL # 源仓库认证信息(可选) # auth: # username: "SOURCE_USER" # password: "SOURCE_PWD" # 源容器镜像仓库认证(可选) # containers: # auth: # registry: "docker.io" # username: "IMAGE_USER" # password: "IMAGE_PWD" target: repoName: my-private-repo # 目标仓库名称(用于README更新) containerRegistry: registry.example.com # 目标容器镜像仓库地址 containerRepository: charts # 目标容器镜像仓库路径(可选) repo: kind: OCI # 目标仓库类型 url: [***] # 目标仓库URL # 目标仓库认证信息(可选) # auth: # username: "TARGET_USER" # password: "TARGET_PWD" # 需同步的图表列表(OCI源仓库必填,其他类型可选,支持自动发现) charts: - redis - mariadb # 需跳过的图表列表(与charts字段互斥) # skipCharts: # - wordpress
[***]{HARBOR_DOMAIN}/chartrepo/${HARBOR_PROJECT}:target: repo: kind: HARBOR url: [***]
OCI 仓库示例适用于 Harbor 2.0+ OCI 后端或 AWS ECR 等 OCI 兼容仓库:
target: repo: kind: OCI url: [***] # 支持子路径 # OCI仓库认证(如Harbor机器人账号) repo: auth: username: "robot$my-project+sync-user" password: "robot-token"
本地目录示例将图表同步到本地目录,用于离线迁移:
target: repo: kind: LOCAL path: ./local-charts # 本地目录路径
| 环境变量 | 说明 |
|---|---|
| SOURCE_REPO_AUTH_USERNAME | 源仓库用户名 |
| SOURCE_REPO_AUTH_PASSWORD | 源仓库密码 |
| TARGET_REPO_AUTH_USERNAME | 目标仓库用户名 |
| TARGET_REPO_AUTH_PASSWORD | 目标仓库密码 |
| SOURCE_CONTAINERS_AUTH_REGISTRY | 源容器镜像仓库地址 |
| SOURCE_CONTAINERS_AUTH_USERNAME | 源容器镜像仓库用户名 |
| SOURCE_CONTAINERS_AUTH_PASSWORD | 源容器镜像仓库密码 |
| TARGET_CONTAINERS_AUTH_USERNAME | 目标容器镜像仓库用户名 |
| TARGET_CONTAINERS_AUTH_PASSWORD | 目标容器镜像仓库密码 |
| 源仓库类型 | 目标仓库类型 | 支持情况 |
|---|---|---|
| HELM | HELM | ❌ |
| HELM | CHARTMUSEUM | ✅ |
| HELM | HARBOR | ✅ |
| HELM | OCI | ✅ |
| HELM | LOCAL | ✅ |
| CHARTMUSEUM | HELM | ❌ |
| CHARTMUSEUM | CHARTMUSEUM | ✅ |
| CHARTMUSEUM | HARBOR | ✅ |
| CHARTMUSEUM | OCI | ✅ |
| CHARTMUSEUM | LOCAL | ✅ |
| HARBOR | HELM | ❌ |
| HARBOR | CHARTMUSEUM | ✅ |
| HARBOR | HARBOR | ✅ |
| HARBOR | OCI | ✅ |
| HARBOR | LOCAL | ✅ |
| OCI | HELM | ❌ |
| OCI | CHARTMUSEUM | ✅ |
| OCI | HARBOR | ✅ |
| OCI | OCI | ✅ |
| OCI | LOCAL | ✅ |
| LOCAL | HELM | ❌ |
| LOCAL | CHARTMUSEUM | ✅ |
| LOCAL | HARBOR | ✅ |
| LOCAL | OCI | ✅ |
| LOCAL | LOCAL | ✅ |
# 拉取 charts-syncer 镜像(假设镜像名称为 bitnami/charts-syncer) docker pull bitnami/charts-syncer:latest # 运行同步(挂载本地配置文件) docker run --rm -v $(pwd)/config.yaml:/config.yaml bitnami/charts-syncer sync --config /config.yaml
docker run --rm \ -v $(pwd)/config.yaml:/config.yaml \ -e SOURCE_REPO_AUTH_USERNAME=source-user \ -e SOURCE_REPO_AUTH_PASSWORD=source-pass \ -e TARGET_REPO_AUTH_USERNAME=target-user \ -e TARGET_REPO_AUTH_PASSWORD=target-pass \ bitnami/charts-syncer sync --config /config.yaml
同步时工具会自动修改图表文件以适配目标环境,主要变更如下:
修改镜像仓库地址,示例:
# values.yaml 变更示例 image: - registry: docker.io - repository: bitnami/ghost + registry: registry.example.com + repository: charts/ghost tag: 3.22.2-debian-10-r0
requirements.yaml 和 requirements.lock 中的仓库地址。Chart.yaml 和 Chart.lock 中的仓库地址。示例(Helm v3 的 Chart.lock):
# Chart.lock 变更示例 dependencies: - name: zookeeper - repository: [***] + repository: [***] version: 5.21.9
修改文档中的仓库添加命令和部署命令,示例:
# README.md 变更示例 ## TL;DR; ```console -$ helm repo add bitnami [***] -$ helm install my-release bitnami/ghost +$ helm repo add my-private-repo [***] +$ helm install my-release my-private-repo/ghost
## 在 Kubernetes 中部署 可通过 Kubernetes CronJob 实现定期自动同步。示例 CronJob 配置(详情参见 Kubernetes 部署指南): ```yaml apiVersion: batch/v1 kind: CronJob metadata: name: charts-syncer spec: schedule: "0 3 * * *" # 每天凌晨3点执行 jobTemplate: spec: template: spec: containers: - name: charts-syncer image: bitnami/charts-syncer:latest command: ["sync", "--config", "/config/config.yaml"] volumeMounts: - name: config-volume mountPath: /config env: - name: SOURCE_REPO_AUTH_USERNAME valueFrom: secretKeyRef: name: repo-credentials key: source-username - name: SOURCE_REPO_AUTH_PASSWORD valueFrom: secretKeyRef: name: repo-credentials key: source-password # 其他环境变量... volumes: - name: config-volume configMap: name: charts-syncer-config restartPolicy: OnFailure
如需自行构建工具,参见 开发者文档。
Copyright © 2024 Broadcom. 术语“Broadcom”指 Broadcom Inc. 及其子公司。
本工具基于 Apache License 2.0 许可证开源。详情参见 LICENSE。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429