KubeSphere 企业版引入了一种为云原生应用实现持续部署的理念 – GitOps。GitOps 的核心思想是拥有一个 Git 仓库,并将应用系统的申明式基础架构和应用程序存放在 Git 仓库中进行版本控制。GitOps 结合 Kubernetes 能够利用自动交付流水线将更改应用到指定的任意多个集群中,从而解决跨云部署的一致性问题。

本文档演示如何创建持续部署以实现应用的部署。

前提条件

  • KubeSphere 企业版平台需要安装并启用 DevOps 扩展组件。

  • 已有一个企业空间、一个 DevOps 项目和一个用户 (例如 project-regular),并已邀请该用户至 DevOps 项目且授予 operator 角色。请参阅角色和成员管理

导入代码仓库

  1. project-regular 用户登录 KubeSphere 企业版 Web 控制台。

  2. 点击企业空间管理并进入您的 DevOps 项目。

  3. 在左侧导航栏,点击代码仓库

  4. 在右侧的代码仓库页面,点击添加

  5. 导入代码仓库对话框,输入代码仓库名称,如 open-podcasts,点击选择代码仓库。您也可以为代码仓库设置别名和添加描述信息。

  6. 选择代码仓库对话框,点击 Git,在代码仓库地址区域,输入代码仓库地址,如 https://github.com/kubesphere-sigs/open-podcasts,点击确定

    说明

    此处导入的是公共仓库,因此不需要创建凭证。如果您添加的是私有仓库,则需要创建凭证。有关如何添加凭证的更多信息,请参阅凭证管理

创建持续部署

  1. 在左侧导航栏,点击持续部署

  2. 在右侧的持续部署页面,点击创建

  3. 基本信息页签,输入持续部署名称,如 open-podcasts。在部署位置区域,选择持续部署的部署集群和项目。点击下一步

  4. 代码仓库设置页签,选择上一步创建的代码仓库,设置代码仓库的分支或标签以及 Kustomization 清单文件路径。点击下一步

    参数描述

    修订版本

    Git 仓库中的 commit ID、分支或标签。例如,master, v1.2.0, 0a1b2c3HEAD

    清单文件路径

    设置清单文件路径。例如,config/default

  5. 同步策略区域,根据需要选择自动同步手动同步

    • 自动同步:在检测到 Git 仓库中的清单与部署资源的实时状态之间存在差异时,根据设置的同步选项,自动触发应用程序同步。具体参数如下表所示。

      参数描述

      清理资源

      如果勾选,自动同步时会删除 Git 仓库中不存在的资源。不勾选时,自动同步触发时不会删除集群中的资源。

      自恢复

      如果勾选,当检测到 Git 仓库中定义的状态与部署资源中有偏差时,将强制应用 Git 仓库中的定义。不勾选时,对部署资源做更改时不会触发自动同步。

    • 手动同步:根据设置的同步选项,手动触发应用程序同步。

  6. 同步设置区域,根据需要设置同步相关参数。

    参数描述

    跳过规范校验

    跳过 kubectl 验证。执行 kubectl apply 时,增加 —validate=false 标识。

    自动创建项目

    在项目不存在的情况下自动为应用程序资源创建项目。

    最后清理

    同步操作时,其他资源都完成部署且处于健康状态后,再清理资源。

    选择性同步

    仅同步 out-of-sync 状态的资源。

  7. 依赖清理策略区域,根据需要选择依赖清理策略。

    参数描述

    foreground

    先删除依赖资源,再删除主资源。

    background

    先删除主资源,再删除依赖资源。

    orphan

    删除主资源,留下依赖资源成为孤儿。

  8. 替换资源区域,选择是否需要替换已存在的资源。

    说明

    如果勾选,将执行 kubectl replace/create 命令同步资源。不勾选时,使用 kubectl apply 命令同步资源。

  9. 点击创建。资源创建完成后将显示在持续部署列表中。

查看已创建的持续部署信息

  1. 持续部署页面上查看到已创建的持续部署信息。具体参数如下表所示。

    参数描述

    名称

    持续部署的名称。

    健康状态

    持续部署的健康状态。主要包含以下几种状态:

    • 健康:资源健康。

    • 已降级:资源已经被降级。

    • 进行中:资源正在同步。默认返回该状态。

    • 暂停:资源已经被暂停并等待恢复。

    • 未知:资源健康状态未知。

    • 丢失:资源已缺失。

    同步状态

    持续部署的同步状态。主要包含以下几种状态:

    • 已同步:资源同步已完成。

    • 未同步:资源的实际运行状态和期望状态不一致。

    • 未知:资源同步状态未知。

    部署位置

    资源部署的集群和项目。

    更新时间

    资源更新的时间。

  2. 点击持续部署右侧的more,您可以执行以下操作:

    • 编辑信息:编辑别名和描述信息。

    • 编辑 YAML:编辑持续部署的 YAML 文件。

    • 同步:触发资源同步。

    • 删除:删除持续部署。

    警告

    删除持续部署的同时会删掉和该持续部署关联的资源。请谨慎操作。

  3. 点击已创建的持续部署进入详情页面,查看同步状态和同步结果。

访问已创建的应用

  1. 进入持续部署所属的项目,在左侧导航栏,点击应用负载 > 服务

  2. 在右侧的服务区域,找到已部署的应用,并点击右侧more,选择编辑外部访问

  3. 访问模式中选择 NodePort,点击确定

  4. 在服务列表页面的外部访问列,查看暴露的端口,通过 {Node IP}:{NodePort} 访问此应用。

    说明

    在访问服务之前,请确保安全组中的端口已打开。