Kubernetes的3个基本要素:集群、管道和注册表

Kubernetes的3个基本要素

本文由JFrog的Kit Merker和Codefresh的Raziel Tabib共同撰写,并共同发布在Codefresh博客

好吧,你要领养孩子了Kubernetes。不错的选择。要启动和运行Kubernetes集群,有一系列令人眼花缭乱的好选择。但是,一旦它存在,您如何以可重复、可靠的方式将代码实际放入集群中呢?你如何确保只有正确版本的应用才能投入生产?

这篇博文描述了3个基本组件,它们组合在一起,使您能够使用Kubernetes运行应用程序。

  1. Kubernetes集群这是容器化应用程序运行的编排基础设施。
  2. Kubernetes管道这是在Kubernetes中运行的CI/CD管道,并自动执行从源代码和外部包到在Kubernetes集群中部署应用程序的过程。
  3. Kubernetes注册表-这是存储和跟踪管道处理的所有构建组件的工件存储库,包括本地和远程依赖关系。

Kubernetes注册表、管道和集群

请注意,除了这3个要素之外,还可以根据需要将监视和服务发现等其他组件添加到此基础结构中。

1.Kubernetes集群

得到最多报道的部分是集群,所以我们不会过多地讨论它。首先,决定你是否想自己管理它。然后决定是否需要云提供商提供的服务。然后决定你想要多大。幸运的是,Kubernetes集群被设计成在任何地方都表现得几乎一样,有时会加入一些风格或优化。

看看这32个,而且还在增长,CNCF认证的集群提供商列表

2.Kubernetes管道

Kubernetes管道自动化了构建、测试和部署容器化应用到Kubernetes的过程。

容器化的应用程序由多个微服务组成。为了最大限度地降低变更时可能出现的潜在风险,每个建议的变更,无论是针对单个微服务还是多个微服务,都是:

  1. 在部署到生产环境之前,在完整的应用程序上下文中进行测试。
  2. 一旦部署到生产环境中,就会逐渐暴露给最终用户。例如,使用金丝雀部署。

设置一个分段/集成环境,在这个环境中,每个更改都可以针对完整的应用程序运行,这在扩展方面存在困难,并且经常成为瓶颈。为了解决这个问题,Kubernetes管道必须是“应用感知”的。

应用意识

Kubernetes管道是“应用感知的”,这意味着它们本身就能够动态地提供一个完整的容器化应用程序堆栈(通常由多个服务、部署、副本集、秘密、configmap等组成)。对应用程序上下文的每一次更改,无论是代码、基础层、映像还是配置更改,都将依次触发管道。

总而言之,你可以:

  • 动态地提供完整的应用程序并全面地测试任何更改。
  • 与Kubernetes注册表集成:
    1. 存储所有应用程序构件,并用元数据丰富它们。
    2. 设置将在任何工件发生更改时调用管道的触发器。
  • 在Kubernetes集群上运行Kubernetes本地管道,就像你的应用程序一样。
  • 管道与Kubernetes实体和网络本地集成,以促进高级部署,如金丝雀,蓝/绿等。

3.Kubernetes注册表

为了确保应用程序从代码到集群的流程是流畅、可靠和安全的,您需要清楚地了解正在构建和发布的内容。您可能会认为您的应用程序都是关于您编写的代码,但实际上,有一大堆代码和配置来自其他人,包括源代码和二进制形式,它们将与您的应用程序一起传输到Kubernetes集群中。

你可以想到Docker注册表作为Kubernetes注册表的最小版本。然而,有一些关键的部分不能单独存储在Docker注册表中,它们是Kubernetes应用程序的一部分,比如:操作系统包、语言包、应用程序包和Kubernetes清单。

考虑操作系统和相关软件包。每个都来自发行版提供商(如Canonical Ubuntu或SUSE),或者在Windows容器的情况下来自Microsoft,并且您可能需要安装操作系统级别的软件包才能使您的应用程序工作。Kubernetes集群的美妙之处在于,它可以同时运行用不同语言、不同操作系统版本编写的应用程序,而不会产生任何操作上的差异。

一旦你弄清楚了所有的操作系统和语言依赖关系(以及开源框架),你就可以使用Docker构建和创建Docker镜像来容器化你的应用程序。这些都存储在Kubernetes Docker注册表中,并且可以由Kubernetes直接拉出。最重要的是,您必须存储和管理Kubernetes yaml文件,这些文件可以打包为执掌图表。要信任你部署到Kubernetes中的软件,你需要一个Kubernetes注册表,它了解所有这些依赖项的结构、格式和其中的内容。

从代码到集群

JFrog Artifactory是Kubernetes注册表这为所有这些不同的技术和依赖项提供了可见性和通用支持。尝试Artifactory免费试用

Codefresh提供了一个“应用感知”的Kubernetes管道,可以在Kubernetes集群上运行,并简化k8s应用程序的测试和部署。

重新尝试代码