k8s配置harbor密钥

一、简介

1、Kubernetes在拉取私服(Harbor)镜像时,经常出现问题,导致ImagePullBackOff,通过desicribe查看pod发现没有pull权限所致。

2、首先,不要寄望于~/.docker/config.json。与Docker Swarm不同,Kubernetes不会使用这里的配置来pull。

二、k8s解决方案

1、使用imagePullSecrets

  • 创建secret
kubectl -n yh create secret docker-registry harbor \
--docker-server=harbor.abc.com \
--docker-username=admin \
--docker-password='123456'
  • 其中.dockerconfigjson的值包含了登录harbor的用户名和密码等信息,通过以下命令进行查看:
kubectl get secret harbor -n yh --output="jsonpath={.data.\.dockerconfigjson}" | base64 -d
  • yaml文件添加imagePullSecrets
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rapid-back-deployment
  namespace: yh
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rapid-back
  template:
    metadata:
      labels:
        app: rapid-back
    spec:
      containers:
        - name: rapid-back
          image: 192.168.1.6:6001/rapid-ys-test/rapid-back:release
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          envFrom:
            - configMapRef:
                name: rapid-back-configmap
      imagePullSecrets:
      - name: harbor

2、将认证信息添加到serviceAccount

  • 以上方案需要在每个yaml文件中添加imagePullSecrets标签,比较麻烦,通过将secret绑定到sa上,可以实现该命名空间下的所有访问
  • 添加secrets到serviceaccount中
kubectl patch serviceaccount default -n yh -p '{"imagePullSecrets": [{"name": "harbor"}]}'
  • 查看sa详情
kubectl describe serviceaccount default -n yh

三、参考

posted @ 2022-09-06 12:14  吕林光  阅读(1076)  评论(0编辑  收藏  举报