如何用Quali Torque orb按需部署应用环境

161 阅读7分钟

大多数开发者关心的是构建下一个大事件。构建、测试和发布流程的自动化使您能够保持对创新和为用户提供价值的关注。通过将一流的CI/CD工作流程协调的力量与管理环境即服务相结合,开发人员可以保持对构建下一个目标的关注。

Quali Torque orb让开发人员能够直接从他们的CircleCI管道中按需触发应用环境。CircleCI用户可以通过利用Torque orb的预定义命令,轻松地将Torque环境即服务平台整合到他们的项目中。在本教程中,我们将演示如何设置一个Torque账户和应用环境,以及如何使用Torque orb从CircleCI管道自动部署你的环境。

在Torque用户界面中设置一个应用环境

你只需要遵循几个简单的步骤,就可以启动和运行一个功能齐全的环境。要开始,请注册一个免费的Torque账户并设置密码,然后按照以下步骤进行。

在Torque中定义你的云账户

下一步,通常由管理员完成,是在Torque中定义一个云账户。从左边的菜单中导航到管理控制台。在云账户管理部分点击连接云,然后按照指示在AWSAzureKubernetes上设置一个账户。

Cloud account admin area in Torque

在这个例子中,我们将使用AWS作为我们的云提供商。

添加一个蓝图库

在Torque中,应用环境的模板被称为蓝图。Torque遵循开发者的最佳实践,所有蓝图都存储在源控制库中并自动同步。我们目前支持GitHub和Bitbucket,并正在积极增加更多的支持。 在下面的例子中,我们将使用GitHub。

在GitHub中,创建一个仓库。复制存储库的URL。我们建议通过分叉样本库(在样本空间)来创建一个仓库。

接下来,在Torque中,执行以下步骤。

  1. 进入你的空间。
  2. 打开设置页面。
  3. 点击存储库标签。你可以在空间中设置两个不同的存储库,一个用于沙盒,另一个用于生产环境。在我们的例子中,我们将为沙盒环境设置一个仓库。
  4. 点击添加一个仓库
  5. 选择你想使用的源控制工具(GitHub),并在弹出的添加GitHub仓库窗口中粘贴复制的URL。
  6. 点击连接
  7. 授权 Torque 访问你的 GitHub 仓库。

Adding a blueprint repository in the Torque UI

为你的蓝图建模

DevOps工程师对代表所需应用程序及其基础设施的蓝图进行建模。每个蓝图都可以有输入参数、自定义标签,并可能根据管道的阶段而有所不同。

在Torque中,有几种方法可以创建蓝图。

  • 使用我们样本库中的YAML原生语言,其中包含你可以利用的例子来创建一个新的蓝图
  • 通过导入现有的Terraform模板
  • 通过导入现有的Helm图表

让我们来看看我们将在本项目的其余部分使用的一个应用实例。这个应用程序被称为促销经理。它是一个简单的电子商务销售工具,生成促销优惠。

DevOps团队希望在Torque中对促销经理的应用环境进行建模,将其整合到自动化的CircleCI工作流中,并使用它来自动测试最新的版本。

在这种情况下,我们使用YAML方法,并从我们团队正在进行的现有蓝图中提取。使用你最喜欢的IDE来编辑YAML代码,并将其检入你在上一步中在Torque中定义的Git仓库。

Blueprint repository in GitHub

我们的蓝图有三个应用服务。

  1. 一个在MongoDB上运行的后端数据库
  2. 一个API服务器
  3. 一个网络服务器

我们将在AWS上部署这个应用程序,这是我们在云账户设置部分定义的云提供商。

Promotions Manager application in Torque

一旦你的蓝图显示在Torque蓝图目录中,你可以使用切换器发布它,并在将其纳入CircleCI工作流之前对其进行测试,以确保其部署正确。

Use the published toggle to publish and test your environment

要测试它,导航到沙盒环境,从目录中选择蓝图。接下来,设置沙盒参数。您可以将所有的参数保留为默认,并输入一个名称。

Sandbox parameters interface

最后,启动沙盒并验证它的部署是否正确。

A fully deployed sandbox ready to use

你也可以点击快速链接,检查你的应用程序的Web UI前端。

