新增至專案和雲端範本的標籤將在用來比對基礎結構資源、設定檔和雲端區域上的功能標籤時充當限制標籤。如果是雲端範本,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 會透過強制執行建立正向限制。儘管建議提供標籤值,但此值是選擇性的 (如應用程式的其餘部分一樣)。

以下具有 MySQL 的 WordPress 範例顯示 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 範本

硬限制和軟限制在專案和雲端範本中的運作方式

專案和雲端範本中的限制可為硬性或軟性。上述程式碼片段顯示了硬限制和軟限制的範例。依預設,所有限制均為硬性。使用硬限制可以嚴格強制執行部署限制。如果不符合一或多項硬限制,部署會失敗。軟限制用來表示將套用的喜好設定 (如果可用),但不符合軟限制時,不會導致部署失敗。

如果特定資源類型存在一系列硬限制和軟限制,則軟限制也可以做為連接短路器。也就是說,如果多個資源滿足硬限制,會使用軟限制來選取在部署中使用的實際資源。

例如,最多可使用網路、儲存區和擴充性項目的任意組合對專案指定三項限制。此外,還可以選取每項限制為硬性還是軟性。假設您建立具有 location:boston 標籤的硬性儲存區限制。如果專案中的儲存區均不符合該限制,則任何相關的部署都會失敗。