gpt4 book ai didi

kubernetes - 如何使用 GitLab 托管的 Kubernetes 集群从私有(private)项目的镜像注册表中提取数据

转载 作者:行者123 更新时间:2023-12-02 11:42:01 24 4
gpt4 key购买 nike

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

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

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

在我看来,这些是可能性以及它们不合格/最佳的原因:

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

那么,我在其中一个点上错了吗?我是否缺少此列表中符合条件的选项?

同样:这一切都是关于与 GitLab 的“托管集群”功能的无缝集成。我知道如何从 GitLab 添加 token 作为 Kubernetes 中的 ImagePullSecrets,但我想知道如何使用托管集群功能自动执行此操作。

最佳答案

还有一个办法。您可以在容器运行时配置中烘焙 ImagePullSecret。 Docker、containerd 或 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)"
    }
    }

容器

  • Configure your containerd.toml 文件是这样的:
    [plugins.cri.registry.auths]
    [plugins.cri.registry.auths."https://gcr.io"]
    username = ""
    password = ""
    auth = ""
    identitytoken = ""

CRI-O

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

✌️<​​/p>

关于kubernetes - 如何使用 GitLab 托管的 Kubernetes 集群从私有(private)项目的镜像注册表中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63639218/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com