CNCF Landscap 详细介绍

CNCF 全景图 完整展现了云原生的全景,但是如果理解这张图需要有一定的知识背景,本文会详细解析各个部分的主要功能。

应用成熟度

以社区及企业使用范围及产品稳定性评估的产品成熟度,主要有

Sandbox: 沙箱

Incubating: 孵化中

Graduated: 已毕业

1.应用定义与开发

此层为容器平台上应用开发相关的部分,主要分为数据库服务、消息队列服务、应用的定义与镜像构建服务、持续集成和部署能力等四个方面进行展开。这一层主要是聚集了与应用相关的通用的架构、工具以提供相关能力。结合 CNCF 孵化项目,可以考虑使用 TiKV 或者 Vitess 做相关的数据库服务、NATS 提供消息队列能力,使用 HELM 进行应用编排。

而在实际的项目,考虑到工具或者框架的通用性以及功能性等诸多因素,在数据库方面,显然 MySQL/MariaDB/mongoDB/Cassadra/redis/PostgreSQL 等更能得到项目开发者和使用者在容器化的路上选型的青睐。

而关于流或者消息机制方面,实际上 kafka 和 RabbitMQ 在实际的项目中被使用的也往往更多一些。

而在应用编排方面,HELM 和 Operator 确实是很多项目现在是实践选型中较多的类型。

而关于持续集成和持续部署的能力,虽然没有孵化项目,根据业界的使用情况,Jenkins 作为最为主流的相关工具,甚至没有之一,围绕 Jenkins 已然产生了大量的生态环境,Jenkins 已经有超过1300+的插件支持,几乎大部分主流的项目都提供了 Jenkins 插件的支持,另外 Gitlab 出现在这里也是因为 Gitlab 的功能中基本上可以完成软件生命周期的很多部分,远远不只是进行代码仓库的管理。

2.编排管理

此层为容器平台上编排管理相关的部分,主要分为等容器编排与调度、协作与服务发现,RPC 远程调用、服务代理、API 网关与服务网格等六个方面进行展开。这一层主要是聚集了与容器的编排管理的通用的架构、工具以提供相关能力。结合 CNCF 孵化项目,可以考虑使用 Kubernetes 做相关的容器编排服务,使用 CoreDNS 和 etcd 做服务发现,使用 gRPC 做远程调用,envoy 进行服务代理,使用 LINKERD 用于构建服务网格。

而在实际的项目,显然 Kubernetes 已然是容器编排的标准选择,目前的阶段即使选择 MESOS/SWARM 等框架,实际上这些也都已经转向于支持 Kubernetes 了,可谓所向披靡,一敌难求。

另外,CoreDNS 和 etcd 也算是 Kubernetes 的标准组成部分了,但是在实际的项目中,早期的使用 ZooKeeper 进行服务发现的仍有不少,国产使用 NACOS 的也逐渐增多,另外剩余的基本都在使用 NETFLIX 的 Eureka。

而远程调用,在目前 CNCF 所给选项中 gRPC 确实是一个重要的选型。

而在服务代理方面 envoy 虽然是 CNCF 为数不多的毕业的项目之一,显然它并不能像毕业的 Kubernetes 那样有影响力,相反而言,硬件方式的 F5 是土豪们的最爱,基于 Nginx 的 OPENRESTY 或者 Nginx 本身即使很多务实的开发者的选择,HAPROXY 和 traefix 也有不少的用户再进行使用,所以在微服务的路上想要一统天下,还需要看后续的服务网格的部分。

在 API 网关部分,CNCF 没有相关的孵化中或者已毕业的项目,根据实际的使用情况务实的开发者可能会直接使用 Kong,Kong 本身也是在 Nginx 上产生的一个框架,难能可贵的是已经形成了一部分生态。

而服务网格 Service Mesh 显然是后续的重头戏,相较于孵化中的 LINKERD,显然 Istio 后来居上,俨然有成为微服务管控的集大成者之势,而在实际的项目中反而比 LINKERD 和 envoy 更具竞争性,而对于新型的微服务架构希望进行尝试的用户也有很多直接一面导向了 Istio,而 NETFLIX 的 spring cloud 相关的组件仍然继续不温不火,慢慢地错失良机。

3.运行环境

此层为容器平台上运行环境相关的部分,主要分为等云原生存储、云原生网络和容器运行环境三个方面进行展开。这一层主要是聚集了与运行环境相关的通用的架构、工具以提供相关能力。结合 CNCF 孵化项目,可以考虑使用 ROOK 做相关的云原生存储服务,使用 CNI 进行云原生网络管理,使用 containerd 或 cri-o 来进行容器运行环境的管理。

而在实际的项目,关于云原生存储,一般的项目可能直接使用 NFS 或者本地存储类型,除此之外可能会在 ceph 和 glusterfs 之间进行选型;

