DevOps 사용자는 CCI kubectl 명령을 사용하여 감독자 네임스페이스를 생성하고 네임스페이스 내에 인프라 리소스를 생성할 수 있습니다. 다음 예에서는 감독자 네임스페이스를 생성하고 네임스페이스에 VM을 추가하는 방법을 보여줍니다.

사전 요구 사항

  • Automation 관리자가 클라우드 소비 인터페이스 인프라를 설정했는지 확인합니다. kubectl을 사용하여 CCI 인프라 설정의 내용을 참조하십시오.
  • Automation Service Broker에서 프로젝트 중 하나 이상의 멤버인지 확인합니다.
  • Automation에서 Automation Service Broker 사용자 서비스 역할 이상이 있는 조직 멤버인지 확인합니다.
  • 다음 사항을 확인합니다.
    • CCI kubectl 플러그인을 다운로드했습니다.
    • 사용자 서비스 역할에 대한 API 토큰을 가져왔고 변수로 할당했습니다.
      TOKEN='<your_API_token>'
    • 토큰을 사용하여 CCI 서버에 로그인했습니다.
    명령줄 인터페이스를 사용하여 CCI 작업 수행 준비의 내용을 참조하십시오.

감독자 네임스페이스 생성

이 예에서는 이름이 ns-for-devops-example인 감독자 네임스페이스를 생성하는 방법을 보여줍니다.

kubectl 명령을 사용하여 다음 리소스에 대한 정보를 수집합니다.
  • 프로젝트
  • 지역 바인딩
  • 감독자 네임스페이스 클래스 바인딩
그런 다음, YAML 파일에 메타데이터 및 규격을 추가하여 감독자 네임스페이스를 생성합니다.
  1. 기본 컨텍스트를 CCI로 설정합니다.
    kubectl config use-context cci
  2. 사용 가능한 프로젝트를 나열합니다.
    kubectl get projects
    현재 사용자가 속한 프로젝트가 결과에 나열됩니다.
    NAME          SHARED RESOURCES
    cci-document   true
  3. cci-document의 지역을 나열합니다.
    kubectl get regionbinding -n cci-document
    프로젝트의 모든 지역이 결과에 표시됩니다.
    NAME        AGE
    us-docs-1   2d13h
  4. cci-document의 감독자 네임스페이스 클래스를 나열합니다.
    kubectl get supervisornamespaceclassbinding -n cci-document
    프로젝트의 모든 감독자 네임스페이스 클래스가 결과에 표시됩니다.
    NAME         AGE
    docs-class   2d13h
  5. 생성하려는 감독자 네임스페이스에 대한 YAML 파일을 생성합니다. 다음 예에서는 다음 사항을 사용하여 네임스페이스를 생성합니다.
    • 프로젝트의 경우 cci-document
    • 지역의 경우 us-docs-1
    • 네임스페이스 클래스의 경우 docs-class
    apiVersion: infrastructure.cci.vmware.com/v1alpha1
    kind: SupervisorNamespace
    metadata:
      name: ns-for-devops-example
      namespace: cci-document
    spec:
      description: Create_Namespace_example
      regionName: us-docs-1
      className: docs-class
  6. YAML 파일을 입력으로 사용하여 감독자 네임스페이스를 생성합니다. 이 예에서 YAML 파일은 kubectl 애플리케이션과 동일한 디렉토리에 있습니다.
    kubectl create -f Create_Supervisor_Namespace.YAML
  7. cci-document에서 감독자 네임스페이스의 상태를 확인합니다.
    kubectl describe supervisornamespace ns-for-devops-example -n cci-document
    결과에 Status: TrueType: Ready가 표시되면 감독자 네임스페이스를 사용할 준비가 된 것입니다(UI에 표시됨).
    • Automation Service Broker의 경우 사용 > 감독자 네임스페이스로 이동합니다.
    • Automation Assembler의 경우 인프라 > 리소스 > 감독자로 이동합니다.
    Name:         ns-for-devops-example
    Namespace:    cci-document
    Labels:       <none>
    Annotations:  infrastructure.cci.vmware.com/wcp-address: 192.168.0.2
    API Version:  infrastructure.cci.vmware.com/v1alpha1
    Kind:         SupervisorNamespace
    Metadata:
      Creation Timestamp:  2023-07-31T17:30:49Z
      UID:                 b2f65844-d545-4a5f-976d-381e079275b1
    Spec:
      Class Name:  docs-class
      Class Parameters:
      Description:  Create_Namespace_example
      Region Name:  us-docs-1
    Status:
      Conditions:
        Last Transition Time:  2023-07-31T17:30:50Z
        Status:                True
        Type:                  Ready
      Phase:                   Created
    Events:                    <none>
  8. 감독자 네임스페이스를 삭제하려면 네임스페이스의 이름과 프로젝트의 이름을 제공하고 --force 플래그를 포함합니다.
    kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force

