当我们需要搭建私有化集群时,由于业务需要可能需要搭建私有镜像仓库,以下是k8s部署pod时使用私有harbor的配置方法,亲测有效!
1、在每台服务器上配置harbor的地址,修改或创建/etc/docker/daemon.json文件,加入以下配置:
[user@ubuntu ~]$ cat /etc/docker/daemon.json
{ "insecure-registries":["192.168.1.3:9031"] }
// 192.168.1.3:9031 即为harbor的地址
// 配置完成后重启docker服务
[user@ubuntu ~]$ sudo systemctl restart docker
2、登录harbor
harbor开启https后,即使通过http地址访问,它也会重定向到https的地址,所以这里直接用https地址登录,步骤1中的地址也配置成https的地址 。登录时根据提示输入harbor的用户名和密码,由于我之前登录过,再登录就不用输入了。
[user@ubuntu ~]$ sudo docker login https://192.168.1.3:9031
[sudo] password for user:
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
[user@ubuntu ~]$
3、查看秘钥:
[user@ubuntu ~]$ sudo cat /root/.docker/config.json
{
"auths": {
"192.168.1.3:9031": {
"auth": "abhdj863hdH“此处省略很多字”iZS16djhhjh="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/19.03.14 (linux)"
}
}
[user@ubuntu ~]$
4、将密钥进行base64加密:
[user@ubuntu ~]$ sudo cat /root/.docker/config.json | base64 -w 0
sdf“此处省略很多字”=
5、创建 harbor_secret.yaml 文件
apiVersion: v1
kind: Secret
metadata:
name: harbor-login
type: kubernetes.io/dockerconfigjson
data:
# 这里添加上述base64加密后的密钥
.dockerconfigjson: sdf“此处省略很多字”=
6、创建secret
[user@ubuntu ~]$ sudo kubectl create -f harbor_secret.yaml
[user@ubuntu ~]$ sudo kubectl get secret
NAME TYPE DATA AGE
default-token-vdkjw kubernetes.io/service-account-token 3 26d
harbor-login kubernetes.io/dockerconfigjson 1 22d
[user@ubuntu ~]$
7、在pod的deployement yaml文件中添加如下配置即可,deployement yaml具体使用这里不做详解。
imagePullSecrets:
- name: harbor-login