JFrog Artifactory:你的Kubernetes注册表

JFrog Artifactory作为您的Kubernetes注册表将软件构件组合到容器化的Kubernetes应用程序中

容器允许您在特定硬件甚至vm的抽象级别上简化和管理应用程序(特别是微服务应用程序)。正如我们所看到的,像Kubernetes这样的容器编排系统允许您创建应用程序并并排部署它们,而不必担心各种服务和组件之间的兼容性。这篇博客文章回顾了在Kubernetes中为部署在容器化应用程序组合各种来源的组件的好处和挑战,并进行了展示JFrog Artifactory如何作为您的Kubernetes注册表为了在这个多语种环境中成功应对这些挑战。

为什么要使用Kubernetes运行集装箱应用程序?

将应用打包并在Kubernetes上运行的好处是,你使用的产品拥有一个充满活力的社区更容易创建可伸缩的微服务应用程序。根据你使用的操作系统、语言和框架的不同,你的容器化应用程序将有几种类型的组件。当你有一个整个团队的人在不同的组件上工作时,它很快就会变得相当复杂。

集装箱应用使用Git, Debs或rpm或Yum, Maven, Docker, Helm

为了得到复杂度的范围,让我们首先看一下m构成Kubernetes应用程序的任何类型的工件。这些部分中的每一部分都被组合起来创建应用程序,并从多个位置获取资源,要么从源代码构建,要么从中央存储库下载外部依赖项。这些构建块代表了Kubernetes应用程序的端到端供应链。虽然可以为每个包使用单独的包管理解决方案,(例如,一个用于您的Debs存储库,另一个用于您的码头工人注册表),把它们都放在一个中心位置是有好处的。一个原因是您可以跨技术和跟踪完整的构建版本在持续集成(CI)和交付期间度量质量遍历应用程序中每种工件类型之间的依赖关系。

如果我有多个Kubernetes CI管道呢?

在您的组织中,不同的团队可能使用不同版本的依赖项(事实上,这是使用的意义的一部分容器在运行时),所以它们可以在发布时保持独立性。您的Kubernetes集群可以并排运行多个应用程序栈,而不会产生冲突,也不会关心每个应用程序的内部依赖关系。这将维护正在运行的集群、扩大和缩小应用程序、开发新版本和调试应用程序特定问题之间的关注点分离开来。现在你有了多个Kubernetes团队是并行工作的,你到底要如何存储所有这些组件而不增加大量的复杂性呢?

是否有一种简单的方法来管理Kubernetes工件?

在许多情况下,企业团队(特别是那些关心安全的团队)维护自己的Docker基础映像并始终进行构建从头开始.因此,为了构建完整的应用程序堆栈,您的团队需要引入操作系统组件来获得基本映像。从那里,你需要依赖于应用程序语言的包。例如,一个节点应用程序在npm中有依赖关系,而一个Ruby应用程序将有gem。每一个都将基于特定的语言版本依赖关系。每个特定于应用程序的配置都可以分解为一个基础映像,供应用程序开发团队重用。

一旦有了应用程序代码,就可以了码头工人建造每个应用程序层都可以变成容器映像,可以在Kubernetes集群中部署和运行,可以单独运行,也可以作为微服务应用程序的一部分。从这里开始,您将使用Kubernetes yaml配置文件来描述微服务应用程序,可以使用该配置文件进行管理执掌图表.为了不同的目的或随着时间的推移,这些图表也可以进行版本控制。

JFrog Artifactory充当Kubernetes注册表

我们认为一个成功的模式是使用Artifactory作为您的“Kubernetes注册表,因为它可以让您深入了解代码到集群的过程,同时与每个应用程序的每个层相关。Artifactory在一个系统中支持25+不同的技术,具有一个元数据模型、一个推广流程和强大的构件间关系。

这与使用Docker注册表作为Kubernetes应用程序构件的主要存储库形成对比。在这种设置中,您失去了跨Docker映像跟踪依赖关系的能力(要么是因为它们在不同的应用程序、不同的组件中,要么只是随着时间的推移而不同的版本)。一个Docker注册表是必要的,但还不足以为你的Kubernetes应用程序收集和管理工件。跟踪内容,依赖关系和与其他Docker镜像的关系不能通过一个简单的Docker注册表完成。

在开启您的Kubernetes之旅之前的最后提示!

如果您正在运行Kubernetes应用,你应该从上到下知道每个应用程序中运行的是什么。Docker映像是运行时版本打包中非常重要的一部分,但只是其中的一部分。不要忘记跟踪和存储应用程序的每一层,并了解在开发和发布过程中如何将这些部分连接起来。

阅读更多关于Artifactory和Kubernetes的信息