如何将Kubernetes与Docker Registry集成

JFrog支持
2022-04-07 12:07

通常,部署到Kubernetes集群中的应用程序被打包为容器映像。在任何规模的Kubernetes环境中,您可能需要使用几十、数百甚至数千个不同的容器映像。

Kubernetes本身并不为您管理这些映像。要做到这一点,你需要一个码头工人注册表它与Kubernetes环境集成在一起。Docker注册表作为容器映像的存储库。它们可以很容易地管理同一个容器的不同版本的映像。高级注册表还提供了扫描图像以查找安全漏洞的功能。大多数注册中心还提供访问控制特性,以便您可以限制谁能够查看和部署映像。

下面,我们将以JFrog Artifactory为例,解释如何将Kubernetes与Docker注册表集成。

Kubernetes的默认Docker注册表

在深入研究如何设置一个Kubernetes注册表,让我们更详细地讨论Kubernetes和Docker注册表之间的关系。

同样,Kubernetes本身没有原生Docker注册表功能。但是,一些Kubernetes发行版或服务会自动与特定的Docker注册表集成。例如,Red Hat OpenShift附带了一个默认注册表。一些基于云的Kubernetes服务还与托管在相同云中的容器注册表进行了本地集成。

但是,一般来说,大多数Kubernetes安装不提供开箱即用的注册表支持。即使您的Kubernetes环境确实具有本地注册表集成,您也可能更喜欢使用替代注册表(这几乎总是可以做到的)。现在可能有十几个生产级的Docker注册表可用,每个都有不同的功能,而Kubernetes供应商默认提供的注册表可能不是最适合您的需求。

Artifactory作为Kubernetes Docker注册表的好处

通过选择一个Docker注册表选项,比如Artifactory来为你的Kubernetes环境托管容器映像,你将受益于许多其他Docker注册表中没有的几个功能:

  • 安全性:Artifactory提供高级漏洞扫描逐层检查Docker映像安全风险。
  • 本地托管:支持本地托管的存储库和那些在云中运行的一样,Artifactory在Docker映像存储和管理的位置和方式上为您提供了最大的灵活性。
  • Docker Hub集成:Artifactory可以与Docker Hub集成一个流行的公共Docker Registry。这种集成允许您访问存储在Docker Hub中的图像,同时还可以利用Docker Hub缺乏的安全和访问控制功能,但这些功能可以通过Artifactory获得。
  • 灵活的工件托管:Artifactory不仅可以托管容器图像,还可以托管Helm图表和各种其他类型的对象。这意味着您可以使用Artifactory来管理几乎任何类型的工件,您可能需要作为支持Kubernetes集群的一部分托管,以及其他环境。

如何使用Artifactory作为Kubernetes的Docker注册表

在Kubernetes中使用Artifactory作为Docker注册表非常简单。下面是一些如何开始的示例,以及在将Artifactory与Kubernetes集成时可以做些什么。

在Kubernetes上设置Artifactory

如果您想在Kubernetes集群中运行Artifactory,可以使用Artifactory舵图

要部署图表,请在Kubernetes Web控制台中搜索并安装它。或者,从命令行安装:Helm repo添加jfrog https://charts.jfrog.io
Helm回购更新
Helm upgrade—install artifactory—命名空间artifactory jfrog/artifactory

抽取Docker映像

要将Docker镜像从Artifactory拉入Kubernetes,首先登录您的Artifactory Cloud帐户:Docker登录${server-name}.jfrog.io
然后,用:Docker拉${server-name}.jfrog。io / {repo-name} / <图像名称>
接下来,要在Kubernetes中部署映像,创建一个基于映像定义pod的YAML文件,然后使用“kubectl apply”创建pod。

使用Artifactory在Kubernetes上运行CI/CD管道

当使用Artifactory作为Docker注册表时,为了在Kubernetes上自动部署Docker映像,您可以设置一个完整的CI/CD管道。我们在这里概述了这个过程,但简而言之,它相当于:

  • 在Kubernetes建立Artifactory。
  • 在Kubernetes中安装Jenkins。
  • 设置容器或Helm图表,使用Jenkins管道自动部署到Kubernetes。