写点什么

以 CNCF 的方式实现云原生意味着什么?

  • 2019-04-10
  • 本文字数:2685 字

    阅读完需:约 9 分钟

以 CNCF 的方式实现云原生意味着什么?

人们在讨论数字化转型现代应用程序开发时,其中经常出现的术语之一是云原生(Cloud-Native)。但是,云原生究竟意味着什么呢?本文将带领读者深入了解云原生的方法,以及用 CNCF 方式实现云原生的方法。


Michael Dell 曾经说过:“云不是一个地方,而是一种做 IT 的方式。”(the cloud isn’t a place, it’s a way of doing IT)。他说得对,云原生也是如此。


云原生是一种构建和运行应用程序的方法,利用了云计算交付模型的优势。云原生是关于如何创建和部署应用程序,而与在何处创建与部署无关。它适用于公有云私有云


云原生架构充分利用按需交付、全球部署、弹性和更高级别的服务。它们极大提高了开发人员的工作效率、业务灵活性、可扩展性、可用性、利用率和成本节约。

CNCF (云原生计算基金会)

Google 多年来一直使用容器,他们领导了 Kubernetes 项目,这是一个领先的容器编排平台。但单凭它们并不能真正改变现代应用领域的广阔前景。因此,行业领袖需要齐心协力,解决现代方法面临的主要问题。为了实现这一更广阔的愿景,Google 将 Kubernetes 捐赠给了云原生基金会,此举促成了 2015 年 CNCF 的诞生



https://www.cncf.io


云原生计算基金会(Cloud native computing foundation)是在 Linux 基金会中创建的,用于构建和管理现代应用程序开发的平台和解决方案。它确实是实现现代应用程序开发的惊人项目的基地。CNCF 将云原生定义为在“现代动态环境”中运行的“可扩展应用程序”,这些应用程序使用容器、微服务和声明性 API 等技术。 Kubernetes 是世界上最流行的容器编排平台,也是第一个 CNCF 项目。

实现方法

CNCF 创建了一个轨迹图(trail map),以便更好地理解云原生方法的概念。在本文中,我们将基于这种情况进行讨论。较新的版本可以在 https://landscape.cncf.io/ 获得。


云原生轨迹图是 CNCF 推荐的了解云原生图景的途径。但请注意,它并没有定义我们可以实现数字化转型的特定路径,而是要根据你的业务场景,你可以遵循许多可能的轨迹来与此概念保持一致。这只是一条简化云原生之旅的一条途径。




让我们讨论这个轨迹图中定义的步骤。

1. 容器化


如果不对应用程序进行容器化,那么就无法实现云原生。至于应用程序的大小和类型,都无关紧要。容器是一个标准的软件单元,它将代码及其所有依赖关系打包起来, 这样应用程序就可以从一个计算环境快速地、可靠地运行到另一个计算环境。Docker 是容器化的首选平台。Docker 容器镜像是一个轻量级、独立、可执行的软件包,包含运行应用程序所需的所有内容。

2. CI/CD


设置持续集成 / 持续交付 (Continuous Integration/Continuous Delivery,缩写为 CI/CD),这样源代码的更改会自动导致构建、测试并部署一个新容器,并最终(可能)部署到生产环境中。接下来我们需要设置的是自动部署、回滚和测试。CI/CD 有很多平台:Jenkins、VSTS、Azure DevOps、TeamCity、JFRog、Spinnaker 等等。

3. 编排器


容器编排主要就是管理容器的生命周期,尤其是在大型动态环境中,软件团队使用容器编排来控制和自动化许多任务。Kubernetes 是市场领先的编排解决方案。还有其他编排器,如 Docker swarm、Mesos 等。Helm Charts 能够帮助你定义、安装和升级最复杂的 Kubernetes 应用程序。

4. 可观察性分析

Kubernetes 并不提供日志数据的本机存储解决方案,但你可以将许多现有的日志解决方案集成到 Kubernetes 集群中。Kubernetes 提供了有关应用程序在这些级别上的资源使用情况的详细信息。通过这些信息你可以评估应用程序的性能,以及可以消除瓶颈的位置,从而提升整体性能。



选择用于监控、记录和跟踪的解决方案。考虑 CNCF 项目 Prometheus 用于监控、Fluntd 用于日志记录和 Jaeger 用于 TracingFor 跟踪,寻找与 Jaeger 类似的 OpenTracing 兼容实现。

5. 服务网格

服务网格,顾名思义就是连接服务、发现服务、健康检查、路由,并用于监控来自互联网的入口。服务网格通常还具有更为复杂的操作要求,如 A/B 测试、金丝雀部署(canary rollouts)、速率限制、访问控制和端到端身份验证。



Istio 提供了对整个服务网格的行为洞察和操作控制,提供了完成的解决方案以满足微服务应用程序的各种需求。CoreDNS 是一种快速灵活的工具,可用于发现服务。Envoy Linkerd 都支持服务网络体系结构。

6. 网络和策略

