如何使用GitLab管理的Kubernetes集群从私有项目的镜像注册表中拉出 [英] How to pull from private project's image registry using GitLab managed Kubernetes clusters

查看:26
本文介绍了如何使用GitLab管理的Kubernetes集群从私有项目的镜像注册表中拉出的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

GitLab提供管理Kubernetes集群,包括(例如)创建命名空间、添加一些令牌等。在GitLab CI作业中,您可以直接使用$KUBECONFIG变量联系集群,例如使用HELM创建部署。只要GitLab项目是公开的,因此由GitLab项目的图像注册表托管的Docker图像是可公开访问的,这就像一个魔咒。

但是,在处理私人项目时,Kubernetes当然需要ImagePullSecret来验证GitLab的镜像注册表以检索镜像。据我所知,GitLab不会自动为存储库访问提供ImagePullSecret

因此,我的问题是:在GitLab托管部署环境中的Kubernetes部署中,访问私有GitLab存储库的映像存储库的最佳方式是什么?

在我看来,以下是它们不符合条件/最佳的可能性和原因:

  • 永久性ImagePullSecret由GitLab提供:在GitLab管理的Kubernetes集群上进行部署时,GitLab向部署脚本(如Helm Chart或kubectl apply -f manifest.yml)提供a list of variables据我所见(不能),有很多东西,如ServiceAccount和Token等,但没有ImagePullSecret-也没有启用ImagePullSecret创建的配置选项
  • 使用$CI_JOB_TOKEN:在使用GitLab CI/CD时,GitLab提供了一个名为$CI_JOB_TOKEN的变量,用于在作业执行时将Docker镜像上传到注册表。此内标识在作业完成后过期。它可以与helm install --wait结合使用,但是当对还没有映像的新节点进行重新调度时,令牌将过期,该节点将无法再下载映像。因此,这仅在部署应用程序的时刻有效。
  • 手动创建ImagePullSecret并将其添加到Deployment或默认ServiceAccount:*这是一个手动步骤,必须为每个单独的项目重复,非常糟糕-我们正在尝试自动化/GitLab管理的Kubernetes群集旨在避免任何手动步骤。`
  • 其他,但我不知道。

那么,在这几点中有一点我说错了吗?我是否在此列表中缺少合格选项?

再说一遍:这一切都是关于与GitLab的";Managed Cluster&qot;功能的无缝集成。我知道如何将GitLab中的令牌作为ImagePullSecrets添加到Kubernetes中,但我想知道如何使用托管群集功能自动执行此操作。

推荐答案

还有另一种方法。您可以在容器运行时配置中烘焙ImagePullSecret。docker、tainerd或CRI-O(无论您使用什么)

Docker

  • 以root身份运行docker login <your-private-registry-url>。则应创建/更新文件/root/.docker/config.json。将其放入所有Kubernetes节点中,并确保您的kubelet以root身份运行(通常如此)。Some background info

    文件内容应如下所示:

    {
          "auths": {
              "my-private-registry": {
                  "auth": "xxxxxx"
              }
          },
          "HttpHeaders": {
              "User-Agent": "Docker-Client/18.09.2 (Linux)"
          }
    }
    

容器d

  • Configure your containerd.toml文件,如下所示:
    [plugins.cri.registry.auths]
      [plugins.cri.registry.auths."https://gcr.io"]
        username = ""
        password = ""
        auth = ""
        identitytoken = ""
    

CRI-O

  • crio.conf文件中指定global_auth_file选项。

✌️

这篇关于如何使用GitLab管理的Kubernetes集群从私有项目的镜像注册表中拉出的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