而关于云原生网络,CNI 作为一种通用的网络解决的框架,选择确实很多,但是最终还是会落到 flannel、calico 与 Weave net 三大主流框架之间的选型。

容器云运行时一般使用基于 containerd 的 Docker 作为容器运行时。

4.配置管理

此层为容器平台上配置管理相关的部分,主要分为等自动化与配置、镜像私库、安全与合规等四个方面进行展开。这一层主要是聚集了与配置管理相关的通用的架构、工具以提供相关能力。结合 CNCF 孵化项目,可以考虑使用 Harbor 做相关的镜像私库服务,Notary、Open Policy Agent 与 TUF 进行安全和合规的检查。

而在实际的项目,自动化和配置方面虽然 CNCF 没有孵化中或者已毕业的项目,由于这是传统运维中非常常见和重要的一个环节,使用 Ansible、CHEF、SALTSTACK、PUPPET 以及 Rundeck 的用户都很多,而 Ansible 由于其轻便小巧无需客户端安装,在可以使用 ssh 前提下的项目中得到了很多的实践。

而镜像私库,HARBOR 的功能确实较为不错,是一个选择项之一,在实际的项目中,简单的情况直接使用 docker Registry 的也有不少,另外在 HARBOR 进入 CNCF 之前 portus 等也是选择项之一,考虑到其他功能的组合,使用商业的 JFROG Artifactory 的企业也有一部分,另外暂未加入 CNCF 的 Nexus 由于其统一的解决方案以及开源版本与价格亲民的商业版本的结合,也得到了很多用户的青睐。

而关于安全与合规性,显然 clair 和 anchore 聚焦于镜像安全确实是目前很不错的一个切入点,很多用户在此方面进行了功能的强化,而 Sonatype Nexus 与 snyk 也有一部分的用户在进行使用。

而关于私钥管理的功能,此部分功能往往作为辅助的定制化内容在其他的自动化和配置中进行了管控,目前 CNCF 还没有孵化中的项目,实际的项目中也似乎不存在一个让人非常期待使用的项目。

5.平台管理

此层主要是由 CNCF 提供了一些官方的建议名单,企业有相关的资质和能力,通过 CNCF 的认证,与其合作,出现在此部分中,作为可供使用者选择的推荐列表。主要有四个部分组成:通过认证的 K8S 平台提供商、通过认证的 K8S 托管平台提供商、通过认证的K8S安装工具提供商、PaaS/容器服务提供商。

6.监控分析

此层为容器平台上监控与分心相关的部分,主要分为等监控、日志、服务链追踪与混沌工程等四个方面进行展开。这一层主要是聚集了与监控与分心相关的通用的架构、工具以提供相关能力。结合CNCF孵化项目,可以考虑使用 Prometheus 做相关的监控告警服务,使用 fluentd 进行日志管理,使用 JAEGER 或 OPENTRACING 进行服务调用链分析。

而在实际的项目,已经毕业的 Prometheus 确实是一个不错的选择项,但是由于监控是传统运维的重要作业,所以在存量的解决方案中已经有很多实际使用的方式,在这些方案中,使用 graphite 或者 influxdata 提供时序列数据存储功能,使用 Grafana 进行展示的项目不在少数,结合 ZABBIX 和 Nagios 进行监控的项目也有不少。

而进行日志的管理,显然 ElasticSearch 和 Logstash 的 ELK 或者 EFK 是很多用户的选择,除此之外,商业的版本使用 splunk 的用不也不在少数。

而关于服务链路跟踪,显然使用 Dapper 论文原理实现的 ZIPKIN 和 PINPOINT 得到的实践最多,而在 SpringCloud 的解决方案中,Spring Cloud Sleuth 作为调用链的解决方案,随着 Spring Cloud 的使用也得到了很多地关注,成为 Spring Cloud 下理所应当的服务调用链解决方案。

7.无服务器服务(Serverless)

Serverless 作为一个重要的方面,而且各家公司也都出了不少的产品,理念非常新颖,虽然也有不少公司开始尝试,短时间内应该仍是以 Service Mesh 等微服务解决方案为中心的阶段,相关的平台、框架与工具以及安全相关的组件信息如下图所示。

Native 可能是一个不错的 Serverless 解决方案。

8.合作伙伴(Special)

此部分主要分成两部分,一部分是 Kubernetes 认证的服务提供商,另外一部分则是提供 Kubernetes 的培训的合作伙伴,可以看到这里不是 Cloud Native 的 Training Partner,而是 Kubernetes 的 Training Partner。不管如何,在其中也已经可以看到不少的国内公司的身影。

9.成员构成

CNCF 的成员也同样分为白金、黄金和白银级的会员,目前阶段的信息如下所示。

参考

  • https://github.com/cncf/landscape
  • https://landscape.cncf.io/images/landscape.png
  • https://github.com/cncf/toc/blob/master/DEFINITION.md
  • https://github.com/cncf/toc
  • https://blog.csdn.net/liumiaocn/article/details/100713072