前提条件是,参考docker(二)添加私有仓库认真,这里假设,k8s node 节点,已经通过,harbor 的认证,这是 在/root/.docker/下生成config.json 文件

内容大概就是

{
	"auths": {
		"harbor.studeylinux.com": {
			"auth": "xxxxxxxxxxxxxxxx"
		}
	}

这样的认证信息,但是不能没个node 节点都去添加这个东西,横向扩展的时候,就很麻烦了

所以,把这个信息添加到k8s 的secrets里的认证,每个节点都可以进行调用,到时候只需要维护私有仓库的用户,就可以了

这个时候编写k8s 所需的要harbor认证yaml 文件

首先把config.json 加密

cat config.json |base64 -w 0
ewogICJhdXRocyI6IHsKICAgICJodWIudGVzdGhhcmJvci5jb20iOiB7CiAgICAgICJhdXRoIjogI

得到一大串密文,-w 0  是不让换行

编写yaml 文件

apiVersion: v1
kind: Secret
metadata:
  name: harbor.studeylinux.com.key
type: kubernetes.io/dockercfg
data:
  .dockercfg: ewoJImF1dGhzIjogewoJCSJoYXJib3Iuc3R1ZGV5bGludXguY29tIjogewoJCQkiYXV0aCI6ICJaR1YyT2tsM2FuY3hNak0wTlRZPSI

我这里没有指定namespace,正常来讲必须指定,然后指定secrets的名字,最后加上我们刚才加密后的密码

然后在k8s 中利用yaml 直接创建,也可以用命令

kubectl create harbor.yaml

到此,就可以编写pod.yaml文件来进行部署并拉取镜像了

apiVersion: v1
kind: Pod
metadata:
  name: tomcat
spec:
  containers:
  - name: tomcat
    image: tomcat
  imagePullSecrets:
  - name: harbor.studeylinux.com.key

这个是我自己写的简单例子,实际应用可以,自己修改