中文站

顶级技术盛会KubeCon 2020,网易轻舟布道多云环境云原生应用交付

在日前的KubeCon 2020中国线上峰会上,VMware中国研发中心架构师、Harbor项目创始人和维护者张海宁,和网易数帆轻舟事业部架构师、Harbor维护者裴明明,共同分享了如何在多云和多集群环境下高效率高质量地交付应用。

张海宁介绍了应用交付的模型,面临的主要问题,以及如何使用云原生的方法实现应用的定义和交付。裴明明则通过网易轻舟云原生应用交付平台的设计与实践,详细解释了多云和跨集群环境下的应用交付的核心要素、应用场景与业务收益。

问题:云原生应用交付面临四大挑战

根据 CNCF定义的应用交付模型,包括应用定义与封装、应用部署与Rollout、workload 实例自动化与运维和平台等四个层面。这是一个复杂的流程,需要了解 Kubernetes 云原生技术生态体系的各种操作和概念。从整体上看,云原生技术体系下研发人员需要面对应用的定义、应用的简单管理、应用的监控和应用的运维等四个方面的挑战。

裴明明解释说,从应用交付流程来看,创建一个应用的时候,首先需要创建与应用本身相关的和与运维相关的大量资源,其次需要关注一些运维相关的概念,因为 Kubernetes 平台对 Workload 的定义是把研发和运维视为一个整体的,所以交付平台研发人员可能需要考虑如何分离研发和运维两种不同的角色,并将应用周边的资源作为一个整体管理好。

而在资源定义好之后,应用交付实际上也是对资源的操作与分发。这个时候还需要三个方面的保证,首先要保证分发的资源与创建出来的实例是一致的,其次需要资源分发过程有很多可选策略,以保证资源分发的效率和应用交付的可靠性,再次则要保证多云和多集群的环境下的支持——所谓云原生,计算资源应该是没有边界的,不管公有云、私有云还者是混合云资源,都可以使用。

破局:网易轻舟面向交付过程的设计

网易轻舟是基于网易云原生应用实践打造的一个云原生软件生产力平台,该平台主要提供微服务治理、DevOps、云原生中间件等能力,并通过网易数帆开放给行业客户使用,帮助这些客户快速获得云原生软件生产能力,从而为数字化业务推进提质增效。

在应用交付方面,网易轻舟平台基于 Kubernetes、Docker、Harbor 等开源技术打造云原生应用交付能力,借助 Kubernetes 的抽象能力,实现应用资源、应用开发、应用运维的统一管理,让用户可以灵活地操作自己的业务应用。

为了更有效地定义应用资源,网易轻舟基于 Kubernetes 和 Helm Chart 将资源聚合分类为 Deployment、Router、AutoScaling、Config 等,把这些应用相关的资源设计成 Kubernetes 上的 CRD,以便于用户定义资源和交付应用。

裴明明进一步介绍,网易轻舟基于应用交付过程定义资源,Workload 是应用交付的核心,围绕这个核心是路由规则、自动扩缩容等在应用交付过程中易变的资源,也是次核心资源,外围则是一些静态资源,如日志配置、网络配置、存储管理等,一次配置完成之后基本上不会再变更。这是一个面向应用交付过程的设计,把交付过程中需要频繁干预的资源归为一类,不需要频繁干预的资源归为一类,通过这样的归类可以较好地组织交付流程。


网易轻舟的实践,是通过模板(Template)来定义 Workload,把一些需要修改的点抽象出来,交给另外的角色去做——通常 Template 由运维工程师定义,由开发工程师使用,这样可以做到开发和运维的一些概念的分离。


在整个应用交付的过程中,网易轻舟通过一个代理层将应用的定义转换成一些具体的资源,并驱动应用交付流程往后进行。除了资源的实际操作,代理层的另一个功能,是监控和调整应用下面的资源,让实际资源与定义保持一致。

此外,在流量控制方面,网易轻舟实现了应用交付与 Service Mesh 的整合,聚合不同 Service Mesh 集群的服务,统一对外提供服务,使得业务访问更加轻松。

裴明明表示,网易轻舟跨集群应用交付实践中,用户实际上面对的是整个应用的视图,不需要关心应用的具体部署,对用户而言,应用和服务都是一个整体;另外一个好处,在运维的时候,运维工程师可以从应用的视角去管理不同集群上的资源,比较方便的看到这些资源的关联。

收益:多云和跨集群应用交付的四大利好

裴明明最后总结了网易轻舟多云和多集群环境下的应用交付的应用场景和收益。

首先是容灾,利用网易轻舟支持多云部署的能力,实现跨机房部署业务应用,当其中一个机房宕机时,另外一个机房的服务仍然可以继续访问,从而保证服务的可靠性。

其次是资源弹性。在资源比较紧张的时候,用户可以借助网易轻舟把应用弹到任意一个公有云或者是私有云,从而可以利用更多的资源。

再次是区域相关性的访问和服务隔离。通过网易轻舟将应用部署在不同的集群中,再借助一些环境标识之类的信息去访问指定的服务。

第四是降低应用交付的复杂性。因为网易轻舟应用交付整个流程都是自动驱动的,所以可以有效地减少各种复杂的操作,同时应用交付的效率也可以得到提升。

来源:网易数帆