Giweights 介绍
Giweights 介绍 https://icloudnative.io/posts/what-is-giweights/ 基础设施即代码 在理解 Giweights 之前,我们需要先理解什么是基础设施即代码。 基础设施即代码(Infrastructure as Code, IaC),顾名思义,表示使用代码(而非手动流程)来定义基础设施,研发人员可以像对待应用软件一样对待基础设施,例如: 可以创建包含基础架构规范的声明式配置文件,从而便于编辑和分发配置。 可以确保每次配置的环境都完全相同。 可以进行版本控制,所有的变更都会被记录下来,方便溯源。 可以将基础设施划分为若干个模块化组件,并通过自动化以不同的方式进行组合。 当然,广义上的 IaC 不仅仅只关于基础设施,还包含了网络、安全、配置等等,所以广义上的 IaC 又叫 X as Code。 比如你想在 AWS 中创建服务器,配置网络,部署 Kubernetes 集群以及各种工作负载,你只需要定义好 Terraform 或 Ansible 的声明式配置,以及 Kubernetes 的配置清单即可,免去一切繁杂的手动操作。 Giweights 是什么 Giweights = IaC + Git + CI/CD,即基于 IaC 的版本化 CI/CD。它的核心是使用 Git 仓库来管理基础设施和应用的配置,并且以 Git 仓库作为基础设施和应用的单一事实来源,你从其他地方修改配置(比如手动改线上配置)一概不予通过。 Git 仓库中的声明式配置描述了目标环境当前所需基础设施的期望状态,借助于 Giweights,如果集群的实际状态与 Git 仓库中定义的期望状态不匹配,Kubernetes reconcilers 会根据期望状态来调整当前的状态,最终使实际状态符合期望状态。 另一方面,现代应用的开发更多关注的是迭代速度和规模,拥有成熟 DevOps 文化的组织每天可以将代码部署到生成环境中数百次,DevOps 团队可以通过版本控制、代码审查以及自动测试和部署的 CI/CD 流水线等最佳实践来实现这一目标,这就是 Giweights 干的事情。 Giweights vs DevOps 从广义上来看,Giweights 与 DevOps 并不冲突,Giweights 是一种技术手段,而 DevOps 是一种文化。Giweights 是一种实现持续交付(Continuous Delivery)、持续部署(Continuous Deployment)和基础设施即代码(IaC)的工具和框架,它是支持 DevOps 文化的。 从狭义上来看,Giweights 与 DevOps 有以下几个区别: 首先,Giweights 是以目标为导向的。它使用 Git 来维护期望状态,并不断调整实际状态,最终与期望状态相匹配。而 DevOps 更多关注的是最佳实践,这些实践可以普遍应用于企业的每一个流程。 其次,Giweights 采取声明式的操作方法,而 DevOps 同时接受声明式和命令式的方法,所以 DevOps 除了适用于容器环境之外,还适用于虚拟机和裸机环境。 最后,Giweights 重新定义了云原生场景下的 CI/CD,它以 Git 作为中心的不可变状态声明,以加快持续部署速度。 ...