一、概述
关于kubernetes使用私有docker image registry的一些说明:
1、对于自己构建的项目镜像或一些不想暴露到外网的image需要使用自建的私有仓库,一般有两种选择:docker registry v2、harbor
2、镜像仓都是做安全认证的,kubernetes在使用的时候也需要把认证加上去,采用创建secret的方式使用
3、关于镜像仓的选择:docker registry v2是官方的,部署简单,不提供原生删除image的功能;harbor功能比较全面,并且自带ui方便使用管理。单纯从使用来看一般docker registry v2完全满足需求,关于镜像的清理参考:
https://gist.github.com/cuishuaigit/34439b8946821c7898d1faefbf5bdbb1
https://www.cnblogs.com/cuishuai/p/9107069.html
二、使用
在k8s集群的任意一个node节点上登陆registry,例如registry的地址是https://my-registry.image.com,user=registry,password=admin123
1、登陆
docker login https://my-registry.image.com -u registry -p
然后输入密码(为了安全不要在后面直接写密码,选择交互式输入),此时会在当前登陆的用户目录下面有个.docker/config.json文件,这里面记录了认证信息。
2、创建secrete
根据上面生成的config.json创建secrete:
cat config.json |base64 -w
然后将生成的字串复制到secrete的创建yaml文件里面(确保没有多余的东西被复制):
cat image-secrete.yaml
apiVersion: v1
kind: Secret
metadata:
name: registry-secrete
namespace: default
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson
.dockerconfigjson后面的内容就是上面生成的字串
创建secrete
kubectl create -f image-secrete.yaml