使用 GitOps 实现应用持续部署
KubeSphere 企业版引入了一种为云原生应用实现持续部署的理念 – GitOps。GitOps 的核心思想是拥有一个 Git 仓库,并将应用系统的申明式基础架构和应用程序存放在 Git 仓库中进行版本控制。GitOps 结合 Kubernetes 能够利用自动交付流水线将更改应用到指定的任意多个集群中,从而解决跨云部署的一致性问题。
本文档演示如何创建持续部署以实现应用的部署。
前提条件
-
KubeSphere 企业版平台需要安装并启用 DevOps 扩展组件。
-
已有一个企业空间、一个 DevOps 项目和一个用户 (例如 project-regular),并已邀请该用户至 DevOps 项目且授予 operator 角色。请参阅角色和成员管理。
导入代码仓库
-
以 project-regular 用户登录 KubeSphere 企业版 Web 控制台。
-
点击企业空间管理并进入您的 DevOps 项目。
-
在左侧导航栏,点击代码仓库。
-
在右侧的代码仓库页面,点击添加。
-
在导入代码仓库对话框,输入代码仓库名称,如 open-podcasts,点击选择代码仓库。您也可以为代码仓库设置别名和添加描述信息。
-
在选择代码仓库对话框,点击 Git,在代码仓库地址区域,输入代码仓库地址,如 https://github.com/kubesphere-sigs/open-podcasts,点击确定。
说明 此处导入的是公共仓库,因此不需要创建凭证。如果您添加的是私有仓库,则需要创建凭证。有关如何添加凭证的更多信息,请参阅凭证管理。
创建持续部署
-
在左侧导航栏,点击持续部署。
-
在右侧的持续部署页面,点击创建。
-
在基本信息页签,输入持续部署名称,如 open-podcasts。在部署位置区域,选择持续部署的部署集群和项目。点击下一步。
-
在代码仓库设置页签,选择上一步创建的代码仓库,设置代码仓库的分支或标签以及 Kustomization 清单文件路径。点击下一步。
参数 描述 修订版本
Git 仓库中的 commit ID、分支或标签。例如,master, v1.2.0, 0a1b2c3 或 HEAD。
清单文件路径
设置清单文件路径。例如,config/default。
-
在同步策略区域,根据需要选择自动同步或手动同步。
-
自动同步:在检测到 Git 仓库中的清单与部署资源的实时状态之间存在差异时,根据设置的同步选项,自动触发应用程序同步。具体参数如下表所示。
参数 描述 清理资源
如果勾选,自动同步时会删除 Git 仓库中不存在的资源。不勾选时,自动同步触发时不会删除集群中的资源。
自恢复
如果勾选,当检测到 Git 仓库中定义的状态与部署资源中有偏差时,将强制应用 Git 仓库中的定义。不勾选时,对部署资源做更改时不会触发自动同步。
-
手动同步:根据设置的同步选项,手动触发应用程序同步。
-
-
在同步设置区域,根据需要设置同步相关参数。
参数 描述 跳过规范校验
跳过 kubectl 验证。执行 kubectl apply 时,增加 --validate=false 标识。
自动创建项目
在项目不存在的情况下自动为应用程序资源创建项目。
最后清理
同步操作时,其他资源都完成部署且处于健康状态后,再清理资源。
选择性同步
仅同步 out-of-sync 状态的资源。
-
在依赖清理策略区域,根据需要选择依赖清理策略。
参数 描述 foreground
先删除依赖资源,再删除主资源。
background
先删除主资源,再删除依赖资源。
orphan
删除主资源,留下依赖资源成为孤儿。
-
在替换资源区域,选择是否需要替换已存在的资源。
说明 如果勾选,将执行 kubectl replace/create 命令同步资源。不勾选时,使用 kubectl apply 命令同步资源。
-
点击创建。资源创建完成后将显示在持续部署列表中。
查看已创建的持续部署信息
-
在持续部署页面上查看到已创建的持续部署信息。具体参数如下表所示。
参数 描述 名称
持续部署的名称。
健康状态
持续部署的健康状态。主要包含以下几种状态:
-
健康:资源健康。
-
已降级:资源已经被降级。
-
进行中:资源正在同步。默认返回该状态。
-
暂停:资源已经被暂停并等待恢复。
-
未知:资源健康状态未知。
-
丢失:资源已缺失。
同步状态
持续部署的同步状态。主要包含以下几种状态:
-
已同步:资源同步已完成。
-
未同步:资源的实际运行状态和期望状态不一致。
-
未知:资源同步状态未知。
部署位置
资源部署的集群和项目。
更新时间
资源更新的时间。
-
-
点击持续部署右侧的
,您可以执行以下操作:
-
编辑信息:编辑别名和描述信息。
-
编辑 YAML:编辑持续部署的 YAML 文件。
-
同步:触发资源同步。
-
删除:删除持续部署。
警告 删除持续部署的同时会删掉和该持续部署关联的资源。请谨慎操作。
-
-
点击已创建的持续部署进入详情页面,查看同步状态和同步结果。
访问已创建的应用
-
进入持续部署所属的项目,在左侧导航栏,点击应用负载 > 服务。
-
在右侧的服务区域,找到已部署的应用,并点击右侧
,选择编辑外部访问。
-
在访问模式中选择 NodePort,点击确定。
-
在服务列表页面的外部访问列,查看暴露的端口,通过 {Node IP}:{NodePort} 访问此应用。
说明 在访问服务之前,请确保安全组中的端口已打开。