背景说明
一些场景需要获取镜像tag
列表(比如:批量导出镜像时)
安装easyctl
- 编译安装最新版
git clone https://github.com/weiliang-ms/easyctl.git
cd easyctl
go build -ldflags "-w -s" -o /usr/local/bin/easyctl
- 下载编译好的文件
chmod +x easyctl
mv easyctl /usr/local/bin
使用方式
- 生成默认配置文件
[root@localhost ~]# easyctl export harbor-image-list
I0928 21:19:46.803428 10628 export.go:41] 检测到配置文件参数为空,生成配置文件样例 -> config.yaml
- 修改配置文件
vi config.yaml
harbor-repo:
schema: http # 不可修改(暂不支持https harbor)
address: 192.168.1.1:80 # harbor连接地址
domain: harbor.wl.io # harbor域
user: admin # harbor用户
password: Harbor-12345 # harbor用户密码
preserve-dir: harbor-image-list # 不建议修改,持久化tag
projects: # 导出哪些项目下的镜像tag(如果为空表示全库导出)
- apache # project名称
- weaveworks
excludes: # 配置'projects'空值使用,过滤某些project
- ddd
- 导出
easyctl export harbor-image-list -c config.yaml --debug
单项目导出
导出单项目镜像列表
- 配置信息(部分内容已脱敏)
harbor:
schema: http
address: *.*.*.*
domain: harbor.wl.io
user: admin
password: ******
preserve-dir: harbor-image-list
projects:
- apache
- 导出语句,
--debug
输出debug
日志,可选参数
easyctl export harbor-image-list -c config.yaml --debug
- 目录文件结构如下:
/work # 执行命令的目录
├── config.yaml # 配置文件
└── harbor-image-list # 存放镜像列表文件的目录(内部按项目建立文件夹进行隔离)
├── apache # apache项目目录,存放apache下镜像列表文件
│ └── image-list.txt # apache下镜像列表文件
└── images-list.txt # 导出项目下的所有镜像列表(x/image-list.txt xx/image-list.txt等内容合集)
-
images/images-list.txt
内容
[root@localhost work]# cat images/images-list.txt
harbor.wl.io/apache/skywalking-java-agent:8.6.0-alpine
harbor.wl.io/apache/skywalking-oap-server:8.6.0-es7
harbor.wl.io/apache/skywalking-ui:8.6.0
-
images/apache/image-list.txt
内容
[root@localhost work]# cat images/apache/image-list.txt
harbor.wl.io/apache/skywalking-java-agent:8.6.0-alpine
harbor.wl.io/apache/skywalking-oap-server:8.6.0-es7
harbor.wl.io/apache/skywalking-ui:8.6.0
多项目导出
导出一个以上项目下镜像列表
- 配置信息(部分内容已脱敏)
harbor:
schema: http
address: *.*.*.*
domain: harbor.wl.io
user: admin
password: ******
preserve-dir: harbor-image-list
projects:
- apache
- b2i
- 导出语句,
--debug
输出debug
日志,可选参数
easyctl export harbor-image-list -c config.yaml --debug
- 目录文件结构如下:
/work/ # 执行命令的目录
├── config.yaml # 配置文件
└── harbor-image-list # 存放镜像列表文件的目录(内部按项目建立文件夹进行隔离)
├── apache # apache项目目录,存放apache下镜像列表文件
│ └── image-list.txt # apache下镜像列表文件
├── b2i # b2i项目目录,存放b2i下镜像列表文件
│ └── image-list.txt # b2下镜像列表文件
└── images-list.txt # 导出项目下的所有镜像列表(x/image-list.txt xx/image-list.txt等内容合集)
-
images/images-list.txt
内容
[root@localhost work]# cat images/images-list.txt
harbor.wl.io/apache/skywalking-java-agent:8.6.0-alpine
harbor.wl.io/apache/skywalking-oap-server:8.6.0-es7
harbor.wl.io/apache/skywalking-ui:8.6.0
harbor.wl.io/b2i/binary-nginx-builder:latest
harbor.wl.io/b2i/nginx-centos7-s2ibuilder:latest
harbor.wl.io/b2i/java-8-runtime:base-alpha
harbor.wl.io/b2i/java-8-runtime:base
harbor.wl.io/b2i/java-8-runtime:advance
harbor.wl.io/b2i/java-8-centos7:base
harbor.wl.io/b2i/java-8-centos7:advance
harbor.wl.io/b2i/tomcat9-java8-runtime:latest
harbor.wl.io/b2i/tomcat8-java8-runtime:latest
harbor.wl.io/b2i/tomcat8-java8-centos7:latest
harbor.wl.io/b2i/tomcat9-java8-centos7:latest
-
images/apache/image-list.txt
内容
[root@localhost work]# cat images/apache/image-list.txt
harbor.wl.io/apache/skywalking-java-agent:8.6.0-alpine
harbor.wl.io/apache/skywalking-oap-server:8.6.0-es7
harbor.wl.io/apache/skywalking-ui:8.6.0
-
images/b2i/image-list.txt
内容
[root@localhost work]# cat images/apache/image-list.txt
harbor.wl.io/b2i/binary-nginx-builder:latest
harbor.wl.io/b2i/nginx-centos7-s2ibuilder:latest
harbor.wl.io/b2i/java-8-runtime:base-alpha
harbor.wl.io/b2i/java-8-runtime:base
harbor.wl.io/b2i/java-8-runtime:advance
harbor.wl.io/b2i/java-8-centos7:base
harbor.wl.io/b2i/java-8-centos7:advance
harbor.wl.io/b2i/tomcat9-java8-runtime:latest
harbor.wl.io/b2i/tomcat8-java8-runtime:latest
harbor.wl.io/b2i/tomcat8-java8-centos7:latest
harbor.wl.io/b2i/tomcat9-java8-centos7:latest
全项目导出
导出全部项目下镜像列表
- 配置信息(部分内容已脱敏)
harbor:
schema: http
address: *.*.*.*
domain: harbor.wl.io
user: admin
password: ******
export-all: true
preserve-dir: harbor-image-list
projects:
- 导出语句
easyctl export harbor-image-list -c config.yaml --debug
- 目录文件结构如下:
/work/ # 执行命令的目录
├── config.yaml # 配置文件
└── harbor-image-list # 存放镜像列表文件的目录(内部按项目建立文件夹进行隔离)
├── apache # apache项目目录,存放apache下镜像列表文件
│ └── image-list.txt # apache下镜像列表文件
├── b2i # b2i项目目录,存放b2i下镜像列表文件
│ └── image-list.txt # b2下镜像列表文件
└── images-list.txt # 导出项目下的所有镜像列表(x/image-list.txt xx/image-list.txt等内容合集)
├── ceph-csi
│ └── image-list.txt
├── champ
│ └── image-list.txt
├── charts
│ └── image-list.txt
├── csiplugin
│ └── image-list.txt
├── elastic
│ └── image-list.txt
├── elasticsearch
│ └── image-list.txt
├── grafana
│ └── image-list.txt
├── hsa-cep
│ └── image-list.txt
├── hsa-k8s-public
│ └── image-list.txt
├── images-list.txt
├── istio
│ └── image-list.txt
├── jaegertracing
│ └── image-list.txt
├── jenkins
│ └── image-list.txt
├── jimmidyson
│ └── image-list.txt
├── kubernetes
│ └── image-list.txt
├── kubesphere
│ └── image-list.txt
├── library
│ └── image-list.txt
├── minio
│ └── image-list.txt
├── openebs
│ └── image-list.txt
├── openpitrix
│ └── image-list.txt
├── osixia
│ └── image-list.txt
├── paas
│ └── image-list.txt
├── prom
│ └── image-list.txt
└── weaveworks
└── image-list.txt