Kubernetes的3个要点:集群、管道和注册表

本文由JFrog的Kit Merker和Codefresh的Raziel Tabib共同撰写,并在Codefresh博客.
好吧,你在收养孩子Kubernetes.不错的选择。要启动并运行Kubernetes集群,有很多不错的选择。但是,一旦实现了,如何以可重复、可靠的方式将代码放入集群呢?你如何确保只有正确的应用版本能够投入生产?
这篇博文描述了结合在一起的3个基本组件,使您能够使用Kubernetes运行应用程序。
- Kubernetes集群—这是运行容器化应用程序的编排基础设施。
- Kubernetes管道-这是运行在Kubernetes中的CI/CD管道,并自动执行从源代码和外部包到在Kubernetes集群中部署应用程序的过程。
- Kubernetes注册表-这是一个工件存储库,存储和跟踪所有由管道处理的构建组件,包括本地和远程依赖项。

请注意,除了这3个基本要素之外,还可以根据需要将其他组件(如监视和服务发现)添加到此基础设施中。
1.Kubernetes集群
覆盖最多的部分是集群,所以我们不会太长时间地讨论它。首先,决定你是否想自己管理它。然后决定是否从云提供商那里获得。然后决定你想要多大。幸运的是,Kubernetes集群被设计为在任何地方都表现得几乎相同,有时会加入一些风味或优化。
看看这32个,而且还在增长,CNCF认证的集群提供商列表.
2.Kubernetes管道
Kubernetes管道自动化了构建、测试和部署到Kubernetes的容器化应用程序的过程。
容器化应用程序由多个微服务组成。为了将更改时可能产生的潜在风险降至最低,每一个建议的更改,无论是对单个微服务还是多个微服务,都是:
- 在部署到生产环境之前,在完整的应用程序上下文中进行测试。
- 一旦部署到生产环境,逐渐暴露给最终用户。例如,使用金丝雀部署。
设置一个分段/集成环境(其中每个更改都可以针对整个应用程序运行)在扩展方面存在困难,并且经常成为瓶颈。为了解决这个问题,Kubernetes管道必须是“应用程序感知”的。
应用意识
Kubernetes管道是“应用感知”的,这意味着它们能够动态地提供一个完整的容器化应用程序堆栈(通常由多个服务、部署、副本集、秘密、configmap等组成)。对应用程序上下文的每一次更改,无论是代码、基础层、图像还是配置更改,都将依次触发管道。
总结一下,你可以:
- 动态地提供完整的应用程序并全面测试任何更改。
- 与Kubernetes注册表集成,以:
- 存储所有应用程序构件,并用元数据丰富它们。
- 设置触发器,该触发器将在更改任何工件时调用管道。
- 在Kubernetes集群上运行Kubernetes本机管道,就像您的应用程序一样。
- 管道与Kubernetes实体和网络原生集成,以促进高级部署,如金丝雀,蓝色/绿色等。
3.Kubernetes注册表
为了确保应用程序从代码到集群的流程是流畅、可靠和安全的,您需要清楚地了解正在构建和发布的内容。您可能认为您的应用程序就是您编写的所有代码,但实际上,有一大堆来自他人的代码和配置,包括源代码和二进制形式,它们将随着您的应用程序迁移到Kubernetes集群中。
你可以想想Docker注册表作为Kubernetes注册表的最小版本。然而,有一些关键部分不能单独存储在作为Kubernetes应用程序一部分的Docker注册表中,例如:操作系统包、语言包、应用程序包和Kubernetes清单。
考虑操作系统和相关软件包。每一个都来自发行版提供商(如Canonical Ubuntu或SUSE),或者在Windows容器的情况下来自Microsoft,并且您可能需要安装操作系统级别的包以使您的应用程序工作。Kubernetes集群的美妙之处在于,它可以同时运行用不同语言、不同操作系统版本编写的应用程序,没有任何操作上的差异。
一旦你弄清楚了所有的操作系统和语言依赖关系(以及开源框架),你就可以使用Docker构建和创建Docker映像来容器化你的应用程序。这些存储在Kubernetes Docker注册表中,可以由Kubernetes直接拉取。在此基础上,您必须存储和管理Kubernetes yaml文件,这些文件可以打包为执掌图表.为了信任你部署到Kubernetes的软件,你需要一个Kubernetes注册表,它能理解所有这些依赖项的结构、格式和内容。
从代码到集群
JFrog Artifactory是Kubernetes注册表这为所有这些不同的技术和依赖关系提供了可见性和通用支持。试用Artifactory免费试用.
Codefresh提供了一个“应用程序感知”的Kubernetes管道,可以在Kubernetes集群上运行,简化k8s应用程序的测试和部署。
