使用 GitOps 实现应用持续部署

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

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

准备工作

导入代码仓库

  1. project-regular 用户登录 KubeSphere 控制台,在左侧导航树,点击 DevOps 项目

  2. 在右侧的 DevOps 项目页面,点击您创建的 DevOps 项目。

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

  4. 在右侧的代码仓库页面,点击导入

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

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

    备注

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

创建持续部署

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

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

  3. 基本信息页签,输入持续部署名称,如 open-podcasts,并选择上一步创建的代码仓库,您也可以设置别名和添加描述信息,点击下一步

  4. 部署设置页签,选择持续部署的部署集群和项目。

  5. 代码仓库设置区域,设置代码仓库的分支或标签以及 Kustomization 清单文件路径。

    参数描述

    修订版本

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

    清单文件路径

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

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

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

      参数描述

      清理资源

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

      自纠正

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

    • 手动同步:根据设置的同步选项,手动触发应用程序同步。具体参数如下表所示。

      参数描述

      清理资源

      如果勾选,同步会删除 Git 仓库中不存在的资源。不勾选时,同步不会删除集群中的资源,而是会显示 out-of-sync

      模拟运行

      模拟同步,不影响最终部署资源。

      仅执行 Apply

      如果勾选,同步应用资源时会跳过 pre/post 钩子,仅执行 kubectl apply

      强制 Apply

      如果勾选,同步时会执行 kubectl apply --force

    备注

    如需定义以上参数,持续部署创建完成后您需要在持续部署列表或详情页面手动点击同步,然后在弹出的同步资源对话框中设置各参数。
  7. 同步设置区域,根据需要设置同步相关参数。

    参数描述

    跳过规范校验

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

    自动创建项目

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

    最后清理

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

    选择性同步

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

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

    参数描述

    foreground

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

    background

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

    orphan

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

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

    备注

    如果勾选,将执行 kubectl replace/create 命令同步资源。不勾选时,使用 kubectl apply 命令同步资源。
  10. 点击创建。资源创建完成后将显示在持续部署列表中。

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

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

    参数描述信息
    名称持续部署的名称。
    健康状态持续部署的健康状态。主要包含以下几种状态:
    • 健康:资源健康。
    • 已降级:资源已经被降级。
    • 进行中:资源正在同步。默认返回该状态。
    • 暂停:资源已经被暂停并等待恢复。
    • 未知:资源健康状态未知。
    • 丢失:资源已缺失。
    同步状态持续部署的同步状态。主要包含以下几种状态:
    • 已同步:资源同步已完成。
    • 未同步:资源的实际运行状态和期望状态不一致。
    • 未知:资源同步状态未知。
    部署位置资源部署的集群和项目。
    更新时间资源更新的时间。
  2. 点击持续部署右侧的 icon,您可以执行以下操作:

    • 编辑信息:编辑别名和描述信息。
    • 编辑 YAML:编辑持续部署的 YAML 文件。
    • 同步:触发资源同步。
    • 删除:删除持续部署。

警告

删除持续部署的同时会删掉和该持续部署关联的资源。请谨慎操作。
  1. 点击已创建的持续部署进入详情页面,可以查看同步状态和同步结果。

访问已创建的应用

  1. 进入持续部署所在的项目,在左侧导航栏,点击服务

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

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

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

备注

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

通过邮件接收 KubeSphere 最新的技术博客与产品更新的通知


感谢您的反馈。如果您有关于如何使用 KubeSphere 的具体问题,请在 Slack 上提问。如果您想报告问题或提出改进建议,请在 GitHub 存储库中打开问题。