apr*_*985 10 artifactory kubernetes kubernetes-helm
是否可以全局(或至少每个名称空间)配置kubernetes,使其在连接到私有存储库时始终使用映像拉密钥?有两种用例:
我知道可以在服务帐户的基础上执行此操作,但是如果不编写控制器将其添加到创建的每个新服务帐户中,就会有些混乱。
有没有办法全局设置此值,因此如果kube尝试从注册表X拉出它使用秘密Y?
谢谢
vic*_*rtv 15
据我所知,通常默认serviceAccount 负责拉取图像。要轻松地将 imagePullSecrets 添加到 serviceAccount,您可以使用patch 命令:
kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "mySecret"}]}'
Run Code Online (Sandbox Code Playgroud)
可以kubectl patch在跨所有命名空间的 serviceAccounts 上插入 imagePullSecrets 的脚本中使用。
如果管理多个命名空间太复杂,您可以查看kubernetes-replicator,它在命名空间之间同步资源。
解决方案 2:
文档的这一部分解释了如何基于节点设置私有注册表:
以下是配置节点以使用私有注册表的推荐步骤。在本例中,在您的台式机/笔记本电脑上运行这些:
docker login [server]为您要使用的每组凭据运行。这更新$HOME/.docker/config.json。$HOME/.docker/config.json在编辑器中查看以确保它只包含您要使用的凭据。获取节点列表,例如:
如果您想要名称:
nodes=$(kubectl get nodes -o jsonpath='{range.items[*].metadata}{.name} {end}')如果你想获取 IP:
nodes=$(kubectl get nodes -o jsonpath='{range .items[*].status.addresses[?(@.type=="ExternalIP")]}{.address} {结尾}')将本地 .docker/config.json 复制到上面的搜索路径列表之一。例如:
对于 $nodes 中的 n;做 scp ~/.docker/config.json root@$n:/var/lib/kubelet/config.json; 完毕
解决方案 3:
我发现不需要在部署/服务帐户基础上设置 imagePullSecret 的(非常脏!)方法是:
docker pull myrepo/image:tag. 好吧,我想我不需要解释它有多丑。
PS:如果有帮助,我在 kubernetes/kops 上发现了一个关于为私有注册表创建全局配置的功能的问题。
| 归档时间: |
|
| 查看次数: |
826 次 |
| 最近记录: |