1. CNCF演进路线图(Trail Map)
注意:该项目已经不在维护。
在复杂的基础架构之上如何推动云原生应用的更好落地,从而更好地适应环境与业务的发展,CNCF 给出了演进路线图(Trail Map) 用于对于用户在整体上给出了指导建议,分成十个步骤进行实施,而在不同的步骤都可以结合云原生全景图 Landscape 中列出的产品或服务进行选择。
1.1. 步骤1: 容器化
目前最流行的容器化技术是 Docker。
你可以将任意大小的应用程序和依赖项,甚至在模拟器上运行的一些程序,都进行容器化。
随着时间的推移,你还可以对应用程序进行分割,并将新功能编写为微服务。
1.2. 步骤2: CI/CD
创建 CI/CD 环境,从而使源代码上的任意修改,都能够自动通过容器进行编译、测试,并被部署到预生产甚至生产环境中。
设置自动部署、回滚和测试
Argo 是一组 Kubernetes 原生工具,用于部署和运行作业、应用程序、工作流和事件,结合 GitOps 可以构建连续和渐进式交付以及 MLops。
1.3. 步骤3: 应用定义与编排
Kubernetes 是目前市场上应用编排领域被最广泛应用的工具,
你应该选择经过认证的 Kubernetes 发行版,托管平台,或安装程序:cncf.io/ck
Helm Charts 可以用来帮助你定义、安装和升级即使是最复杂的 Kubernetes 应用。
1.4. 步骤4: 可观测性与分析
选择监控、日志和调用链跟踪的解决方案。
可以考虑使用 CNCF 的 Prometheus 项目进行监控, Fluentd 用于日志记录,Jaeger 用于调用链跟踪。
调用链跟踪建议选择诸如 Jaeger 那样对 OpenTracing 有兼容性的方案或者工具。
1.5. 步骤5: 服务代理、服务发现和服务网格
对服务发现,CoreDNS 是一个快速和灵活的工具。
Envoy 和 Linkerd 用于服务网格架构。
提供服务的健康检查、请求路由、和负载均衡等功能。
1.6. 步骤6: 网络、策略和安全
为了能够更加灵活地对应网络需求,可以使用 CNI 兼容的网络解决方案诸如 Calico、Flannel 或者 Weave Net 等。
OPA(Open Policy Agent)秉承着“策略即代码”的原则,完成了一个通用的策略引擎的基本功能,可以帮助使用者控制策略和权限以保证合规性。
Falco 是一款云原生异常检测引擎。
1.7. 步骤7: 分布式数据库与存储
分布式数据库可以提供更好的弹性和伸缩性能,但同时需要专业的容器存储予以支持。
当需要获取更多的弹性和横向扩展性时,相较于从单一数据库来获取信息,通过 sharding 的方式保证 MySQL 的横向扩展性,Vitess 是一个不错的选择。
通过集成多种 Kubernetes 的存储解决方案,可以使用提供了存储的编排方式的 Rook 进行管理。
作为 Kubernetes 的“大脑”,etcd 提供了在集群中以可靠的方式存储数据的能力。
当需要 key-value 存储方案时,可以考虑使用 TiKV,TiKV 使用 Rust 编写的高性能的分布式事务级 key-value 解决方案。
1.8. 步骤8: 流与消息处理
当应用需要比 JSON-REST 这个模式更高的性能时,可以考虑使用 gRPC 或者 NATS。
gRPC 是一个通用的 RPC(远程调用)框架(类似各种框架中的 RPC 调用),NATS 是一个发布/订阅和负载均衡的消息队列系统。
1.9. 步骤9: 镜像私库&运行环境
可以使用 Harbor 作为镜像私库进行存储以及对镜像的内容进行扫描。
容器并非仅仅 Docker 一种,容器的运行环境更是如此,可以选择不同的容器运行环境,但需要注意选择具有 OCI 兼容性的的方案,比如 containerd 或者 cri-o
1.10. 步骤10: 软件发布
TLS 能够保护通信的安全,但是当服务器出现问题后,自然就会出现问题。而使用 Notary 可以解决这一问题,是的软件的分发和更新更加安全。TUF 项目则是 Notary 所基于的项目,也是针对软件分发和更新的安全性的解决方案。