内容来自原文地址。并进行整理。


什么是云原生技术?

云原生技术可让企业在构建和运行可伸缩性应用时更加容易,并且应用所部署的环境是新潮的、动态变化。环境可以是公有云,私有云或者其他的云平台。容器,服务网格,微服务,不可变的基础设施,公开的API都接近云原生相关概念。

云原生技术可以让系统松耦合,支持弹性伸缩、可管理的、清晰的。通过整合健壮且有效的自动化,工程师可以用很少的劳动来完成频繁的、预期中的高危代码修改。


在企业中使用云技术时步骤大体分为:

  1. 程序装箱
  • 通常使用Docker作为容器。
  • 任意大小的应用和依赖都可以装箱。
  • 随着上线后时间推移,可能需要把程序进行适当的分割,并写一些异步函数化的微服务。
CI/CD
  • 使用持续集成和持续交付,修改代码后会自动在新的容器中构建,测试,发布到测试环境,如果需要,也可发布到生产环境。
  • 安装过程需要自动发布,回滚,测试。
基础平台和平台应用定义
  • Kubernetes是行业领先的基础平台解决方案。
  • 在cncf.io/ck上选择使用受到认证的Kubernetes分发,托管,安装工具。
  • Helm,是Kubernetes的包管理器,可以帮我们定义、安装、更新最复杂的Kubernetes应用。
系统监控及分析
  • 用于监控,日志,问题追踪。
  • 可考虑使用CNCF的项目Prometheus用于监控,Fluentd用于日志采集,Jaeger用于问题追踪。
  • 对于问题追踪也可用OpenTracing,实现类似Jaeger。
服务的代理、发现和网格(Mesh)
  • CoreDNS用于服务发现,特点是快速灵活。
  • EnvoyLinkerd都是服务网格架构。
  • 均提供心跳检查,路由,负载均衡。
网络和相关安全策略
  • 如果要用更灵活的网络,需要使用符合CNI的网络项目,例如CalicoFlannelWeave NetOpen Policy Agent(OPA)是一个常规的策略引擎,包括授权、准入控制,数据过滤等。
分布式数据库和存储
  • 如果需要数据库弹性和扩展性,Vitess是通过切分方式水平扩展MySQL。Rook是一个存储协调器,整合Kubernetes上的存储解决方案。etcd提供可靠的在集群中储存数据功能,是Kubernetes的大脑。TiKV是通过Rust开发的高性能的分布式带事务的key-value数据库。
流及消息处理
  • 如果需要比JSON-REST更高的性能,可考虑使用gRPC或者NATS。gRPC是一个通用的RPC框架。NATS是一个多模型的消息处理系统,包括请求/回复,发布/订阅,负载均衡队列。
容器注册中心和运行时
  • Harbor是一个注册中心,会存储、签名和扫描内容。运行时我们可以选择,最常用是使用OCI兼容的产品,例如rktcri-o
程序分发
  • 如果需要安全稳定的程序分发,可使用Notary,基于TUF(The Update Framework)的实现。