docker - 在不使用 imagePullSecrets 的情况下从 kubernetes 中的私有存储库中提取图像
问题描述
我是 kubernetes 部署的新手,所以我想知道是否可以在不使用imagePullSecrets
部署 yaml 文件的情况下从私有 repo 中提取图像,或者是否必须创建一个 docker 注册表秘密并在 imagePullSecrets 中传递该秘密。我还考虑将 imagePullSecrets 添加到服务帐户,但这不是我想知道的要求,如果我在变量中设置凭据,kubernetes 可以使用它们来提取这些图像。还想知道如何实现它并且参考文档会起作用提前谢谢。
解决方案
只要您在 Kubernetes 节点上使用 Docker(请注意,Docker 支持本身最近在 Kubernetes 中已被弃用),您就可以根据您的私有注册表对节点本身上的 Docker 引擎进行身份验证。
本质上,这归结为docker login
在您的机器上运行,然后将生成的凭证 JSON 文件直接复制到您的节点上。当然,这仅在您可以直接控制节点配置时才有效。
有关更多信息,请参阅文档:
如果您在节点上运行 Docker,则可以将 Docker 容器运行时配置为对私有容器注册表进行身份验证。
如果您可以控制节点配置,则此方法适用。
Docker 将私有注册表的密钥存储在
$HOME/.dockercfg
or$HOME/.docker/config.json
文件中。如果您将相同的文件放在下面的搜索路径列表中,kubelet 会在拉取镜像时将其用作凭证提供程序。
{--root-dir:-/var/lib/kubelet}/config.json
{cwd of kubelet}/config.json
${HOME}/.docker/config.json
/.docker/config.json
{--root-dir:-/var/lib/kubelet}/.dockercfg
{cwd of kubelet}/.dockercfg
${HOME}/.dockercfg
/.dockercfg
注意:您可能必须
HOME=/root
在 kubelet 进程的环境中显式设置。以下是配置节点以使用私有注册表的推荐步骤。在此示例中,在您的台式机/笔记本电脑上运行这些:
docker login [server]
为您要使用的每组凭据运行。这会$HOME/.docker/config.json
在您的 PC 上更新。- 在编辑器中查看
$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} {end}' )
- 将您的本地复制
.docker/config.json
到上面的搜索路径列表之一。例如,要对此进行测试:for n in $nodes; do scp ~/.docker/config.json root@"$n":/var/lib/kubelet/config.json; done
注意:对于生产集群,请使用配置管理工具,以便您可以将此设置应用于您需要它的所有节点。
推荐阅读
- javascript - 如何将当前日期格式更改为日期名称?
- blender - 我可以在搅拌机中禁用镜像重量涂料吗?
- c++ - 为什么带有 SSL 的 libcurl 在 Windows 上会产生未定义的引用错误?
- javascript - vue-router:在元数据中使用参数?
- docusignapi - Docusign 演示:https://account-d.docusign.com IP 地址不断变化
- javascript - 如何连续 20 个月每月显示一条新消息
- javascript - 是否可以通过 Cloud Functions 一次为 Firestore 调用多个更新查询?
- python - 如何通过Pycharm等外部应用程序连接docker中的Oracle数据库?
- amazon-web-services - 解析 HTTP 404 响应正文的 Docker AWS ECR 错误:顶级值后的无效字符“p”:“未找到 404 页面\n”
- r - R不使用download.file下载总tar.gz