VMware Aria Automation 템플릿 내에서 CCI(클라우드 소비 인터페이스) 서비스를 사용하도록 CCI 요소를 추가할 수 있습니다. 그러면 사용자는 감독자 네임스페이스 내에서 가상 시스템 서비스와 Tanzu Kubernetes Grid 서비스를 사용하여 Kubernetes 기반 워크로드를 요청할 수 있습니다.

CCI 요소를 보려면 클라우드 템플릿의 리소스 라이브러리 내에서 클라우드 소비 인터페이스 섹션을 확장하거나 리소스 유형 검색 필드에 cci를 입력합니다.

클라우드 템플릿에서 CCI 요소를 찾습니다.

아래 표에는 템플릿에서 사용할 수 있는 세 가지 유형의 CCI 리소스가 나와 있습니다.
감독자 네임스페이스 리소스

CCI.Supervisor.Namespace

사용자가 애플리케이션 요구 사항에 따라 VM 및 TKG 리소스를 프로비저닝할 수 있도록 Kubernetes 기반 업무 공간에 리소스 제한, 사용자 액세스 및 사용 가능한 감독자 서비스를 제공하는 새 감독자 네임스페이스를 생성합니다.
감독자 리소스

CCI.Supervisor.Resource

구성 중인 감독자 리소스에 전달된 Kubernetes 매니페스트에 따라 virtualmachines, virtualmachineservices, tanzukubernetesclusters, persistentvolumeclaims, secrets 등 지원되는 감독자 Kubernetes 리소스를 감독자 네임스페이스 내에 생성합니다.
TKG 리소스

CCI.TKG.Resource

TKG 클러스터 내에 지원되는 Kubernetes 리소스를 생성합니다.
참고: 클라우드 템플릿에 CCI 요소를 추가하려면 먼저 VMware Aria Automation 관리자가 CCI를 설정해야 합니다. 클라우드 소비 인터페이스 설정 및 구성의 내용을 참조하십시오.
템플릿에 요소를 추가하려면 해당 요소를 캔버스에 끌어서 놓습니다. 리소스에 컨텍스트 기반 관계가 있는 경우 다음 규칙을 사용하여 중첩된 구성에 리소스를 놓을 수 있습니다.
  • CCI.Supervisor.Namespace 캔버스에 직접 놓습니다.
  • CCI.Supervisor.Resource 감독자 네임스페이스 리소스 또는 캔버스에 직접 놓습니다.
  • CCI.TKG.Resource 다른 TKG 리소스, 감독자 리소스 또는 캔버스에 직접 놓습니다. CCI 리소스는 5개 중첩 수준으로 제한됩니다.

아래 캔버스 보기에서는 TKG 리소스를 cciTKGCluster라는 감독자 리소스로 끄는 것을 보여줍니다. TKG 리소스가 포함된 감독자 리소스가 있는 감독자 네임스페이스에는 세 가지 중첩 수준이 표시됩니다.

중첩된 CCI 리소스를 템플릿에 끌어서 놓습니다.

다음 예는 클라우드 템플릿의 YAML 코드에 cciNamespacecciTKGCluster와 같은 CCI 리소스가 어떻게 나타나는지 보여줍니다. 각 예는 중요한 라인만 표시하도록 정리되어 있습니다.

감독자 네임스페이스 리소스 예

CCI.Supervisor.Namespace는 애플리케이션에 대한 사용자 관리 vSphere 감독자 IaaS 리소스가 생성되는 감독자 Kubernetes 기반 업무 공간을 나타냅니다.

이 예에서는 demo라는 감독자 네임스페이스를 프로비저닝하기 위해 cciNamespace라는 CCI 감독자 네임스페이스 리소스를 정의합니다.

참고: CCI 감독자 네임스페이스 리소스를 캔버스에 끌어서 놓을 때에는 YAML 코드에 name 속성에 대한 값을 입력해야 합니다.
네임스페이스가 대상 감독자에서 프로비저닝되도록 하려면 프로젝트 정의 classNameregionName을 사용하여 감독자 네임스페이스를 구성해야 합니다.
formatVersion: 1
inputs: {}
resources:
  cciNamespace:
    type: CCI.Supervisor.Namespace
    properties:
      name: demo
      className: default
      regionName: dev-us-west

감독자 리소스 예

CCI.Supervisor.Resource를 사용하여 감독자 네임스페이스 컨텍스트 내에서 실행되도록 지원되는 Kubernetes 개체에 대한 Kubernetes 매니페스트를 전달합니다.

  • 특정 감독자 네임스페이스 내에서 감독자 리소스를 프로비저닝하려면 템플릿 바인딩 식(예: context: ${resource.cciNamespace.id})을 사용하여 감독자 리소스 컨텍스트 속성을 감독자 네임스페이스 ID에 매핑하고 구성합니다.
  • 프로비저닝할 개체를 지정하려면 생성 중인 Kubernetes 개체에 Kubernetes 매니페스트를 전달하여 감독자 리소스의 매니페스트 속성을 구성합니다.