감독자 네임스페이스에 VM 추가

이 예에서는 이름이 VM-for-devops-example인 VM을 생성하는 방법을 보여줍니다.

kubectl 명령을 사용하여 다음 리소스에 대한 정보를 수집합니다.
  • 가상 시스템 클래스
  • 가상 시스템 이미지
  • 스토리지 클래스
그런 다음 YAML 파일에 리소스 규격을 추가하여 VM을 생성합니다.
  1. CCI 서버에 다시 로그인하고 응답에 새로 생성된 감독자 네임스페이스가 표시되는지 확인합니다.
    kubectl cci login --server api.mgmt.cloud.vmware.com --token $TOKEN
    Logging into api.mgmt.cloud.vmware.com
    Getting supervisor namespaces
    Successfully logged into api.mgmt.cloud.vmware.com
    Created kubeconfig contexts:
             cci
             cci:cci-document:ns-7lan
             cci:cci-document:ns-for-devops-example
             cci:supervisor:gp-namespace
  2. 모든 명령에서 컨텍스트와 함께 네임스페이스를 지정할 필요가 없도록 기본 컨텍스트를 설정합니다.
    kubectl config use-context cci:cci-document:ns-for-devops-example
    결과는 컨텍스트가 전환되었음을 확인하며 모든 후속 명령은 cci:cci-document:ns-for-devops-example 컨텍스트에 있게 됩니다.
    Switched to context "cci:cci-document:ns-for-devops-example".
  3. 사용 가능한 가상 시스템 클래스를 나열합니다.
    kubectl get virtualmachineclassess
    결과에서 가상 시스템 클래스 중 하나를 선택합니다.
    NAME                  CPU   MEMORY   AGE
    best-effort-2xlarge   8     64Gi     2d15h
    best-effort-4xlarge   16    128Gi    2d15h
    best-effort-8xlarge   32    128Gi    2d15h
    best-effort-large     4     16Gi     2d15h
    best-effort-medium    2     8Gi      2d15h
    best-effort-small     2     4Gi      2d15h
    best-effort-xlarge    4     32Gi     2d15h
    best-effort-xsmall    2     2Gi      2d15h
    guaranteed-2xlarge    8     64Gi     2d15h
    guaranteed-4xlarge    16    128Gi    2d15h
    guaranteed-8xlarge    32    128Gi    2d15h
    guaranteed-large      4     16Gi     2d15h
    guaranteed-medium     2     8Gi      2d15h
    guaranteed-small      2     4Gi      2d15h
    guaranteed-xlarge     4     32Gi     2d15h
    guaranteed-xsmall     2     2Gi      2d15h
  4. 사용 가능한 가상 시스템 이미지를 나열합니다.
    kubectl get virtualmachineimages
    사용하려는 이미지를 선택합니다.
    NAME                    PROVIDER-NAME              CONTENT-LIBRARY-NAME   IMAGE-NAME                                              VERSION         OS-TYPE                 FORMAT   AGE
    vmi-02549e2ab956621e9   clitem-02549e2ab956621e9   cl-c7a511c539dddc1f1   groovy-20210415.1-with-ovt-11.3                                         ubuntu64Guest           OVF      143m
    vmi-041ff2740d6aee34a   clitem-041ff2740d6aee34a   cl-c7a511c539dddc1f1   ubuntu-20-1633387172196-v1.1                                            ubuntu64Guest           OVF      143m
    vmi-1cc3c618d0ead1129   clitem-1cc3c618d0ead1129   cl-c7a511c539dddc1f1   jammy-server-cloudimg-amd64                                             ubuntu64Guest           OVF      143m
    
  5. 사용 가능한 스토리지 정책을 나열하려면 명령을 사용하여 리소스 할당량을 구합니다.
    kubectl get resourcequota
    요청의 첫 번째 섹션은 스토리지 정책입니다.
    NAME                                 AGE     REQUEST                                                                                         LIMIT
    ns-for-devops-example-storagequota   6m22s   wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
    
  6. 감독자 네임스페이스에 추가하려는 VM에 대한 YAML 파일을 생성합니다. 다음 예에서는 다음 사항을 사용하여 VM을 생성합니다.
    • 네임스페이스의 경우 ns-for-devops-example
    • VM 이미지의 경우 vmi-02549e2ab956621e9
    • VM 클래스의 경우 guaranteed-small
    • 스토리지 정책의 경우 wcpglobal-storage-profile
    apiVersion: vmoperator.vmware.com/v1alpha1
    kind: VirtualMachine
    metadata:
      name: VM-for-devops-example
      namespace: ns-for-devops-example
    spec:
      imageName: vmi-02549e2ab956621e9
      className: guaranteed-small  
      storageClass: wcpglobal-storage-profile  
      powerState: poweredOn
  7. YAML 파일을 입력으로 사용하여 감독자 네임스페이스에 VM을 생성합니다. 이 예에서 YAML 파일은 kubectl 애플리케이션과 동일한 디렉토리에 있습니다.
    kubectl create -f Create_VM.YAML
  8. ns-for-devops-example에서 VM 생성 상태를 확인합니다.
    kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
    결과에 Type: GuestCustomization, Type: VirtualMachinePrereqReadyType: VirtualMachineTools 에 대해 3개의 Status: True가 표시되면 감독자 네임스페이스에 VM이 성공적으로 생성된 것입니다.
    Name:         vm-for-devops-example
    Namespace:    ns-for-devops-example
    Labels:       topology.kubernetes.io/zone=domain-c50
    Annotations:  virtualmachine.vmoperator.vmware.com/first-boot-done: true
    API Version:  vmoperator.vmware.com/v1alpha1
    Kind:         VirtualMachine
    Metadata:
      Creation Timestamp:  2023-08-15T00:30:55Z
      Finalizers:
        virtualmachine.vmoperator.vmware.com
      Generation:        1
      Resource Version:  19196052
      UID:               f2460f3c-225b-460b-8d11-95a1bdaebe72
    Spec:
      Class Name:  guaranteed-small
      Image Name:  vmi-02549e2ab956621e9
      Network Interfaces:
        Network Type:  vsphere-distributed
      Power Off Mode:  hard
      Power State:     poweredOn
      Restart Mode:    hard
      Storage Class:   wcpglobal-storage-profile
      Suspend Mode:    hard
    Status:
      Bios UUID:              421eb2b5-04ef-f3e1-8d17-f8e73a2576b2
      Change Block Tracking:  false
      Conditions:
        Last Transition Time:  2023-08-15T00:32:30Z
        Status:                True
        Type:                  GuestCustomization
        Last Transition Time:  2023-08-15T00:31:55Z
        Status:                True
        Type:                  VirtualMachinePrereqReady
        Last Transition Time:  2023-08-15T00:32:20Z
        Status:                True
        Type:                  VirtualMachineTools
      Host:                    10.186.234.28
      Instance UUID:           501ea6c0-c0cb-b03c-08e6-324642f923d1
      Network Interfaces:
        Connected:  true
        Ip Addresses:
          192.168.128.11/16
          fe80::250:56ff:fe9e:ff48/64
        Mac Address:  00:50:56:9e:ff:48
      Phase:          Created
      Power State:    poweredOn
      Unique ID:      vm-104
      Vm Ip:          192.168.128.11
      Zone:           domain-c50
    Events:           <none>
  9. VM을 삭제하려면 VM의 이름과 네임스페이스의 이름을 제공하고 --force 플래그를 포함합니다.
    kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force