Henry
发布于 2025-02-26 / 10 阅读
0
0

Kubernetes - 配置 Image Pull Secret

背景简介

Kubernetes配置Image Pull Secret,是为了让Pod在拉取私有镜像仓库中的镜像时,能够验证身份,确保容器运行所需的镜像安全可靠。

环境信息

  1. Kubernetes v1.29.1。【Kubernetes - 安装

示例参数

演示用的示例参数请根据实际使用场景进行变更。

  • 镜像库: repo.test.com
  • 用户名: tester
  • 密码: password
  • 需要拉取的镜像: nginx:latest 

详细步骤

注意点:

  • 请确认是否需要指定 namespace,如需指定 namespace 请在 kubectl 指令中添加 -n your-namespace

第一步: 创建一个名为 docker-config.json 的文件,该文件将包含用于登录私有镜像库的凭据。

$ nano docker-config.json
{
  "auths": {
    "repo.test.com": {
      "username": "tester",
      "password": "password"
    }
  }
}

第二步: 生成 docker-config.json 配置文件的 base64 编码串,用于后续使用

$ base64 docker-config.json 
ewogICJhdXRocyI6IHsKICAgICJyZXBvLnRlc3QuY29tIjogewogICAgICAidXNlcm5hbWUiOiAi
dGVzdGVyIiwKICAgICAgInBhc3N3b3JkIjogInBhc3N3b3JkIgogICAgfQogIH0KfQo=

第三步: 创建一个 Kubernetes Secret 资源文件,例如 image-pull-secret.yaml

apiVersion: v1
kind: Secret
metadata:
  name: image-pull-secret
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: ewogICJhdXRocyI6IHsKICAgICJyZXBvLnRlc3QuY29tIjogewogICAgICAidXNlcm5hbWUiOiAidGVzdGVyIiwKICAgICAgInBhc3N3b3JkIjogInBhc3N3b3JkIgogICAgfQogIH0KfQo=
  • apiVersion: v1:指定API版本。
  • kind: Secret:指定资源类型为Secret。
  • metadata.name:指定Secret的名称。
  • type:指定Secret的类型为 kubernetes.io/dockerconfigjson,这是用于Docker配置的Secret类型。
  • data:包含 Base64 编码的 docker-config.json 内容。

第四步: 使用kubectl应用Secret资源文件。

$ kubectl apply -f image-pull-secret.yaml -n your-namespace
secret/image-pull-secret created

第五步: 创建一个Pod资源文件,例如 nginx-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod
spec:
  containers:
  - name: nginx
    image: repo.test.com/nginx:latest
  imagePullSecrets:
  - name: image-pull-secret
  • spec.containers.image:指定要拉取的镜像。
  • imagePullSecrets:指定在拉取镜像时使用的Secret。

第六步: 使用 kubectl 应用 Pod 资源文件。

$ kubectl apply -f nginx-pod.yaml -n your-namespace
pod/nginx-pod created

第七步: 查看启动状态

$ kubectl get pod -n your-namespace
NAME        READY   STATUS    RESTARTS   AGE
nginx-pod   1/1     Running   0          107s

以上便是本文的全部内容,感谢您的阅读,如遇到任何问题,欢迎在评论区留言,我会通过邮件回复。



评论