이 예에서는 네트워크, 토폴로지, 제어부 크기 및 작업자 노드 수와 같은 여러 설정을 지정하는 TKG 클러스터에 Kubernetes 매니페스트를 제공하여 감독자 네임스페이스 cciNamespacecciTKGCluster라는 감독자 리소스를 생성합니다.
formatVersion: 1
inputs: {}
resources:
  cciTKGCluster:
    type: CCI.Supervisor.Resource
    properties:
      context: ${resource.cciNamespace.id}
      manifest:
        apiVersion: cluster.x-k8s.io/v1beta1
        kind: Cluster
        metadata:
          name: ${input.tkg_Name}
          labels:
            tkg-cluster-selector: ${input.tkg_Name}
        spec:
          clusterNetwork:
            cni:
              name: antrea
            pods:
              cidrBlocks:
                - 192.168.156.0/20
            services:
              cidrBlocks:
                - 10.96.0.0/12
            serviceDomain: cluster.local
          topology:
            class: tanzukubernetescluster
            version: v1.24.9---vmware.1-tkg.4
            variables:
              - name: storageClasses
                value:
                  - tmm-kubernetes-storage-policy
              - name: defaultStorageClass
                value: tmm-kubernetes-storage-policy
              - name: vmClass
                value: ${input.controlPlaneVmClassName}
              - name: storageClass
                value: tmm-kubernetes-storage-policy
            controlPlane:
              replicas: ${input.controlPlaneCount}
              metadata:
                annotations:
                  run.tanzu.vmware.com/resolve-os-image: os-name=photon
            workers:
              machineDeployments:
                - class: node-pool
                  name: ${input.tkg_Name}-nodepool
                  replicas: ${input.workerCount}
                  metadata:
                    annotations:
                      run.tanzu.vmware.com/resolve-os-image: os-name=photon
                  variables:
                    overrides:
                      - name: vmClass
                        value: ${input.workerVmClassName}
이 예에서는 VM 구성을 정의하고 대기 기반 조건을 포함하는 Kubernetes 매니페스트를 제공하여 감독자 네임스페이스 cciNamespacevm이라는 감독자 리소스를 정의합니다.
formatVersion: 1
inputs: {}
resources:
  vm:
    type: CCI.Supervisor.Resource
    properties:
      context: ${resource.cciNamespace.id}
      manifest:
        apiVersion: vmoperator.vmware.com/v1alpha1
        kind: VirtualMachine
        metadata:
          finalizers:
            - virtualmachine.vmoperator.vmware.com
          generation: 1
          labels:
            vm-selector: vm-2rfx
          name: vm-2rfx
        spec:
          className: best-effort-xsmall
          imageName: vmi-c3d184be88e1af1cd
          networkInterfaces:
            - networkType: nsx-t
          powerOffMode: hard
          powerState: poweredOn
          restartMode: hard
          storageClass: vsan-default-storage-policy
          suspendMode: hard
      wait:
        conditions:
          - type: VirtualMachinePrereqReady
            status: "False"
            reason: VirtualMachineImageNotReady
            indicatesFailure: true

캔버스에서, 감독자 네임스페이스 cciNamespace에 두 개의 감독자 리소스 cciTKGClustervm이 포함됩니다.

감독자 네임스페이스 내에 추가된 두 개의 감독자 리소스

TKG 리소스 예

CCI.TKG.Resource를 사용하여 TKG 클러스터 내에서 또는 TKG 클러스터에서 실행되는 네임스페이스 내에서 지원되는 Kubernetes 리소스를 생성합니다.
  • TKG 리소스를 TKG 클러스터에 바인딩하려면 감독자 TKG 클러스터 리소스의 ID를 컨텍스트 속성(예: context: ${resource.cciTKGCluster.id})에 매핑합니다.
  • 예를 들어 cciTKGNamespace라는 TKG 리소스 내에 네임스페이스를 생성하는 경우 컨텍스트 속성(context: ${resource.cciTKGNamespace.id})에 TKG 리소스의 이름을 삽입하여 TKG 리소스를 네임스페이스에 바인딩할 수 있습니다.
  • 리소스 속성 내에 전달되는 Kubernetes 매니페스트는 프로비저닝할 Kubernetes 개체의 유형을 지정합니다.
이 예에서는 비밀을 cciTKGCluster라는 TKG 클러스터에 바인딩된 TKG 리소스로 보여 줍니다.
...
  tkgSecret:
    type: CCI.TKG.Resource
    properties:
      context: ${resource.cciTKGCluster.id}
      manifest:
        apiVersion: v1
        kind: Secret
        metadata:
          name: nvaie-apikey
        type: Opaque
        data:
          username: KM9hdCCodG9rZW4=
          password: ${base64_encode(input.password)}
...

캔버스에서, TKG 리소스 tkgSecret이 TKG 리소스 cciTKGCluster 내에 중첩된 것으로 나타납니다.

TKG 리소스 cciTKGCluster 내의 TKG 리소스 tkgSecret

대기 속성 추가

감독자 리소스와 TKG 리소스는 리소스 생성이 완료되었다고 간주하기 전에 리소스 내의 특정 조건 또는 필드 값을 대기하는 대기 속성을 지원합니다. 대기 속성 유형은 다음과 같습니다.
  • 필드 대기: 각 필드를 속성 경로 및 값으로 구성할 수 있는 필드 목록입니다. 리소스를 완료된 것으로 간주하려면 우선 값이 일치해야 합니다.
  • 조건 대기: 리소스 생성의 성공 또는 실패를 나타내는 조건 목록입니다.
이 예에서는 감독자 리소스에 추가된 대기 조건을 보여줍니다. 감독자 리소스를 완료된 것으로 플래그를 지정하려면 조건이 충족되어야 합니다.
...
      wait:
        conditions:
          - type: VirtualMachinePrereqReady
            status: "False"
            reason: VirtualMachineImageNotReady
            indicatesFailure: true
...

UI를 사용하여 선택적 매개 변수를 추가하려면 [코드] 패널에서 리소스 이름 옆에 있는 전구를 클릭합니다.코드 패널에서 전구를 클릭하여 선택적 매개 변수를 추가합니다.