vSphere 관리자는 감독자 네임스페이스를 생성하고, CPU, 메모리 및 스토리지 제한을 네임스페이스에 설정하고, 사용 권한을 할당하고, 클러스터에서 네임스페이스 서비스를 템플릿으로 활성화할 수 있습니다. 그러면 DevOps 엔지니어는 셀프 서비스 방식으로 감독자 네임스페이스를 생성하고 그 안에 워크로드를 배포할 수 있습니다.

셀프 서비스 네임스페이스 생성 및 구성 워크플로

vSphere 관리자는 감독자 네임스페이스를 생성하고, CPU, 메모리 및 스토리지 제한을 네임스페이스에 설정하고, 사용 권한을 할당하고, 클러스터에서 네임스페이스 서비스를 템플릿으로 프로비저닝 또는 활성화할 수 있습니다.
그림 1. 셀프 서비스 네임스페이스 템플릿 프로비저닝 워크플로
""
DevOps 엔지니어는 셀프 서비스 방식으로 감독자 네임스페이스를 생성하고 그 안에 워크로드를 배포할 수 있습니다. 다른 DevOps 엔지니어와 공유하거나 더 이상 필요하지 않으면 삭제할 수 있습니다. 네임스페이스를 다른 DevOps 엔지니어와 공유하려면 vSphere 관리자에게 문의하십시오.
그림 2. 셀프 서비스 네임스페이스 생성 워크플로
""

셀프 서비스 네임스페이스 템플릿 생성 및 구성

vSphere 관리자는 감독자 네임스페이스를 셀프 서비스 네임스페이스 템플릿으로 생성하고 구성할 수 있습니다. 그런 다음 DevOps 엔지니어는 kubectl 명령줄을 사용하여 감독자 네임스페이스를 생성하고 삭제할 수 있습니다.

사전 요구 사항

vSphere IaaS control plane으로 클러스터를 구성합니다.

프로시저

  1. vSphere Client에서 감독자로 이동합니다.
  2. 구성 탭을 클릭하고 감독자에서 일반을 선택합니다.
  3. 네임스페이스 서비스를 선택합니다.
  4. 상태 스위치를 전환하여 기능을 사용하도록 설정합니다.
    네임스페이스 템플릿 생성 페이지가 나타납니다.
  5. 구성 창에서 네임스페이스에 대한 리소스를 구성합니다.
    옵션 설명
    CPU 네임스페이스에 대해 예약할 CPU 리소스 양입니다.
    메모리 네임스페이스에 대해 예약할 메모리 양입니다.
    스토리지 네임스페이스에 대해 예약할 총 스토리지 공간의 양입니다.
    스토리지 정책 영구 스토리지가 필요한 워크로드에 사용할 스토리지 정책입니다.
    네트워크 네트워크 드롭다운 메뉴에서 네임스페이스에 대한 네트워크를 선택합니다.
    VM 클래스 독립형 VM을 배포하기 위한 VM 클래스입니다.
    컨텐츠 라이브러리 VM 배포에 사용할 VM 이미지가 있는 컨텐츠 라이브러리입니다.
  6. 다음을 클릭합니다.
  7. 사용 권한 창에서 DevOps 엔지니어 및 그룹을 추가하여 이들이 템플릿을 사용하여 네임스페이스를 생성할 수 있도록 합니다.
    ID 소스와 사용자 또는 그룹을 선택하고 다음을 클릭합니다.
  8. 검토 및 확인 창에 구성한 속성이 표시됩니다.
    속성을 검토하고 완료를 클릭합니다.

결과

네임스페이스 템플릿이 구성되었고 활성 상태입니다. 관리자 vSphere 템플릿을 편집할 수 있습니다. DevOps 엔지니어는 템플릿을 사용하여 네임스페이스를 생성할 수 있습니다.

셀프 서비스 네임스페이스 비활성화

vSphere 관리자는 클러스터에서 셀프 서비스 네임스페이스를 비활성화할 수 있습니다.

셀프 서비스 네임스페이스 템플릿을 비활성화하면 DevOps 엔지니어가 템플릿을 사용하여 클러스터에 새 네임스페이스를 생성할 수 없습니다. 이미 생성한 네임스페이스를 삭제할 수 있습니다.

