Skip to main content
NetApp Solutions
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

利用NetApp FlexClone技术加快软件开发速度

贡献者

概述

对于希望通过与合作伙伴共享环境或在开发环境中测试新版本的代码而不影响当前正在处理的版本的开发人员来说、在Kubernetes集群中克隆已部署的应用程序是一种非常有用的工具。Kubernetes应用程序的有状态和应用程序一致克隆是NetApp Astra Control中的一项主要功能、同时还包括应用程序的备份和还原。另外、如果使用同一存储后端在同一个Kubernetes集群中克隆应用程序、则Astra Control会默认使用NetApp FlexClone技术来复制永久性数据卷、从而显著加快此过程。通过加快此过程、克隆的环境会在几分钟内完成配置并可供使用、与重新部署测试或开发环境相比、开发人员只需短暂的暂停即可恢复工作。为了方便起见、NetApp Astra Control中提供的所有功能均可通过API调用、从而可以轻松集成到Ansible等自动化框架中。因此、环境的暂存速度可以更快、因为开始克隆操作步骤 只需要在攻略手册或角色中进行少量更改。

什么是NetApp FlexClone技术?

NetApp FlexClone技术是NetApp FlexVol 的可写时间点Snapshot副本。它们几乎可以即时配置、包含源卷中的所有数据、并且不会占用额外的存储空间、直到新卷中的数据开始从源中转移为止。当多个数据副本可用于暂存、而存储系统用于配置这些卷的资源有限时、它们通常用于开发或基于模板的环境。与必须多次复制数据并消耗大量存储空间和时间的传统存储系统相比、NetApp FlexClone技术可以加快执行与存储相关的任务。

FlexClone映像

要了解有关NetApp FlexClone技术的详细信息、请访问上的页面 "NetApp文档"

前提条件

  1. 受支持的Kubernetes Distribution、例如Red Hat OpenShift 4.6.8+、Rancher 2.5+或Kubernetes 1.19+。

  2. NetApp Astra控制中心21.12及更高版本。

  3. 一种NetApp ONTAP 系统、其中包含通过NetApp Astra Trident配置的存储后端。

  4. Ansible 2.9及更高版本。

  5. 适用于您要在NetApp Astra Control中克隆为受管应用程序的环境的模板。

用例简介

对于此用例、我们可以直观地显示类似于以下工作流的内容:

工作流映像
  1. 用户运行Ansible攻略手册来创建新的暂存环境。

  2. Ansible使用URI-API模块调用Astra Control来执行克隆操作。

  3. Astra Control会在预配置的模板环境中执行克隆操作、从而创建新的托管应用程序。

    备注 此环境可以是开发中的一个独立应用程序、也可以是Jenkins CI/CD管道等整个开发环境。
  4. 然后、用户将其代码的某个版本从Gitea等联机存储库提取到克隆的开发环境中。

  5. 新版本的应用程序由NetApp Astra Control部署和管理。

    备注 这两个过程都可以实现自动化。
  6. 用户可以在此克隆环境中开发新代码。

  7. 如果用户对开发工作感到满意、他们可以将代码推回托管存储库。

此处提供的使用情形取决于您要克隆的特定环境或应用程序是否存在黄金模板。在我们的环境中、我们创建了三个此类模板、一个用于Wordpress部署、一个用于Magento部署、一个用于使用Gitea的Jenkins CI/CD环境、我们将其命名为DevTools。

模板图像

其中每个环境都由NetApp Astra控件管理、其中的永久性卷当前存储在NetApp ONTAP 存储系统上、并由NetApp Astra Trident提供NFS后端。

使用情形验证

  1. 克隆NetApp解决方案工程团队提供的Ansible工具包、其中包括克隆角色和应用程序更新攻略手册。

    [netapp-user@rhel7 ~]$ git clone https://github.com/NetApp-Automation/na_astra_control_suite.git
    [netapp-user@rhel7 ~]$ cd na_astra_control_suite
  2. 编辑`vars/clone_vars.yml`并填写适合您的Astra Control环境的全局值。

    astra_control_fqdn: astra-control-center.example.com
    astra_control_account_id: "xxxx-xxxx-xxxx-xxxx-xxxx"
    astra_control_api_token: "xxxxx"
    备注 您需要填写的全局环境值可在NetApp Astra Control的"API Access"菜单下的用户配置文件图标下找到。
    API访问映像
  3. 完成全局变量后、您可以为要克隆的特定应用程序选择值。要将devtools环境克隆到名为`alan-devtools`的个人环境、您需要执行以下操作:

    clone_details:
      - clone_name: alan-devtools
        destination_namespace: alan-dev-namespace
        source_cluster_name: ocp-vmware2
        destination_cluster_name: ocp-vmware2
        source_application_name: devtools-template
    备注 要在克隆过程中利用NetApp FlexClone技术、`src集群`和`dest-cluster`必须相同。
  4. 现在、您可以执行此攻略手册来克隆此应用程序。

    [netapp-user@rhel7 na_astra_control_suite]$ ansible-playbook -K clone_app_playbook.yml]
    备注 写入的攻略手册必须由root用户或通过传递"-K"参数在sudo过程中升级的人员运行。
  5. 攻略手册运行完毕后、克隆的应用程序将在Astra控制中心控制台中显示为可用。

    克隆的应用程序映像
  6. 然后、用户可以登录到部署该应用程序的Kubernetes环境、验证该应用程序是否已使用新的IP地址公开、并开始其开发工作。

有关此用例的演示以及升级应用程序的示例、请参见 "此处"