n-devops / public-image-syncer

公共镜像同步器, 同步公共镜像
Apache License 2.0
0 stars 0 forks source link

public-image-syncer

完成了公共镜像同步, 基于公共镜像构建, 两项功能

同步流程描述

sync-pipline.png

  1. 公共镜像同步器, 将镜像拉取到阿里云镜像仓库
  2. 公共镜像构建器, 将镜像构建后推送到阿里云镜像仓库
  3. Teamcity 将阿里云镜像仓库中的镜像拉取到私服

同步过程

  1. 利用GitHub Action同步镜像或者构建镜像至阿里云北京站
  2. 利用Teamcity同步镜像至私服

配置描述

镜像库映射规则描述

@formatter:off

  1. docker.io镜像, 官方镜像放在library项目下, 机构镜像放在相应的机构下 a. 官方镜像:
    -> docker.io/nginx:1.17.4
    -> registry.cn-beijing.aliyuncs.com/public-image-mirror/docker.io_nginx:1.17.4
    -> docker-hosted.nstl-dev.com/library/nginx:1.17.4
    b. 机构镜像:
    -> docker.io/adoptopenjdk/openjdk11:latest
    -> registry.cn-beijing.aliyuncs.com/public-image-mirror/docker.io_adoptopenjdk_openjdk11:latest
    -> docker-hosted.nstl-dev.com/adoptopenjdk/openjdk11:latest

  2. ghcr.io镜像
    a. ghcr.io/kube-vip/kube-vip:v0.5.0
    -> registry.cn-beijing.aliyuncs.com/public-image-mirror/ghcr.io_kube-vip_kube-vip:v0.5.0
    -> docker-hosted.nstl-dev.com/kube-vip/kube-vip:v0.5.0
    b. ghcr.io/coreos/etcd:v3.5.5
    -> registry.cn-beijing.aliyuncs.com/public-image-mirror/ghcr.io_coreos_etcd:v3.5.5
    -> docker-hosted.nstl-dev.com/coreos/etcd:v3.5.5

  3. registry.k8s.io k8s 镜像特殊处理:
    a. 映射至私有仓库google_containers项目下:
    -> registry.k8s.io/kube-proxy:v1.28.0
    -> registry.cn-beijing.aliyuncs.com/nstl_google_containers/kube-proxy:v1.28.0
    -> docker-hosted.nstl-dev.com/google_containers/kube-proxy:v1.28.0
    b. coredns特殊处理, coredns镜像/coredns/coredns路径变为/coredns打平映射:
    -> registry.k8s.io/coredns/coredns:latest
    -> registry.cn-beijing.aliyuncs.com/nstl_google_containers/coredns:latest
    -> docker-hosted.nstl-dev.com/google_containers/coredns:latest
    c. kubeadm 使用时 --image-repository docker-hosted.nstl-dev.com/google_containers

  4. docker.elastic.co 镜像与DockerHub上的镜像放在同一个中转库中, 但是到私服会分清路径, DockerHub上elastic的镜像不全, 只有几个最新版本的镜像:

  5. 自定义的公共镜像的拓展镜像, 使用transfer-mappings.yaml规则文件中的描述, 映射成相应的镜像

@formatter:on

同步器来自于

image-syncer-v1.5.4 https://github.com/AliyunContainerService/image-syncer

部分代码来自于

https://github.com/DaoCloud/public-image-mirror