프로시저

  1. vSphere Client에서 감독자로 이동합니다.
  2. 구성 탭을 클릭하고 감독자에서 일반을 선택합니다.
  3. 네임스페이스 서비스 창에서 상태 스위치를 전환하여 템플릿을 비활성화합니다.
  4. 템플릿을 다시 활성화하려면 상태 스위치를 전환합니다.
    다른 셀프 서비스 네임스페이스를 생성하거나 기존 네임스페이스를 사용할 수 있습니다.

셀프 서비스 네임스페이스 생성

DevOps 엔지니어는 셀프 서비스 네임스페이스를 생성하고 그 안의 워크로드를 실행할 수 있습니다. 네임스페이스를 생성한 후에는 다른 DevOps 엔지니어와 공유하거나 더 이상 필요하지 않으면 삭제할 수 있습니다.

사전 요구 사항

  • vSphere 관리자가 클러스터에서 셀프 서비스 네임스페이스 템플릿을 생성하고 활성화했는지 확인합니다. 셀프 서비스 네임스페이스 템플릿 생성 및 구성의 내용을 참조하십시오.
  • 셀프 서비스 네임스페이스 템플릿의 사용 권한 목록에 개별적으로 또는 그룹의 멤버로 추가되었는지 확인합니다.
  • 감독자 제어부의 IP 주소를 가져옵니다.

프로시저

  1. kubectl용 vSphere 플러그인을 사용하여 감독자로 인증합니다. vCenter Single Sign-On 사용자로 감독자에 연결을 참조하십시오.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  2. 컨텍스트를 감독자로 전환합니다.
    kubectl config use-context SUPERVISOR-CLUSTER-IP
  3. 클러스터에 셀프 서비스 네임스페이스를 생성합니다.
    kubectl create namespace NAMESPACE NAME
    kubectl create namespace test-ns
    참고: 소유자 권한은 vSphere IaaS control plane를 사용하도록 설정하고 클러스터를 업그레이드한 후에 DevOps 엔지니어가 사용할 수 있습니다. 클러스터가 아닌 vCenter Server만 업그레이드하는 경우 Devops 엔지니어는 네임스페이스에 대한 편집 권한만 갖게 됩니다.
    생성한 네임스페이스가 클러스터에 표시됩니다. 네임스페이스를 다른 DevOps 엔지니어와 공유하려면 vSphere 관리자에게 문의하십시오.

주석 및 레이블이 있는 셀프 서비스 네임스페이스 생성

DevOps 엔지니어는 kubectl 명령줄을 사용하여 주석 및 레이블이 있는 셀프 서비스 네임스페이스를 생성할 수 있습니다.

DevOps 엔지니어는 사용자 정의 주석 및 레이블이 있는 YAML 매니페스트를 사용할 수 있습니다.

프로시저

  1. 감독자에 로그인합니다.
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 주석 및 레이블이 있는 네임스페이스 YAML 매니페스트 파일을 생성합니다.
    kubectl create -f ns-create.yaml
    예를 들어 다음과 같은 ns-create.yaml 파일을 생성합니다.
    apiVersion: v1
    kind: Namespace
    metadata:
      name: test-ns-yaml
      labels:
        my-label: "my-label-val-yaml"
      annotations:
        my-ann-yaml: "my-ann-val-yaml"
  3. YAML 매니페스트를 적용합니다.
    kubectl create -f ns-create.yaml

    또는

    kubectl apply -f ns-create.yaml
  4. 변경 내용을 확인하기 위해 생성한 네임스페이스에 대해 설명합니다.
    root@localhost [ /tmp ]# kubectl describe ns test-ns-yaml
    Name:         test-ns-yaml
    Labels:       my-label=my-label-val-yaml
                  vSphereClusterID=domain-c50
    Annotations:  my-ann-yaml: my-ann-val-yaml
                  vmware-system-namespace-owner-count: 1
                  vmware-system-resource-pool: resgroup-171
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v172
    Status:       Active
     
    Resource Quotas
     Name:             test-ns-yaml
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     Name:                                                                           test-ns-yaml-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
    No LimitRange resource.

kubectl annotate 및 kubectl label을 사용하여 셀프 서비스 네임스페이스 업데이트

DevOps 엔지니어는 kubectl annotatekubectl label 명령을 사용하여 셀프 서비스 네임스페이스 주석 및 레이블을 업데이트하거나 삭제할 수 있습니다.

사전 요구 사항

업데이트하려는 네임스페이스에 대한 소유자 권한이 있는지 확인합니다.