The front end of the Promotions Manager application

现在你确信你的应用程序在Torque中部署正确,你可以结束沙盒或让它按照沙盒持续时间参数中的定义自动结束。

作为CI工作流的一部分,自动部署应用程序环境

下一步是在CircleCI中创建一个项目,并在你的配置文件中包括Torque orb注册表的命令。为了完成本教程的这一部分,如果你还没有CircleCI账户,你将需要注册一个账户

在我们的例子中,我们将使用GitHub账户登录CircleCI,并连接为我们的Torque蓝图定义的Git存储库

我们将创建一个简单的项目,启动一个沙盒来部署我们的促销经理蓝图,运行一个测试,并终止该沙盒。

注意在一个典型的情况下,你会想测试你的应用程序代码的最新版本。这意味着你也会添加一个构建步骤作为工作流的触发点,并使其成为项目的第一步。

一旦你的资源库被列在项目列表中,你将配置环境变量来定义你的Torque环境

配置你的CircleCI管道

在CircleCI网络应用程序中,导航到项目部分,从您的促销经理资源库旁边的菜单中选择项目设置。然后导航到环境变量页面。

Environment variables page in the CircleCI web app

接下来,添加以下三个变量。

  • TORQUE_SERVER:你的Torque服务器的URL (https://app.qtorque.io)
  • TORQUE_SPACE:你在Torque中的空间名称,当你登录到Torque时,可在屏幕的左上角看到。
  • TORQUE_TOKEN:在Torque中,导航到设置>集成标签,选择CircleCI。点击连接,然后点击新建令牌。输入为这个变量生成的值。

New token menu in the Torque Integrations tab

接下来,你准备生成你的CircleCI项目的config.yml文件。回到你的项目,并选择配置文件

Configuration File option in the project menu

我们将使用Torque orb资源库中定义的步骤。

  • start-sandbox:部署一个Torque沙盒
  • end-sandbox:终止一个Torque沙箱

我们还将运行一个快速测试,将检索应用程序的端点 - 请随意添加您自己的健康检查,安全测试,或根据需要进行性能验证。

在我们的推广应用例子中,配置文件将是以下内容(直接取自我们的样本库)。

version: 2.1

orbs:
  torque: quali/torque@1.0.0
  aws-s3: circleci/aws-s3@1.0.11
jobs:
  test:
    docker:
      - image: circleci/ruby:2.4.1
    steps:
      - torque/start-sandbox:
          sandbox-name: "circleci-test"
          blueprint: "promotions-manager-all-aws-dev"
          inputs: "{'AWS_INSTANCE_TYPE': 'm5.large','PORT':'3000','API_PORT':'3001', 'RELEASE_NUMBER':'none', 'API_BUILD_NUMBER':'none'}"
          artifacts: "{'promotions-manager-ui':'artifacts/latest/promotions-manager-ui.master.tar.gz','promotions-manager-api':'artifacts/latest/promotions-manager-api.master.tar.gz', 'mongodb': 'artifacts/test-data/test-data-db.tar' }"
      - run:
          name: Functional test
          command: |
            SB_ENDPOINT="SB_${SANDBOX_ID}_SHORTCUT_1"
            echo "Checking Sandbox ${!SB_ENDPOINT}"
      - torque/end-sandbox:
          sandbox-id: SANDBOX_ID
workflows:
  testpromotionmanager:
    jobs:
      - test

确保指定所有的输入参数(逗号分隔的列表)以启动沙盒。第一次运行这个流程时,使用你在Torque中直接测试应用部署时的相同值。

在后端,该工作流调用Torque REST API,根据蓝图名称和可选参数触发沙盒环境的部署。同样,一旦测试完成,沙盒环境就会被终止,基础设施被重置为初始状态。

运行管道

最后一步是运行你的持续集成管道。你可以直接从CircleCI用户界面(第一次创建或修改配置文件)或自动,基于最新的代码合并到主分支。

A successful pipeline run in CircleCI

结论

在几个步骤中,你能够以完全自动化的方式自动部署和测试你的应用程序。你可以使用类似的方法快速建立和运行一个更复杂的管道,以发布你自己的多服务云应用程序,从开发到测试,一直到生产。