3.2 应用管理
正如2.2节所述,Spinnaker的应用管理对云基础设施提供了全新的组织方式。
Spinnaker的应用管理功能可用于查看和管理云资源,现代技术团队的组织分工往往是根据产品或微服务进行划分的,Spinnaker对这种组织方式进行抽象,并提供了新的“应用”的概念。
应用(Application)、集群(Cluster)和服务器组(Server Group)是Spinnaker用来描述服务的关键概念,负载均衡器(Load Balancer)和防火墙(Firewall)用于描述如何向用户公开服务,如图3-1所示。
图3-1 Spinnaker应用概念
3.2.1 应用
考虑到对多云架构的统一管理,Spinnaker对云资源重新进行了组织。
Spinnaker中的应用是集群的集合,而集群又是服务器组的集合,此外还包括防火墙和负载均衡器。应用代表着需要使用Spinnaker部署的服务、服务的配置及服务所需要的基础设施。对开发人员来说,所有工作都是围绕着产品或微服务的代码进行的。在Spinnaker的实践中,一种较为科学的组织形式是为产品的每个微服务创建一个Spinnaker应用。
3.2.2 服务器组
和应用的概念一样,服务器组是Spinnaker对服务器的一种组织概念。
服务器组用来标识可部署的制品,包括VM镜像、Docker镜像、Linux安装源及其基本的配置,例如实例数、自动扩展策略和元数据等。同时,服务器组能够和负载均衡器、防火墙进行关联。当部署完成后,服务器组是运行着软件的实例(VM实例、Kubernetes容器)集合。
一般情况下,Spinnaker的流水线包含创建基础设施的步骤,当服务部署完成后,会自动创建相应的由VM实例或Kubernetes容器组成的服务器组,这取决于流水线对基础设施的配置。
服务器组屏蔽了不同厂商、不同类型的基础设施差异,不论是Kubernetes Pod,还是云提供商的云主机,都将其抽象为服务器组的概念进行统一管理,这样就为复杂的混合云和多运行环境的管理提供了统一的展示和控制中心。
常见的服务器组与不同云提供商的映射关系如表3-1所示。
表3-1 服务器组和不同云提供商的映射关系
3.2.3 集群
集群是Spinnaker中对部署应用服务器组的逻辑分组。需要注意的是,此“集群”与Kubernetes集群的概念并不相同,Kubernetes集群在Spinnaker中只是服务器组。
服务器组屏蔽了不同云提供商和基础设施的差异,但对应用的流量组织形式来说,一个应用可能同时具有多个不同软件版本的服务器组对外提供服务,例如常见的灰度发布。为了屏蔽不同服务器组之间的差异并对用户提供统一的服务概念,Spinnaker基于服务器组对集群的概念进行了抽象。
集群可以是横跨多个云的全局部署,由于集群和服务器组相关,所以集群也有自己的工作状态、健康状况、部署的元数据及服务器组中各实例的信息。
在集群的粒度中,可以对资源进行快捷操作,例如调整大小、复制、禁用和回滚等。集群控制台界面如图3-2所示。
图3-2 集群控制台界面
• 左侧是已部署的集群,可以对不同的云账户、地域和状态等进行筛选。
• 中间部分列出了已部署的服务,每个小方框是指一个实例(单台VM实例或Kubernetes Pod),所有相同的一组实例构成服务器组。如图3-2所示,在V059:spinnaker-1022/mdservice服务器组中有128个健康的实例。
• 具有不同版本的服务器组进一步组成集群,例如mdservice-stage集群由4个服务器组组成,其中V073服务器组正在对外提供服务,具有2个健康的实例。V070、V071和V072服务器组则处于禁用的状态。
• 右侧展示了集群的详细信息和快捷操作界面,例如可以进行回滚、禁用、销毁和复制操作。
Spinnaker的集群概念为服务和流量管理提供了一种更加直观的展示形式,也进一步屏蔽了底层的细节差异。
3.2.4 负载均衡器
负载均衡器(Load Balancer)用来描述服务对外暴露的协议和端口,例如HTTP协议和80端口。它能够在服务器组之间分流负载,还能够选择性地启用负载均衡器的健康检查,并定义健康状态,运行健康检查的端点(Endpoint)。
负载均衡器也是Spinnaker的抽象概念,不同的云提供商有不同的基础设施映射关系,常见的映射关系如表3-2所示。
表3-2 负载均衡器和不同云提供商的映射关系
通过对不同云提供商负载均衡器的抽象,Spinnaker为服务暴露提供了统一的控制界面。在此界面上能够非常方便地创建、修改和删除负载均衡器,便于对服务组进行流量控制。
3.2.5 防火墙
防火墙定义了流量的出入规则,它实际上是由IP范围(CIDR)、通信协议(如TCP)和端口范围定义的一组网络防火墙规则,主要用于配置服务器组的流量访问策略。
Spinnaker本身不提供防火墙的功能,防火墙是由不同的云环境提供的,例如Kubernetes或公有云主机。
同样地,对Spinnaker防火墙来说,不同的云提供商具有不同的映射关系,如表3-3所示。
表3-3 防火墙和不同云提供商的映射关系