同一URL的Kubernetes部署中的多个imagePullSecrets

同一URL的Kubernetes部署中的多个imagePullSecrets,kubernetes,gitlab,Kubernetes,Gitlab,我使用GitLab的自托管实例来存储Docker图像。由于我们最近设置了Project Access令牌,我们希望使用每个注册表的单独机密在AK上提取图像。这意味着我们对“同一注册表”中的每个图像都有特定的凭据 问题是,部署有一个全局imagePullSecrets列表,该列表引用多个机密。这些秘密本质上持有不同的凭证(每个GitLab容器注册表一个凭证),共享相同的Docker注册表URL 简单地说,这里是一个部署示例: spec: 模板: 规格: 容器: -姓名:一 图片:'gitlab.c

我使用GitLab的自托管实例来存储Docker图像。由于我们最近设置了Project Access令牌,我们希望使用每个注册表的单独机密在AK上提取图像。这意味着我们对“同一注册表”中的每个图像都有特定的凭据

问题是,部署有一个全局
imagePullSecrets
列表,该列表引用多个机密。这些秘密本质上持有不同的凭证(每个GitLab容器注册表一个凭证),共享相同的Docker注册表URL

简单地说,这里是一个部署示例:

spec:
模板:
规格:
容器:
-姓名:一
图片:'gitlab.company.com/projectone:1.0.0'
-姓名:二
图片:“gitlab.company.com/projecttwo:1.2.0”
你的秘密:
-名称:秘密工程一
-名称:秘密工程二
秘密1(秘密项目1):

{
“授权”:{
"https://gitlab.company.com": {
“用户名”:“项目111机器人”,
“密码”:“密码项目一”,
“身份验证”:“密码”
}
}
}
秘密2(秘密项目2):

{
“授权”:{
"https://gitlab.company.com": {
“用户名”:“项目机器人”,
“密码”:“密码项目二”,
“身份验证”:“密码”
}
}
}
库伯内特斯应该如何区分使用哪个秘密?它是否假定您有不同的URL,并根据图像名称匹配正确的机密?或者它会尝试每一个秘密直到其中一个奏效


文档似乎没有涵盖这种情况。任何帮助都将不胜感激

在源代码中,我发现它只是一个接一个地尝试所有操作,然后返回第一个成功的操作

我不打算解释我如何发现这一点的整个过程,但这里有一些解释/证明:


当函数被调用时,它会一个接一个地尝试获取图像,这就是。

感谢您的查找!我也想搜索源代码,但现在没有时间/知识去搜索。从您看到的情况来看,您是否知道在成功登录后,它是否会“记住”给定图像的正确秘密?或者它每次都会这样做,因此会因为太多的失败而被禁止吗?我看不出它会记住任何秘密/标记。但是为什么你会被禁止?如果k8s无法拉取图像,它将在10秒后重试,然后在20秒、40秒等之后再次失败,因此它不会一直处于试图强制拉取图像的循环中,gitlab最终会在短时间内将您的太多请求列入黑名单(我认为是这样)。另外,如果你觉得我的答案很有帮助,别忘了留下一个类似的答案:DHi Matt,再次感谢你提供的有用信息!我不知道它会冷却下来。但在这种情况下,这种“愚蠢”的做法可能足够聪明,可以避免被禁止。我需要确定的是,我们的Kubernetes服务器一天有几十次部署和拉取。在我这种情况下,人们还应该评估在依赖身份验证时可能出现大量身份验证失败的影响。可能触发其他可以识别模式的网络安全机制。不管怎么说,你像冠军一样回答了我的问题