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를 설정해야 합니다. 클라우드 소비 인터페이스 설정 및 구성의 내용을 참조하십시오.
다음 예는 클라우드 템플릿의 YAML 코드에 CCI 리소스가 어떻게 나타나는지 보여줍니다. 각 예는 중요한 라인만 표시하도록 정리되어 있습니다.

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

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

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

네임스페이스가 대상 감독자에서 프로비저닝되도록 하려면 프로젝트 정의 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 매니페스트를 전달하여 감독자 리소스의 매니페스트 속성을 구성합니다.
이 예에서는 네트워크, 토폴로지, 제어부 크기 및 작업자 노드 수를 지정하는 Kubernetes 매니페스트를 제공하여 TKG 클러스터를 생성합니다.
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 매니페스트를 제공하여 가상 시스템을 정의합니다.
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

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 리소스는 리소스 생성이 완료되었다고 간주하기 전에 리소스 내의 특정 조건 또는 필드 값을 대기하는 대기 속성을 지원합니다. 대기 속성 유형은 다음과 같습니다.
  • 필드 대기: 각 필드를 속성 경로 및 값으로 구성할 수 있는 필드 목록입니다. 리소스를 완료된 것으로 간주하려면 우선 값이 일치해야 합니다.
  • 조건 대기: 리소스 생성의 성공 또는 실패를 나타내는 조건 목록입니다.
이 예에서는 감독자 리소스에 추가된 대기 조건을 보여줍니다. 감독자 리소스를 완료된 것으로 플래그를 지정하려면 조건이 충족되어야 합니다.
...
    wait:
      fields:
        - path: status.loadBalancer.ingress[0].ip
          value: "*"
...