使用 GitOps 实现应用持续部署

KubeSphere 3.3.0 引入了一种为云原生应用实现持续部署的理念 – 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 清单文件路径,如 config/default

  6. 同步策略区域,您可以选择手动同步自动同步。当选择自动同步时,会出现清理资源自恢复选项,请根据您的实际需要选择。

    • 清理资源:自动同步时,自动删除 Git 中不存在的资源。
    • 自恢复:时刻保证与 Git 中定义的状态同步。
  7. 同步设置区域,按照实际需要选择以下设置项:

    • 跳过规范校验:不校验资源规范性。
    • 自动创建项目:在同步的过程中,自动创建项目。
    • 最后清理:直到所有的资源都已经同步且处于健康状态才删除不存在的资源。
    • 仅应用未同步:仅应用未同步的资源。
  8. 依赖清理策略区域,选择一个清理策略:

    • foreground:先删除附属资源,再删除主资源。
    • background:先删除主资源,再删除附属资源。
    • orphan:删除主资源之后,附属资源仍然存在。
  9. 替换资源区域,选择是否需要替换已存在的资源,点击创建

    您可以在持续部署页面上查看到已创建的持续部署的信息,如下表所示:

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

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

警告

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

访问已创建的应用

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

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

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

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

备注

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

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


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