JFrog Artifactory: Kubernetes注册表
将软件构件组合到容器化的Kubernetes应用程序中
容器允许您在特定硬件甚至虚拟机的抽象级别上简化和管理应用程序(尤其是微服务应用程序)。正如我们所看到的,像Kubernetes这样的容器编排系统可以让你创建应用程序并并行部署它们,而不用担心各种服务和组件之间的兼容性。这篇博文回顾了在Kubernetes中为容器化应用程序组合各种来源的组件的好处和挑战,并展示了JFrog Artifactory如何作为Kubernetes注册表在这个多语言的环境中成功地应对这些挑战。
为什么容器化的应用程序应该使用Kubernetes运行?
容器化应用程序并与Kubernetes一起运行的好处是,您使用的产品具有充满活力的社区让创建可扩展的微服务应用变得更容易。您的容器化应用程序将有几种类型的组件,这取决于您正在使用的操作系统、语言和框架。当你有一整个团队的人在处理不同的组件时,它很快就会变得相当复杂。

为了了解复杂度的范围,让我们首先看一下m构成Kubernetes应用程序的任何类型的工件。这些部分被组合在一起创建应用程序,并且来自多个位置,要么从源代码构建,要么作为从中央存储库下载的外部依赖项。这些构建块代表了Kubernetes应用程序的端到端供应链。虽然可以为每个应用程序使用单独的包管理解决方案(例如,一个用于您的Debs存储库,另一个用于您的码头工人注册表),但把所有资料放在一个中心位置是有好处的。一个原因是,您可以跨技术跟踪完整的构建版本在持续集成(CI)和交付期间度量质量遍历应用程序中每种工件类型之间的依赖关系。
如果我有多个Kubernetes CI管道怎么办?
在您的组织中,不同的团队可能正在使用不同版本的依赖项(事实上,这是使用依赖项的一部分意义)容器(在运行时),这样它们可以在发布时保持独立性。Kubernetes集群可以并行运行多个应用程序堆栈,而不会发生冲突,也不会关心每个应用程序的内部依赖关系。这将维护运行的集群、上下扩展应用程序、开发新版本和调试应用程序特定问题之间的关注点分开。现在你有了多个Kubernetes团队并行工作,你究竟如何在不增加疯狂的复杂性的情况下存储所有这些组件?
是否有一种简单的方法来管理Kubernetes工件?
在许多情况下,企业团队(尤其是那些关注安全性的团队)维护他们自己的Docker基础映像,并且总是构建从头开始.因此,为了构建完整的应用程序堆栈,您的团队需要引入操作系统组件来获取基本映像。从那里,你将需要依赖于应用语言的包。例如,一个node应用程序将在npm中有依赖项,而一个Ruby应用程序将有gems。每一个都将基于特定的语言版本依赖。每个特定于应用程序的配置都可以折叠成一个基本映像,供应用程序开发团队重用。
一旦有了应用程序代码,就可以了码头工人建造将每个应用程序层放入容器映像中,这些容器映像可以单独或作为微服务应用程序的一部分在Kubernetes集群中部署和运行。从这里开始,您将使用Kubernetes yaml配置文件描述微服务应用程序,这些配置文件可以使用Kubernetes yaml配置文件进行管理执掌图表.图表也可以根据不同的目的或时间进行版本控制。
JFrog Artifactory作为Kubernetes注册表
我们看到一个成功的模式是使用Artifactory作为您的“Kubernetes注册表,因为它可以让您深入了解代码到集群的过程,同时与每个应用程序的每个层相关。Artifactory在一个系统中支持25种以上不同的技术,具有一个元数据模型、一个提升流和强大的工件间关系。

这与使用Docker注册表作为Kubernetes应用程序构件的主存储库形成对比。在这种设置中,你失去了跨Docker映像跟踪依赖关系的能力(要么是因为它们在不同的应用程序、不同的组件中,要么只是随着时间的推移而不同的版本)。Docker注册表是必要的,但不足以收集和管理Kubernetes应用程序的工件。通过简单的Docker注册表无法跟踪内容,依赖关系以及与其他Docker映像的关系。
在踏上Kubernetes之旅之前的最后一个提示!
如果你在跑步Kubernetes应用,您应该从上到下了解每个应用程序中正在运行的内容。Docker镜像是运行时版本打包中非常重要的一部分,但只是其中的一部分。不要忘记跟踪和存储应用的每一层,并了解在开发和发行过程中如何将这些部分连接起来。

