
























算是一个比较老的知识点了 😂
之前都是使用云服务商提供的免密凭证,最近需要跨云跨账号,使用 AI 自己实现了一个通用的
借助 ServiceAccount,实现 Pod 自动免密拉取私有镜像,做到镜像凭据配置一次,全命名空间或指定应用自动生效
使用 ServiceAccount 可以带来两个好处:
主要参考官方文档 为服务账号添加 ImagePullSecrets
首先,生成一个 imagePullSecret; 接下来,验证该 Secret 已被创建。例如:
kubectl create secret docker-registry myregistrykey --docker-server=<registry name> \
--docker-username=DUMMY_USERNAME --docker-password=DUMMY_DOCKER_PASSWORD \
--docker-email=DUMMY_DOCKER_EMAIL
# 检查该 Secret 已经被创建
kubectl get secrets myregistrykey
NAME TYPE DATA AGE
myregistrykey kubernetes.io/.dockerconfigjson 1 1d
将镜像拉取 Secret 添加到服务账号
接下来更改名字空间的默认服务账号,将该 Secret 用作 imagePullSecret
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "myregistrykey"}]}'
效果等同于
apiVersion: v1
kind: ServiceAccount
metadata:
creationTimestamp: 2021-07-07T22:02:39Z
name: default
namespace: default
uid: 052fb0f4-3d50-11e5-b066-42010af0d7b6
imagePullSecrets:
- name: myregistrykey
再当前命名空间下创建一个私有仓库的 Pod 测试看看
原理就是 watch ns 创建,当收到 ns 创建后,自动创建相关凭证,同时给 ns 打上凭证版本标签,方便后续凭证有更新。
不建议把 secret 绑定到 default ServiceAccount,因为权限难以收敛,当然我是没听他的建议。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。