使用添加到项目和云模板的标记与基础架构资源、配置文件和云区域上的功能标记匹配时,这些标记用作限制标记。对于云模板,Cloud Assembly 使用此匹配功能为部署分配资源。

Cloud Assembly 中,可以通过两种主要方式使用限制标记。第一种方式是在配置项目和映像时。可以使用标记作为限制将资源与项目或映像相关联。第二种方式是在使用指定为限制的标记为部署选择资源的云模板中。通过这两种方式应用的限制在云模板中合并,形成了一组部署要求,从而定义了可用于部署的资源。

限制标记在项目中如何工作

配置 Cloud Assembly 资源时,云管理员可以在项目上应用限制标记。这样,管理员可以直接在项目级别应用监管限制。在此级别添加的所有限制都将应用于为适用项目请求的每个云模板,并且这些限制标记优先于其他标记。

如果项目中的限制标记与云模板中的限制标记冲突,将优先应用项目标记,从而云管理员可以实施监管规则。例如,如果云管理员在项目中创建 location:london 标记,而开发人员在云模板中放置 location:boston 标记,将优先应用前一个标记,并且资源会部署到包含 location:london 标记的基础架构。

最多可以在项目中应用三项限制。项目限制可为硬性或软性。默认情况下,项目限制为硬性。使用硬性限制可以严格执行部署限制。如果不满足一项或多项硬性限制,部署将失败。软性限制提供了一种方法用于表示将选择的首选项(如果可用),但在不满足软性限制时,部署不会失败。

限制标记在云模板中如何工作

在云模板中,您可以将限制标记作为 YAML 代码添加到资源,以与云管理员在资源、云区域以及存储配置文件和网络配置文件中创建的相应功能标记匹配。此外,还有其他更复杂的选项可用于实施限制标记。例如,您可以使用变量在请求中填充一个或多个标记。这使您可以在请求时指定一个或多个标记。

使用 tag 标签在云模板 YAML 代码中的限制标题下创建限制标记。项目中的限制标记将添加到云模板中创建的限制标记。

Cloud Assembly 支持简单字符串格式设置,以使在 YAML 文件中使用限制变得更容易:

[!]tag_key[:tag_value][:hard|:soft]

默认情况下,Cloud Assembly 将创建具有硬性执行的明确限制。在应用程序的剩余部分,标记值为可选,但建议提供标记值。

以下 WordPresswithMySQL 示例显示了 YAML 限制标记,这些标记表示计算资源的特定位置信息。

name: "wordPressWithMySql"
components:
  mysql:
    type: "Compute"
    data:
      name: "mysql"
      # ... skipped lines ...
  wordpress:
    type: "Compute"
    data:
      name: "wordpress"
      instanceType: small
      imageType: "ubuntu-server-1604"
      constraints:
        - tag: "!location:eu:hard"
        - tag: "location:us:soft"
        - tag: "!pci"
      # ... skipped lines ...

有关如何使用云模板的详细信息,请参见第 3 部分:设计并部署示例 Cloud Assembly 模板

硬性限制和软性限制在项目以及云模板中如何工作

项目和云模板中的限制都可为硬性或软性。上述代码片段显示了硬性限制和软性限制的示例。默认情况下,所有限制均为硬性。使用硬性限制可以严格执行部署限制。如果不满足一项或多项硬性限制,部署将失败。软性限制用于表示将应用的首选项(如果可用),但如果不满足软性限制,部署不会失败。

如果有一系列硬性限制和软性限制针对特定资源类型,则软性限制还可以用作 Tie Breaker。也就是说,如果多个资源满足硬性限制,则使用软性限制来选择在部署中使用的实际资源。

例如,最多可以采用网络项、存储项和可扩展性项的任意组合在项目中指定三项限制。此外,还可以选择每项限制为硬性还是软性。假设您创建具有 location:boston 标记的硬性存储限制。如果项目中的所有存储均不满足该限制,则任何相关的部署都将失败。