Skip to the content.

harbor私有仓库镜像的推拉弹唱

harbor仓库有私有和公开2个访问级别,公开的话,不用密码就可以访问,没有安全性,下面介绍私有仓库的认证方式 在kubernetes官网有介绍创建docker-registry secret

kubectl create secret docker-registry SECRET_NAME --namespace=NAME_SPACE --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

这里没有采用上面方式,下面是创建拉取私有镜像的2种方式 1,首先命令行登录harbor,查看docker登录的信息

docker login harbor.bbotte.com:5000 -u admin -p haha\!@%^
 
# cat /root/.docker/config.json 
{
	"auths": {
		"harbor.bbotte.com:5000": {
			"auth": "AAABBBCCCDDD"
		},
		"hub.bbotte.com": {
			"auth": "AAABBBCCCDDD"
		}
	}
}

可以看一下记录的密码: echo AAABBBCCCDDD |base64 -d 2,获取docker-registry经base64加密的字符串

# base64 -w 0 .docker/config.json 
AAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDD

3,创建secret和serviceaccount

# cat docker-registry-auth.yaml
apiVersion: v1
kind: Secret
metadata:
  name: harbor-auth
  namespace: default
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: AAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDDAAABBBCCCDDD #这里是上面获取的加密字符串
 
 
# kubectl create -f yaml/harbor-auth.yaml 
secret "harbor-auth" created

4,查看生成的认证信息

# kubectl get secret|grep harbor
harbor-auth kubernetes.io/dockerconfigjson 1 1h

5,使用secret认证

apiVersion: v1
kind: Pod
metadata:
  name: testnginx
spec:
  containers:
  - name: testnginx
    image: harbor.bbotte.com:5000/devops/nginx:0.1
    imagePullPolicy: Always
  imagePullSecrets:
  - name: harbor-auth

也有说把.docker目录复制到kubelet就可以,node节点比较多,没测试 cp /root/.docker /var/lib/kubelet/

harbor结构:

https://github.com/vmware/harbor/wiki/Architecture-Overview-of-Harbor

2018年06月25日 于 linux工匠 发表