프로시저

  1. 감독자에 로그인합니다.
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 업데이트할 네임스페이스에 대해 설명합니다.
    root@localhost [ /tmp ]# kubectl describe ns testns
    Name:         testns
    Labels:       my-label=test-label-2
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-2
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
  3. kubectl annotate 명령을 사용하여 주석을 업데이트합니다.
    예를 들어 kubectl annotate --overwrite ns testns my-ann="test-ann-3"입니다.
    주석을 삭제하려면 kubectl annotate --overwrite ns testns my-ann- 명령을 실행합니다.
  4. kubectl label 명령을 사용하여 레이블을 업데이트합니다.
    예를 들어 kubectl label --overwrite ns testns my-label="test-label-3"입니다.
    레이블을 삭제하려면 kubectl label --overwrite ns testns my-label- 명령을 실행합니다.
  5. 업데이트를 확인할 네임스페이스에 대해 설명합니다.
    root@localhost [ /tmp ]# kubectl describe ns testns
    Name:         testns
    Labels:       my-label=test-label-3
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-3
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
     
    No LimitRange resource.

kubectl edit을 사용하여 셀프 서비스 네임스페이스 업데이트

DevOps 엔지니어는 kubectl edit 명령을 사용하여 셀프 서비스 네임스페이스를 업데이트할 수 있습니다.

사전 요구 사항

업데이트하려는 네임스페이스에 대한 소유자 권한이 있는지 확인합니다.

프로시저

  1. 감독자에 로그인합니다.
    kubectl vsphere login --server IP-ADDRESS-SUPERVISOR-CLUSTER --vsphere-username VCENTER-SSO-USERNAME
  2. 업데이트할 네임스페이스에 대해 설명합니다.
    kubectl describe ns testns-1
    Name:         testns
    Labels:       vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann-2
                  vmware-system-namespace-owner-count: 2
                  vmware-system-resource-pool: resgroup-153
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v154
    Status:       Active
     
     
    Resource Quotas
     Name:             testns-1
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-1-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
  3. kubectl edit 명령을 사용하여 네임스페이스를 편집합니다.
    예를 들어 kubectl edit ns testns-1입니다.
    kubectl edit 명령은 KUBE_EDITOR 또는 EDITOR 환경 변수로 정의된 네임스페이스 매니페스트를 텍스트 편집기에서 엽니다.
  4. 레이블을 업데이트합니다.
    예를 들어 my-label=test-label입니다.
  5. 주석을 업데이트합니다.
    예를 들어 my-ann: test-ann입니다.
  6. 업데이트를 확인할 네임스페이스에 대해 설명합니다.
    root@localhost [ /tmp ]# kubectl describe ns testns-1
    Name:         testns-1
    Labels:       my-label=test-label
                  vSphereClusterID=domain-c50
    Annotations:  my-ann: test-ann
                  vmware-system-namespace-owner-count: 1
                  vmware-system-resource-pool: resgroup-173
                  vmware-system-resource-pool-cpu-limit: 0.4770
                  vmware-system-resource-pool-memory-limit: 2000Mi
                  vmware-system-self-service-namespace: true
                  vmware-system-vm-folder: group-v174
    Status:       Active
     
     
    Resource Quotas
     Name:             testns-1
     Resource          Used  Hard
     --------          ---   ---
     requests.storage  0     5000Mi
     
     
     Name:                                                                           testns-1-storagequota
     Resource                                                                        Used  Hard
     --------                                                                        ---   ---
     namespace-service-storage-profile.storageclass.storage.k8s.io/requests.storage  0     9223372036854775807
     
     
    No LimitRange resource.
    

셀프 서비스 네임스페이스 삭제

DevOps 엔지니어는 사용자가 생성한 셀프 서비스 네임스페이스를 삭제할 수 있습니다.

사전 요구 사항

kubectl용 vSphere 플러그인을 사용하여 셀프 서비스 네임스페이스를 생성했는지 확인합니다.

프로시저

  1. kubectl용 vSphere 플러그인을 사용하여 감독자로 인증합니다. vCenter Single Sign-On 사용자로 감독자에 연결을 참조하십시오.
  2. 클러스터에서 셀프 서비스 네임스페이스를 삭제합니다.
    kubectl delete namespace NAMESPACE NAME
    예:
    kubectl delete namespace test-ns