DevOps 사용자는 CCI kubectl 명령을 사용하여 감독자 네임스페이스를 생성하고 네임스페이스 내에 인프라 리소스를 생성할 수 있습니다. 다음 예에서는 감독자 네임스페이스를 생성하고 네임스페이스에 VM을 추가하는 방법을 보여줍니다.
사전 요구 사항
- vSphere 관리자가 vSphere+에서 개발자 환경을 활성화하여 사용자에게 VMware Aria Automation에 대한 액세스 권한을 부여했는지 확인합니다. 신규 Aria Automation 사용자를 위한 클라우드 소비 인터페이스에 대한 액세스 구성의 내용을 참조하십시오.
- VMware Aria Automation 관리자가 클라우드 소비 인터페이스 인프라를 설정했는지 확인합니다. kubectl을 사용하여 클라우드 소비 인터페이스 인프라 설정의 내용을 참조하십시오.
- Automation Service Broker에서 프로젝트 중 하나 이상의 멤버인지 확인합니다.
- VMware Aria Automation에서 Automation Service Broker 사용자 서비스 역할 이상이 있는 조직 멤버인지 확인합니다.
- 다음 사항을 확인합니다.
- CCI kubectl 플러그인을 다운로드했습니다.
- 사용자 서비스 역할에 대한 API 토큰을 가져왔고 변수로 할당했습니다.
TOKEN='<your_API_token>'
- 토큰을 사용하여 CCI 서버에 로그인했습니다.
감독자 네임스페이스 생성
이 예에서는 이름이 ns-for-devops-example인 감독자 네임스페이스를 생성하는 방법을 보여줍니다.
kubectl 명령을 사용하여 다음 리소스에 대한 정보를 수집합니다.
- 프로젝트
- 지역 바인딩
- 감독자 네임스페이스 클래스 바인딩
- 기본 컨텍스트를 CCI로 설정합니다.
kubectl config use-context cci
- 사용 가능한 프로젝트를 나열합니다.
kubectl get projects
현재 사용자가 속한 프로젝트가 결과에 나열됩니다.NAME SHARED RESOURCES cci-document true
- cci-document의 지역을 나열합니다.
kubectl get regionbinding -n cci-document
프로젝트의 모든 지역이 결과에 표시됩니다.NAME AGE us-docs-1 2d13h
- cci-document의 감독자 네임스페이스 클래스를 나열합니다.
kubectl get supervisornamespaceclassbinding -n cci-document
프로젝트의 모든 감독자 네임스페이스 클래스가 결과에 표시됩니다.NAME AGE docs-class 2d13h
- 생성하려는 감독자 네임스페이스에 대한 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
- YAML 파일을 입력으로 사용하여 감독자 네임스페이스를 생성합니다. 이 예에서 YAML 파일은 kubectl 애플리케이션과 동일한 디렉토리에 있습니다.
kubectl create -f Create_Supervisor_Namespace.YAML
- cci-document에서 감독자 네임스페이스의 상태를 확인합니다.
kubectl describe supervisornamespace ns-for-devops-example -n cci-document
결과에Status: True
및Type: 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>
- 감독자 네임스페이스를 삭제하려면 네임스페이스의 이름과 프로젝트의 이름을 제공하고 --force 플래그를 포함합니다.
kubectl delete supervisornamespace ns-for-devops-example -n cci-document --force
감독자 네임스페이스에 VM 추가
이 예에서는 이름이 VM-for-devops-example인 VM을 생성하는 방법을 보여줍니다.
kubectl 명령을 사용하여 다음 리소스에 대한 정보를 수집합니다.
- 가상 시스템 클래스
- 가상 시스템 이미지
- 스토리지 클래스
- 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
- 모든 명령에서 컨텍스트와 함께 네임스페이스를 지정할 필요가 없도록 기본 컨텍스트를 설정합니다.
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".
- 사용 가능한 가상 시스템 클래스를 나열합니다.
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
- 사용 가능한 가상 시스템 이미지를 나열합니다.
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
- 사용 가능한 스토리지 정책을 나열하려면 명령을 사용하여 리소스 할당량을 구합니다.
kubectl get resourcequota
요청의 첫 번째 섹션은 스토리지 정책입니다.NAME AGE REQUEST LIMIT ns-for-devops-example-storagequota 6m22s wcpglobal-storage-profile.storageclass.storage.k8s.io/requests.storage: 0/9223372036854775807
- 감독자 네임스페이스에 추가하려는 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
- YAML 파일을 입력으로 사용하여 감독자 네임스페이스에 VM을 생성합니다. 이 예에서 YAML 파일은 kubectl 애플리케이션과 동일한 디렉토리에 있습니다.
kubectl create -f Create_VM.YAML
- ns-for-devops-example에서 VM 생성 상태를 확인합니다.
kubectl describe virtualmachine vm-for-devops-example -n ns-for-devops-example
결과에Type: GuestCustomization
,Type: VirtualMachinePrereqReady
및Type: 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>
- VM을 삭제하려면 VM의 이름과 네임스페이스의 이름을 제공하고 --force 플래그를 포함합니다.
kubectl delete virtualmachine vm-for-devops-example -n ns-for-devops-example --force