云原生应用,是指原生为在云平台上部署运行而设计开发的应用。公平的说,大多数传统的应用,不做任何改动,都是可以在云平台运行起来的,只要云平台支持这个传统应用所运行的计算机架构和操作系统。只不过这种运行模式,仅仅是把虚拟机当物理机一样使用,不能够真正利用起来云平台的能力。
云计算平台的核心能力就是提供按需分配资源和弹性计算的能力,而云原生应用的设计理念就是让部署到云平台的应用能够利用云平台的能力实现按需使用计算资源和弹性伸缩。
微服务架构是实现企业分布式系统的一种架构模式,即将一个复杂的单体应用按照业务的限定上下文,分解成多个独立部署的组件。这些独立部署的组件,就称为微服务。而在谈论云原生应用与微服务架构关系的时候,根据上下文不同可以从两个角度去看。
1) 宏观的云原生应用,即将整个分布式系统看作一个应用,这个角度下,微服务架构是实现云原生应用的一种架构模式;
2) 微观的云原生应用,即每个微服务是一个应用,这种语境下,每个微服务要按照云原生应用的设计理念去设计(如我们所熟知的云原生12要素),才能真正实现微服务架构所要达到的目的,即让分布式系统具备按需使用计算资源和弹性伸缩的能力。
在华为云CCE容器服务中,我们将宏观的云原生应用,称之为“应用”,而将微观层面的云原生应用,称之为“组件“,用这两个概念来对分布式应用进行管理:
图:应用、组件与工作负载的关系
在CCE上进行云原生应用管理的实践 创建Kubernetes集群在创建应用前,需要准备好一个Kubernetes集群(1.9及以上版本),并启用Istio服务网格治理。登录CCE控制台,在左侧导航栏中单击“资源管理 > 虚拟机集群”,在“虚拟机集群”界面,单击“创建Kubernetes集群”,按照向导式逐步配置:
图1:创建Kubernetes集群
图2:使能服务网格,一键式安装Istio并自动使能应用sidecar注入:
其他集群创建步骤、配置与已有CCE上创建虚拟机集群一致.
创建云原生应用这里我们以Istio开源社区的bookinfo样例应用为例,其包含ProductPage、Reviews、Details、Ratings这4个微服务,拓扑结构以及网络访问信息如下:
在CCE左侧导航栏中选择“应用管理”,单击“创建应用”,选择“向导式创建” (后续将支持通过helm模板一键式创建微服务应用以及其流量策略配置,更方便管理),分三大块配置:应用基本信息、网格内组件定义、对外放开路由配置。
1、 首先定义应用的基本信息:名称、选择所在集群和namespace:
2、 第二步,点击添加组件,按照上方的应用拓扑和网络设计,把组件加入到服务网格:
A、添加ratings微服务组件(容器内监听端口为9080,开放至service mesh内部访问端口也配置为9080,后者可根据客户端配置自行调整)
1)配置组件基本信息: