惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
Stack Overflow Blog
Stack Overflow Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
Vercel News
Vercel News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Y
Y Combinator Blog
The Cloudflare Blog
Last Week in AI
Last Week in AI
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
小众软件
小众软件
Google DeepMind News
Google DeepMind News
D
DataBreaches.Net
博客园 - 司徒正美
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog

Solitudes

开源项目管理工具Plane部署篇 如果你受够了 Jira,可以认真看看这个开源项目管理工具 没有小技巧,帮你快速上手Codex 龙虾哥浏览器操控教程:QClaw让直接用你的浏览器 让AI先出原型再写代码,这是我用过最舒服的前端开发方式 安利两个Claude Code技能 简单记录一下杜甫折腾ipv6踩坑版 用 Tailscale 安全访问龙虾哥 OpenClaw 控制台 丙午马年 · 祝大家身体健康,马到成功,万事如意 出一台hk物理服务器 告别屎山代码!我如何用code-simplifier + code-review将代码审查效率提升200% 2025年终不总结 使用Let's Encrypt 签发的 IP 地址 SSL 证书 MinIO迁移RustFS实战指南一 Tailscale Peer Relay 最新变更解读 Umami 升级提醒:尽快更新以修复 Next.js CVE-2025-66478 漏洞 出一台闲置的物理服务器 Z-Image-Turbo,快就完事了 Debian/Ubuntu 默认禁用 SSH RSA 密钥?一篇文章教你彻底解决
k8s免密拉取镜像实践
ysicing · 2025-12-01 · via Solitudes

使用 copilot.microsoft.com 生成

算是一个比较老的知识点了 😂

之前都是使用云服务商提供的免密凭证,最近需要跨云跨账号,使用 AI 自己实现了一个通用的

原理

借助 ServiceAccount,实现 Pod 自动免密拉取私有镜像,做到镜像凭据配置一次,全命名空间或指定应用自动生效

主要优势

  • 一个 ns 空间下只需要配置一次 secrets。Kubernetes 拉取私有镜像需要认证信息。如果每个服务都写 imagePullSecrets,不仅配置冗余,也不利于权限统一管理

使用 ServiceAccount 可以带来两个好处:

  • 配置一次,全自动继承
  • 不污染 Pod 等 yaml,让业务部署更干净

手动配置

主要参考官方文档 为服务账号添加 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,因为权限难以收敛,当然我是没听他的建议。