本文已参与「新人创作礼」活动,一起开启掘金创作之路。
本文介绍:CNCF(Cloud Native)、DevOps、云原生应用的一般过程、云原生应用平台的建设目标、GitOps发布模型、DevOps、微服务、容器的关系
CNCF(Cloud Native)
云原生(Cloud Native)技技术帮助企业和机构在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、 服务网格、微服务、不可变基础设施和声明式API。
这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术可以使开发者轻松地对系统进行频 繁并可预测的重大变更
云原生技术是释放云原生价值最有效最短的路径,
云原生应用关注以下四点:
- 持续集成DevOps
- 持续交付
- 微服务
- 容器化
DevOps
DevOps 是软件开发人员和 IT 运营之间的合作,目标是自动执行软件交付和基础架构更改流程。它创造了一种文化和环境,可在其中快速、频繁且更可靠地构建、测试和发布软件。
持续交付
持续交付使得单个应用更改在准备就绪后即可发布,而不必等待与其他更改捆绑发布或等待维护窗口期等事件。持续交付让发布行为变得平淡可靠,因此企业可以以更低的风险频繁交付,并更快地获得最终用户的反馈,直到部署成为业务流程和企业竞争力必不可少的组成部分。
微服务
微服务是将应用作为小型服务集合进行开发的架构方法,其中每个服务都可实施业务功能,在自己的流程中运行并通过 HTTP API 进行通信。每个微服务都可以独立于应用中的其他服务进行部署、升级、扩展和重新启动,通常作为自动化系统的一部分运行,可以在不影响最终客户的情况下频繁更新正在使用中的应用。
容器化
与标准虚拟机相比,容器能同时提供效率和速度。单个操作系统实例使用操作系统 级的虚拟化,在一个或多个隔离容器之间进行动态划分,每个容器都具有唯一的可写文件系统和资源配额。创建和破坏容器的开销较低,再加上单个虚拟机中的高包装密度,使容器成为部署各个微服务的完美计算工具
云原生技术的优势
- 资源按需分配(资源动态创建动态销毁)
- 更快速的迭代(自动触发、减少人工失误、降低迭代成本、加快迭代频率)
- 快速部署(自动化部署、提高部署效率)
- 高可用性(应用多副本,保障业务高可用)
- 低成本(资源的高利用降低了硬件成本、自动化降低了人工成本)
- 环境一致性(应用容器化、保证应用开发环境和生产环境的一致性)
- 自动伸缩(基于应用负载自动扩缩容、保证业务的连续性)
- 多租户(容器平台的多租户特性可以满足多项目组同时开发)
云原生应用的一般过程
云原生应用平台的建设目标
GitOps发布模型
GitOps是一种实现云原生的持续交付模型 GitOps 之应用安全发布模型实践
GitOps发布模型核心思想:
- 将应用系统的声明性基础架构和应用程序存放在Git版本库中,所有的对应用的操作变更都来源于Git仓库的更新
GitOps发布模型核心能力:
- 版本管理
- 应用版本号与git commit映射
- 每个变更都有历史记录查询
- 可快速定位故障
- 可快速回滚
- 基线管理
- 环境栈基线:不同环境映射不同的代码分支
- 发布基线:线上发布设置基线,对应代码的release tag
- 安全发布(包括发布权限管理以及安全审批)
- 代码变更review、合并
- 环境配置信息安全管理
- 发布审批
- 快速反馈
- 测试结果反馈
- 预览应用
GitOps发布模型特性:
- Git 仓库是任何 CICD 过程的唯一输入源
- 声明式的应用编排、构建部署模型
- 应用在环境栈之间的无差别、自动化推进
- PR/MR 触发的拉取式流水线过程
- 快速反馈机制
使用GitOps管理应用发布到不同Kubernetes集群的架构图
一个应用开发测试到上线迭代的完整流程时序图
DevOps、微服务、容器的关系
- 微服务完美匹配DevOps理念(分而治之、连续集成、快速交付)
- 大型应用拆分为微服务,让责任边界更明确,引导交付流程变革
- 清晰的边界、独立的部署,为更快的迭代和交付流程自动化提供可能
- 越小的业务边界使得实现的复杂性降低,提高交付质量
- 容器定义新的交付方式