目 录CONTENT

文章目录

Kubernetes私有镜像认证实战-imagePullSecrets与ServiceAccount对比

Administrator
2025-07-28 / 0 评论 / 2 点赞 / 7 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Kubernetes私有镜像认证实战-imagePullSecrets与ServiceAccount对比

在Kubernetes集群里,Pod要拉取私有仓库的镜像,认证机制是必须搞懂的基础操作。
今天咱们就聊聊最常用的两种方法:imagePullSecrets和默认ServiceAccount,从原理到配置再到怎么用好它们。

一、两种认证方式有啥区别?

特性imagePullSecrets默认ServiceAccount
管谁单个Pod自己管整个命名空间一起管
怎么配在Pod配置里直接写绑到ServiceAccount上
谁优先Pod自己的配置最优先没显式配置时才用它
啥时候用需要单独控制Pod的权限整个命名空间用同一个凭证
安全范围精确到单个Pod整个命名空间通用

二、imagePullSecrets手把手教程

1. 先创建凭证

# 生成docker仓库的认证凭证
kubectl create secret docker-registry my-reg-secret \
  --docker-server=my-registry.com \
  --docker-username=admin \
  --docker-password=123456 \
  --docker-email=admin@example.com

2. 在Pod里指定用哪个凭证

spec:
  containers:
  - name: myapp
    image: my-registry.com/myapp:v1
  imagePullSecrets:
  - name: my-reg-secret  # 直接告诉Pod用哪个凭证

适合场景

  • 这个Pod需要单独访问其他仓库
  • 测试环境临时用不同的账号
  • 多云环境连不同仓库

三、默认ServiceAccount怎么用?

1. 给命名空间默认账号绑凭证

apiVersion: v1
kind: ServiceAccount
metadata:
  name: default  # 默认账号
  namespace: prod
imagePullSecrets:
- name: global-reg-secret  # 绑个全局凭证

2. Pod自动继承凭证

只要Pod没自己指定imagePullSecrets,就会自动用所在命名空间默认ServiceAccount绑的凭证。

小技巧

  • kubectl describe sa default -n xxxnamespace看看绑了啥凭证

四、该用哪个?看需求!

  • 要单独控制某个Pod → 用imagePullSecrets
  • 整个命名空间用同一个凭证 → 配默认ServiceAccount
  • 没显式配置 → 看命名空间默认账号有没有绑凭证

五、在kustomize里怎么用

此处使用的是在Kustomize中配置default saimagePullSecrets的思路

1. 创建Secret

在base中,创建secret文件,这样能够在多个环境中复用

cat <<EOF > base/secret.yaml
apiVersion: v1
kind: Secret
metadata:
  name: my-reg-secret
data:
  .dockerconfigjson: xxxxxxxxxxxxxx这里面的值,建议先用kubectl create secret docker-registry 生成
type: kubernetes.io/dockerconfigjson    

2. 将default sa 纳入到kustomize管理

在kustomize的kustomization.yaml中,将default sa纳入管理

cat <<EOF > kustomization.yaml
resources:
- default-sa.yaml

default-sa.yaml中,配置默认sa

cat <<EOF > default-sa.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: default

在kustomize的kustomization.yaml中,配置patch文件

cat <<EOF > kustomization.yaml
resources:
- default-sa.yaml

patches:
  - target:
      kind: ServiceAccount
      name: default
    patch: |-
      - op: add
        path: /imagePullSecrets
        value: []
      - op: add
        path: /imagePullSecrets/-
        value:
          name: my-reg-secret

六、总结

这两种方法用好,就能灵活控制Pod拉镜像的权限啦。日常运维中根据团队习惯选最适合的方式就行,关键是要保证安全性和易用性。

2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区