我使用 GitLab 的自托管实例来存储我的 Docker 映像。由于我们最近设置了项目访问令牌,因此我们希望使用每个注册表的单独 Secret 在 AKS 上提取映像。这意味着我们在“同一注册表”中拥有每个图像的特定凭据。
问题是,部署有一个imagePullSecrets引用多个 Secret 的全局列表。这些 Secret 本质上持有不同的凭据(每个 GitLab 容器注册表一个),但共享相同的 Docker 注册表 URL!
简而言之,这是一个部署示例:
spec:
template:
spec:
containers:
- name: one
image: 'gitlab.company.com/project-one:1.0.0'
- name: two
image: 'gitlab.company.com/project-two:1.2.0'
imagePullSecrets:
- name: secret-project-one
- name: secret-project-two
Run Code Online (Sandbox Code Playgroud)
秘密 1(秘密项目一):
{
"auths": {
"https://gitlab.company.com": {
"username": "project_111_bot",
"password": "password-project-one",
"auth": "Password"
}
}
}
Run Code Online (Sandbox Code Playgroud)
还有秘密 2(秘密项目二):
{
"auths": {
"https://gitlab.company.com": {
"username": "project_222_bot",
"password": "password-project-two",
"auth": "Password"
}
}
}
Run Code Online (Sandbox Code Playgroud)
Kubernetes 如何区分使用哪个 Secret?它是否假设您有不同的 URL,并且会根据图像名称匹配正确的 Secret?或者它会尝试每一个秘密,直到其中一个有效为止? …