启用更灵活的网络层非常重要。要启用更灵活的网络,请使用符合 CNI 的网络项目,如 Calico、Flannel 或 Weave Net。Open Policy Agent(OPA)是一种通用策略引擎,其使用范围从授权和准入控制到数据过滤等。

7. 分布式数据库

分布式数据库是一种数据库,其中并非所有存储设备都连接到公共处理器。它可以是存储在同一物理位置的多台计算机中,也可以是分散在彼此互联的计算机网络上。



当你需要比单个数据库更大的弹性和可扩展性时,Vitess 是一个很好的选择,可以通过分片来大规模运行 MySQL。Rook 是一个存储编排器,它将一组不同的存储解决方案集成到 Kubernetes 中。etcd 提供了一种跨机器集群存储数据的可靠方法。


8. 消息传送


如果需要比 JSON-REST 更高的性能时,请考虑使用 gRPC 或 NATS。gRPC 是一个通用的 RPC 框架。NATS 是一种多模式消息传递系统,包括请求 / 回复、发布 / 订阅和负载平衡队列。它也适用于并处理很多更新的和使用案例,比如物联网。

9. 容器注册表与运行时

容器注册表是团队管理 Docker 镜像、执行漏洞分析以及决定谁可以通过细粒度访问控制放什么那些内容的单一位置。在市场 docker 中心有:Azure 容器注册表、Harbor、Nexus 注册表、Amazon 弹性容器注册表,此外还有很多容器注册表。



容器运行时 containerd 可用作 Linux 和 Windows 的守护进程。它管理主机系统的完整容器生命周期,从镜像传输和存储到容器执行和监控,再到低级存储、网络附件等等。

10. 软件分发

如果你需要进行安全的软件分发,请评估 Notary,实现 The Update Framework(更新框架,TUF)。


TUF 提供了一个框架(一组库、文件格式和使用程序),可用于保护新的和现有的软件更新系统。该框架应该能够使应用程序免受软件更新过程中所有已知攻击的影响。它不涉及公开关于正在更新的软件(以及客户机可能正在运行的软件)或更新内容的信息。




“云原生应用程序是专门为云基础架构上运行而设计的,因此就有了‘原生’这一说法。它们之所以越来越受欢迎,是因为它们带来了好处,包括:高可用性和响应性,以及通过自主和自修复能力(如针对故障进行设计)实现的强大恢复能力和灵活性。”

CNCF 使最先进的模式民主化,让每个人都能够接触到这些创新。




原文链接:


https://medium.com/@sonujose993/what-it-means-to-be-cloud-native-approach-the-cncf-way-9e8ab99d4923


2019-04-10 08:0012364
用户头像

发布了 376 篇内容, 共 201.2 次阅读, 收获喜欢 949 次。

关注

评论

发布
暂无评论
发现更多内容

YashanDB数据库表关系设计与查询优化实操

数据库砖家

YashanDB数据库的版本迭代历程及新功能亮点

数据库砖家

YashanDB数据库的读写分离策略及其性能提升

数据库砖家

YashanDB数据库的负载均衡策略与实施方法

数据库砖家

YashanDB数据库的监控与调优技巧

数据库砖家

YashanDB数据库的异常处理技巧,确保系统稳定运行

数据库砖家

YashanDB数据库的最佳维护实践与问题排查技巧

数据库砖家

YashanDB数据库的核心功能及应用场景详解

数据库砖家

YashanDB数据库的监控与告警系统配置教程

数据库砖家

YashanDB数据库的最佳维护实践与问题排查技巧

数据库砖家

YashanDB数据库的负载均衡实现方法

数据库砖家

YashanDB数据库的性能调优经验分享

数据库砖家

YashanDB数据库的负载均衡策略详解

数据库砖家

YashanDB数据库的异构数据集成与利用方法

数据库砖家

YashanDB数据库的联合查询及使用场景

数据库砖家

我的 Vibe Coding 的第二个项目

Immerse

YashanDB数据库的无缝集成和迁移指南

数据库砖家

YashanDB数据库表设计与规范命名建议

数据库砖家

YashanDB数据库的高可扩展性架构设计理念

数据库砖家

YashanDB数据库的字段类型与数据模型

数据库砖家

YashanDB数据库的最佳配置设置:提高系统稳定性

数据库砖家

YashanDB数据库的负载均衡及分布式特性探讨

数据库砖家

YashanDB数据库的监控技术及性能评估方法

数据库砖家

YashanDB数据库的监控与运维最佳实践

数据库砖家

YashanDB数据库的异步复制技术及企业应用价值

数据库砖家

YashanDB数据库的智能故障检测对策

数据库砖家

YashanDB数据库的读写分离架构详解

数据库砖家

YashanDB数据库的负载均衡策略详解

数据库砖家

YashanDB数据库的联合查询及使用场景

数据库砖家

YashanDB数据库的性能监控工具使用体验分享

数据库砖家

YashanDB数据库的最佳实践及实施方案总结

数据库砖家

以 CNCF 的方式实现云原生意味着什么?_云原生_Sonu Jose_InfoQ精选文章