k8s-imagePullSecrets私有镜像仓库认证

imagePullSecrets私有镜像仓库认证

原文链接:https://blog.csdn.net/LG_15011399296/article/details/124588675?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1-124588675-blog-104880304.pc_relevant_multi_platform_whitelistv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1-124588675-blog-104880304.pc_relevant_multi_platform_whitelistv2&utm_relevant_index=2

1 说明

imagePullSecret资源将Secret提供的密码传递给kubelet从而在拉取镜像前完成必要的认证过程,简单说就是你的镜像仓库是私有的,每次拉取是需要认证的。

1.1 配置说明

  • 创建docker-registry类型的Secret对象,并在定义pod资源时明确通过”imagePullSecrets”字段来申明使用哪个私钥去认证;

  • 创建docker-registry类型的Secret对象,然后把它添加到某个ServiceAccount对象中,使用了这个ServiceAccount对象创建出来的pod就自然而然通过认证获取到镜像;

2 第一种方式

配置过程
这里创建Secret对象有两种方式,各有千秋。

2.1 方式一:通过命令行直接创建Secret

kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

或者

kubectl create secret docker-registry video-docker-redistry-key \
    --docker-server=10.3.9.107:5000 \
    --docker-username='gsafety' \
    --docker-password='123456'

查看key

kubectl get secret

NAME                        TYPE                                  DATA   AGE
default-token-d9phm         kubernetes.io/service-account-token   3      19h
video-docker-redistry-key   kubernetes.io/dockerconfigjson        1      2s

最后在yaml文件中使用这个创建出来的Secret:

apiVersion: v1
kind: Pod
metadata:
  name: foo
  namespace: awesomeapps
spec:
  containers:
    - name: foo
      image: janedoe/awesomeapp:v1
  imagePullSecrets:
    - name: xxx-key

2.2 方式二:通过现存的docker认证文件来创建Secret

kubectl create secret generic xxx-key \
    --from-file=.dockerconfigjson=/root/.docker/config.json> \
    --type=kubernetes.io/dockerconfigjson