프로젝트 및 클라우드 템플릿에 추가된 태그는 인프라 리소스, 프로 파일 및 클라우드 영역의 기능 태그를 일치시키는 데 사용될 때 제약 조건 태그로 작동합니다. 클라우드 템플릿의 경우 Cloud Assembly는 이 일치 기능을 사용하여 배포를 위해 리소스를 할당합니다.

Cloud Assembly를 사용하면 두 가지의 기본적인 방법으로 제약 조건 태그를 사용할 수 있습니다. 첫 번째는 프로젝트 및 이미지를 구성할 때입니다. 태그를 제약 조건으로 사용하여 리소스를 프로젝트 또는 이미지와 연결할 수 있습니다. 두 번째는 클라우드 템플릿에서 제약 조건으로 지정된 태그를 사용하여 배포를 위한 리소스를 선택하는 것입니다. 이러한 방법에 모두 적용되는 제약 조건은 클라우드 템플릿에 병합되어 배포에 사용 가능한 리소스를 정의하는 배포 요구 사항 집합을 구성합니다.

프로젝트에서 제약 조건 태그가 작동하는 방식

클라우드 관리자는 Cloud Assembly 리소스를 구성할 때 프로젝트에 제약 조건 태그를 적용할 수 있습니다. 이러한 방식으로 관리자는 프로젝트 수준에서 거버넌스 제약 조건을 직접 적용할 수 있습니다. 이 수준에서 추가된 모든 제약 조건은 적용 가능한 프로젝트에 대해 요청된 모든 클라우드 템플릿에 적용되며 이러한 제약 조건 태그는 다른 태그보다 우선합니다.

프로젝트의 제약 조건 태그와 클라우드 템플릿의 제약 조건 태그가 충돌하는 경우에는 프로젝트 태그가 우선하므로 클라우드 관리자는 거버넌스 규칙을 적용할 수 있습니다. 예를 들어 클라우드 관리자가 프로젝트에서 location:london 태그를 생성했지만 개발자가 클라우드 템플릿에 location:boston 태그를 배치한 경우 전자가 후자에 우선하기 때문에 리소스는 location:london 태그를 포함하는 인프라에 배포됩니다.

사용자가 프로젝트에 적용할 수 있는 제약 조건 태그에는 네트워크, 스토리지 및 확장성이라는 세 가지 유형이 있습니다. 필요한 만큼 각 태그 유형의 인스턴스를 적용할 수 있습니다. 프로젝트 제약 조건은 경성 또는 연성입니다. 기본적으로 제약 조건은 경성입니다. 경성 제약 조건을 사용하면 배포 제한을 엄격하게 적용할 수 있습니다. 경성 제약 조건이 하나 이상 충족되지 않으면 배포가 실패합니다. 연성 제약 조건은 사용 가능한 경우에 선택되는 기본 설정을 나타내는 방식으로 제시되지만 연성 제약 조건이 충족되지 않아도 배포는 실패하지 않습니다.

클라우드 템플릿에서 제약 조건 태그가 작동하는 방식

클라우드 템플릿에서는 제약 조건 태그를 리소스에 YAML 코드로 추가하여 클라우드 관리자가 리소스, 클라우드 영역 및 스토리지, 네트워크 프로파일에서 생성한 적절한 기능 태그를 일치시킵니다. 또한 제약 조건 태그를 구현하기 위한 더 복잡한 다른 옵션이 있습니다. 예를 들어 요청 시 변수를 사용하여 하나 이상의 태그를 채울 수 있습니다. 이를 통해 요청 시간에 하나 이상의 태그를 지정할 수 있습니다.

클라우드 템플릿 YAML 코드에서 제약 조건 머리글 아래의 tag 레이블을 사용하여 제약 조건 태그를 생성합니다. 프로젝트의 제약 조건 태그가 클라우드 템플릿에서 생성된 제약 조건 태그에 추가됩니다.

Cloud Assembly는 YAML 파일에서 더 쉽게 제약 조건을 사용하도록 간단한 문자열 형식을 지원합니다.

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

기본적으로 Cloud Assembly는 경성 적용이 포함된 엄격한 제약 조건을 생성합니다. 태그 값은 애플리케이션의 나머지 부분에서와 마찬가지로 권장되지만 선택적입니다.

다음 "WordPress with MySQL" 예제는 계산 리소스에 대한 특정 위치 정보를 나타내는 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 태그를 사용하여 경성인 스토리지 제약 조건을 생성한다고 가정합니다. 프로젝트에 이 제약 조건에 일치하는 스토리지가 없다면 관련된 모든 배포가 실패합니다.