前言
有小伙伴在部署安装 iManager for k8s时需要使用自己的私有镜像仓库,而我们产品是提供有一个离线镜像包一启动就拥有一个离线镜像仓库容器,但由于不同场景需求,有部分客户需要使用自己私有镜像仓库,因此本文的目的就是带着大家将产品提供的离线镜像导入到客户自己的离线镜像仓库中。
为模拟环境,可利用registry镜像在自己本地创建私有镜像仓库,当然如果是公网也可以使用第三方平台的镜像服务,我这次就以docker.io/library/registry:latest搭建本地私有镜像仓库
一、搭建私有镜像仓库(参考https://blog.csdn.net/weixin_41003771/article/details/118788131)
- 执行docker pull registry命令 拉取registry镜像
- 创建auth目录,并生成用户名密码文件
(1) 在opt目录下 创建auth目录
(2) 首先安装yum -y install httpd
(3) 执行htpasswd -Bbn test test#123456 > /opt/auth/htpasswd
- 将对外端口设置为5001,挂载权限文件和镜像,启动镜像仓库容器
二、上传本地离线镜像包,同步镜像到创建好的私有镜像仓库中
.
- 解压镜像离线包以后,修改sync-auth.yaml 文件(注意,不要修改默认的内容,是新增加内容)
- 启动离线包的镜像仓库
- 执行同步命令
sudo chmod +x sync.sh && sudo ./sync.sh --port 5000 --dest-registry 172.16.14.221:5001 --dest-namespace supermap
到这里已经将离线包端口为5000的镜像仓库同步到,自己创建的端口为5001的私有镜像仓库中
三、测试用私有镜像仓库部署iManager for ks(详细的部署参考帮助文档,本文只侧重说明私用镜像仓库的使用方式)
- 修改value.yaml
myregistrykey为自定义的值,后面会用命令生成一个secret到supermap命名空间下,这样才能使其该命名空间下的资源能拉取到镜像。 - 然后执行启动命令
- 利用kubctl创建Secret绑定镜像仓库账号
执行命令完成,已经创建了supermap命名空间以后,马上去执行以下命令在supermap命名空间下创建secret
kubectl create secret docker-registry <自定义的secret> --docker-server=<私有镜像仓库地址> --docker-username= --docker-password= -n
注意:命名空间必须要设置,否则命名空间下的deployment无法拉取到镜像,本次我只部署了imanager,用的默认namespace,因此只执行一次。如果创建云套件,还需要在执行一次创建secret的命令,并指定到云套件所在的命名空间上
最后可以看到imanager for k8s使用的就是私用镜像仓库了