관리자와 개발자는 CCI Kubernetes API 서버가 표시하는 CCI(클라우드 소비 인터페이스) API 리소스에 대해 작업을 수행할 수 있습니다.

리소스 종류에 따라 관리자와 개발자는 API를 사용하여 다음 작업을 수행할 수 있습니다.

리소스 종류 관리자 작업(동사) 개발자 작업(동사)
CloudAccount 가져오기, 나열
Supervisor 가져오기, 패치 적용, 나열
Project 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 가져오기, 나열
ProjectRole 가져오기, 나열 가져오기, 나열
ProjectRoleBinding 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 가져오기, 나열
Region 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 가져오기, 나열
RegionBinding 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 가져오기, 나열
RegionBindingConfig 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열
SupervisorNamespaceClass 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 가져오기, 나열
SupervisorNamespaceClassConfig 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열
SupervisorNamespaceClassBinding 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 가져오기, 나열
SupervisorNamespace 생성, 가져오기, 삭제, 나열 생성, 가져오기, 삭제, 나열
다음 예는 CLI 호출 및 응답을 보여줍니다. CLI를 사용하려면 다음이 필요합니다.
  • CCI kubectl 플러그인을 다운로드했습니다.
  • API 토큰을 획득했습니다.
  • CCI 서버에 로그인했습니다.
명령줄 인터페이스를 사용하여 CCI 작업 수행 준비 항목을 참조하십시오.

프로젝트 및 사용자

프로젝트
관리자가 프로젝트를 생성하여 사용자를 그룹화하고 Automation Assembler의 클라우드 템플릿과 같은 컨텐츠 소스 또는 Automation Service Broker의 카탈로그 항목에 대한 액세스를 설정합니다.
Project에는 다음 속성이 포함됩니다.
  • metadata.name 프로젝트 이름입니다.
  • spec.description 선택적 설명입니다.
  • spec.sharedResources true이면 프로젝트는 감독자 네임스페이스를 프로젝트의 다른 사용자와 공유합니다. false이면 프로젝트는 네임스페이스 액세스를 관리자 또는 네임스페이스를 생성한 사용자로 제한합니다.
프로젝트 예제 입력을 생성합니다.
apiVersion: project.cci.vmware.com/v1alpha1
kind: Project
metadata:
  name: demo-project
spec:
  description: This is a demo project
  sharedResources: true
프로젝트 역할
프로젝트 역할은 프로젝트의 사용자에게 할당할 수 있는 사용 가능한 관리자, 보기 또는 편집 역할을 반영합니다.
프로젝트 역할 설명
admin 네임스페이스를 수정하고 삭제할 수 있습니다.
보기 네임스페이스에 대한 읽기 전용 역할입니다.
편집 네임스페이스를 수정할 수 있습니다.
프로젝트 역할은 읽기 전용이며 프로젝트 역할 바인딩을 생성할 때 사용 가능한 역할을 제공합니다.

프로젝트 역할 예제 입력을 읽습니다.

apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRole
metadata:
  name: admin
spec:
  description: project administrator
프로젝트 역할 바인딩
프로젝트 역할 바인딩은 프로젝트의 사용자 또는 그룹 역할에 멤버 자격을 할당하는 데 사용됩니다.
ProjectRoleBinding에는 다음 속성이 포함됩니다.
  • metadata.name 프로젝트 역할 바인딩의 이름이며 주체 유형(사용자 또는 그룹) 및 주체 이름을 반영하기 위한 특정 형식이 필요합니다.
    cci:<user/group>:<subject domain>:<subject name>
  • metadata.namespace 프로젝트 이름을 설명합니다.
  • subjects 사용자 또는 그룹을 설명합니다. 하나의 항목만 허용됩니다.
  • roleRef 역할을 설명합니다.
프로젝트 역할 바인딩 예제 입력을 생성합니다.
apiVersion: authorization.cci.vmware.com/v1alpha1
kind: ProjectRoleBinding
metadata:
  # name must match the subject kind and name
  name: cci:user:vmware.com:hello
  namespace: demo-project
subjects:
  - kind: User  # User / Group
    name: [email protected]
roleRef:
  apiGroup: authorization.cci.vmware.com
  kind: ProjectRole
  name: admin # admin / edit / view

vCenter 및 감독자

이 범주는 인프라를 다루며 해당 기능은 관리자 전용입니다.

클라우드 계정
클라우드 계정은 vSphere+에서 자동으로 생성되거나 관리자가 수동으로 생성하여 vCenter를 등록하고 감독자에서 데이터 센터를 사용하도록 설정합니다.
클라우드 계정 예제 출력을 생성합니다.
Name:         cci-ui-volume-service
Namespace:    cci-config
Labels:       <none>
Annotations:  infrastructure.cci.vmware.com/data-collection-status: FINISHED
              infrastructure.cci.vmware.com/last-data-collection-timestamp: 2022-10-24T22:06:08.603Z
API Version:  infrastructure.cci.vmware.com/v1alpha1
Kind:         CloudAccount
Metadata:
  Creation Timestamp:  2022-10-17T12:18:28Z
  UID:                 2163e7cf-f698-3f1f-afca-f3daa8c730fa
Spec:
  Address:           127.193.29.114
  Cloud Proxy Name:  2d164fed-bbf3-47cc-8e6b-5226c5277ee4
Events:              <none>
감독자
vCenter 데이터 수집이 완료된 후 시스템에서 감독자가 생성됩니다. 관리자가 배치에 대한 기능 레이블로 감독자를 업데이트하고 지역에 할당할 수 있습니다.
  • metadata.labels 관리자가 감독자 기능을 반영하는 키-값 설정으로 레이블을 정의합니다. 레이블은 네임스페이스를 생성할 때 기능을 기반으로 감독자를 필터링하는 데 사용됩니다.
  • spec.regionNames 감독자를 지역에 할당할 수 있도록 관리자가 지역 이름을 정의합니다. 감독자는 단일 지역에만 할당할 수 있으며 기본적으로 지역에 할당되지 않습니다.
감독자 예제 출력을 업데이트합니다.
Name:         bugbash-vc:domain-c8
Namespace:    cci-config
Labels:       environment=bug-bash-9
Annotations:  infrastructure.cci.vmware.com/cloud-account-id: 33a0b2d0-91c8-4629-b04a-65448494d54e
API Version:  infrastructure.cci.vmware.com/v1alpha1
Kind:         Supervisor
Metadata:
  Creation Timestamp:  2022-09-28T04:22:38Z
  UID:                 fbd10d08-bc56-4ec2-93f8-693a7a4b2003
Spec:
  Cloud Account Name:  bugbash-vc
  Display Name:        wcp-test-dc-cluster
  External Id:         domain-c8
  Region Names:
    us-demo1
Status:
  Power State:  On
Events:         <none>

토폴로지

지역
관리자가 하나 이상의 감독자에 대한 그룹화 메커니즘으로 지역을 생성합니다. 지역은 지리적 위치 또는 인프라와 같은 다양한 매개 변수를 기반으로 할 수 있으며 여러 vCenter의 감독자를 포함할 수 있습니다.
지역 생성 예시 입력입니다.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: Region
metadata:
  name: us-west1
spec:
  description: The us-west1 region
지역 바인딩
관리자는 지역 바인딩을 생성하여 프로젝트와 지역을 연결합니다.

프로젝트의 사용자가 감독자 네임스페이스에 생성하려면 RegionBindingRegionBindingConfig가 모두 존재해야 합니다.

RegionBinding에는 다음 속성이 포함됩니다.
  • metadata.name 지역 이름이며 기존 지역과 일치해야 합니다.
  • metadata.namespace 프로젝트 이름입니다.
지역 바인딩 생성 예시 입력입니다.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBinding
metadata:
  name: us-west1
  namespace: demo-project
지역 바인딩 구성
프로젝트에서 지역별로 감독자 배치 논리를 제어하기 위해 관리자가 RegionBindingConfig를 정의합니다. RegionBindingConfig를 정의하면 관리자가 감독자 레이블 키-값 쌍을 사용하여 특정 감독자의 프로젝트 연결을 더욱 구체화할 수 있습니다. 예를 들어 관리자가 key: environment 규격을 사용하여 value: testing으로 테스트하도록 지정된 감독자를 선택할 수 있습니다.
RegionBindingConfig에는 다음 속성이 포함됩니다.
  • metadata.name 지역 이름이며 기존 지역과 일치해야 합니다.
  • metadata.namespace 프로젝트 이름입니다.
  • spec.supervisorSelector 네임스페이스를 생성하는 데 사용할 수 있는 프로젝트의 감독자를 선택합니다. 올바른 감독자를 선택하기 위해 matchExpressions는 감독자 레이블 키, 매칭 연산자 및 매칭 값을 정의합니다.
    spec.supervisorSelector 표현식 매칭은 다음 연산자를 사용합니다.
    • operator: In 키-값이 감독자 레이블 키-값과 일치하는지 여부를 지역 바인딩이 테스트합니다. matchExpressions는 어레이이지만 이 어레이는 현재 단일 항목 값으로 제한됩니다.
    • operator: NotIn 키-값이 감독자 레이블 키-값과 일치하지 않는지 여부를 지역 바인딩이 테스트합니다. matchExpressions는 어레이이지만 이 어레이는 현재 단일 항목 값으로 제한됩니다.
    • operator: Exists 레이블 키가 포함된 감독자와 일치하는 항목을 지역 바인딩이 검색합니다. 값은 사용되지 않습니다.
    • operator: DoesNotExist 레이블 키가 포함되지 않은 감독자를 지역 바인딩이 검색합니다. 값은 사용되지 않습니다.
지역 바인딩 구성 생성 예시 입력입니다.
apiVersion: topology.cci.vmware.com/v1alpha1
kind: RegionBindingConfig
metadata:
  name: us-west1
  namespace: demo-project
spec:
  supervisorSelector:
    matchExpressions:
      - key: environment
        operator: In
        values:
          - testing
      - key: storage
        operator: Exists
      - key: storage
        operator: NotIn
        values:
          - encrypted

감독자 네임스페이스 클래스

감독자 네임스페이스 클래스
SupervisorNamespaceClass는 생성하는 동안 네임스페이스 설정을 사용자 지정하는 데 사용할 수 있는 선택적 매개 변수 및 네임스페이스 템플릿을 정의합니다.
기본 필드는 사용자가 네임스페이스 생성 시 매개 변수 값을 제공하지 않는 경우 사용되는 매개 변수 값을 지정합니다. 예를 들어 default: false이면 false가 매개 변수 값입니다.
참고: 사용자가 매개 변수 값이 일부 있거나 없는 네임스페이스를 생성할 수 있도록 하려면 모든 매개 변수에 기본 필드와 값이 포함되어야 합니다.
매개 변수 유형 정의:
매개 변수 유형 속성
부울
  • default 기본 부울 값입니다.
  • enum 허용되는 부울 값 목록입니다. 매개 변수가 true 또는 false 중 하나의 값만 갖도록 하는 데 사용할 수 있습니다.
정수
  • minimum 최소 정수 값입니다.
  • maximum 최대 정수 값입니다.
  • default 기본 정수 값입니다.
  • enum 허용되는 정수 값 목록입니다.
String
  • minLength 최소 문자열 길이입니다.
  • maxLength 최대 문자열 길이입니다.
  • default 사용자가 제공하지 않은 경우 기본 문자열 값입니다.
  • pattern 값에 대해 유효성을 검사하는 정규식 패턴입니다.
  • enum 허용되는 문자열 값 목록입니다.
감독자 네임스페이스 클래스 생성 예시 입력입니다.
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClass
metadata:
  name: gold-with-gpu
spec:
  description: Gold with GPU enabled supervisor namespace
  parameters:
    - name: environment
      type: String
      default: testing
      enum:
        - testing
        - staging
        - production  
    - name: fastStorageClass
      type: Boolean
      default: false
    - name: podCountLimit
      type: Integer
      minimum: 100
      maximum: 1000
      default: 500
감독자 네임스페이스 클래스 구성
감독자 네임스페이스 클래스의 구현을 지정하기 위해 관리자가 네임스페이스 설정으로 SupervisorNamespaceClassConfig를 생성합니다. 프로젝트가 감독자 네임스페이스 클래스에 액세스할 수 있도록 하려면 SupervisorNamespaceClassSupervisorNamespaceClassConfig가 모두 존재해야 합니다.
SupervisorNamespaceClassConfig에는 다음 속성이 포함됩니다.
  • metadata.name 감독자 네임스페이스 클래스 이름입니다.
  • metadata.namespace 프로젝트 이름입니다.
  • spec.storageClasses 스토리지 클래스 이름 및 제한(MB)입니다.
  • spec.vmClasses VM 클래스의 이름입니다.
  • spec.contentSource 모두 type: ContentLibrary로 정의된 컨텐츠 라이브러리 이름입니다.
  • spec.limits 제한 이름 및 값입니다. 유효한 제한 값에는 다음이 포함됩니다.
    • config_map_count
    • cpu_limit
    • cpu_limit_default
    • cpu_request_default
    • daemon_set_count
    • deployment_count
    • job_count
    • memory_limit
    • memory_limit_default
    • memory_request_default
    • persistent_volume_claim_count
    • pod_count
    • replica_set_count
    • replication_controller_count
    • secret_count
    • service_count
    • stateful_set_count
    • storage_request_limit
  • spec.supervisorSelector 네임스페이스를 생성하는 데 사용할 수 있는 프로젝트의 감독자입니다. 올바른 감독자를 선택하기 위해 matchExpressions는 레이블 키, 매칭 연산자, 매칭 레이블 값을 정의합니다.

관리자는 사용자가 요청 시간 동안 네임스페이스 설정을 사용자 지정할 수 있도록 네임스페이스 설정 값을 정의할 때 사용할 수 있는 클래스 매개 변수를 표시합니다.

감독자 네임스페이스 클래스 구성 생성 예시 입력입니다.
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClassConfig
metadata:
  name: gold-with-gpu
spec:     
  storageClasses:
    - name: wcp-storage-class
      limit: "100"
    - name: "((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))"
  vmClasses:
    - name: big-vm-class
    - name: small-vm-class
  contentSources:
    - name: global-content-library
      type: ContentLibrary
    - name: "((parameters.environment))-content-library"
      type: ContentLibrary     
  limits:
    - name: cpu_limit
      limit: "1000"
    - name: pod_count
      limit: "((parameters.podCountLimit))"
  supervisorSelector:
    matchExpressions:
      - key: gpu-enabled
        operator: In
        values:
          - true 
이 예시에서는 감독자 네임스페이스 클래스 예시의 매개 변수를 다음과 같이 사용합니다.
  • ((parameters.fastStorageClass ? 'fast-storage-class' : 'standard-storage-class'))는 스토리지 클래스 이름을 지정하기 위한 조건부 검사를 보여줍니다. fastStorageClass는 부울 유형입니다.
    • 사용자가 매개 변수 값을 true로 지정하면 이름은 fast-storage-class입니다.
    • 사용자가 값을 false로 지정하면 이름이 standard-storage-class입니다.
  • ((parameters.podCountLimit))는 포드 수 제한 값을 지정하는 방법을 보여줍니다. podCountLimit는 정수 유형입니다.
    • 사용자가 감독자 네임스페이스 클래스에 정의된 최소값과 최대값인 100~1000 내에 있는 값을 지정하면 해당 값이 포드 수 제한 값입니다.
    • 사용자가 값을 지정하지 않으면 포드 수 제한은 감독자 네임스페이스 클래스에 정의된 기본값인 500입니다.
    • 사용자가 최소값과 최대값을 벗어나는 값을 지정하면 값이 잘못되어서 감독자 네임스페이스 생성이 실패하고 포드 수 제한이 허용되는 값 범위를 벗어났다는 오류가 표시됩니다.
감독자 네임스페이스 클래스 바인딩
감독자 네임스페이스 클래스 바인딩을 사용하면 프로젝트에서 감독자 네임스페이스를 생성할 때 감독자 네임스페이스 클래스를 사용할 수 있습니다.
SupervisorNamespaceClassBinding에는 다음 속성이 포함됩니다.
  • metadata.name 감독자 네임스페이스 클래스 바인딩 이름입니다.
  • metadata.namespace 프로젝트 이름입니다.
  • spec.overrideParameters 관리자가 생성하는 이러한 매개 변수는 감독자 네임스페이스를 생성할 때 사용자가 변경할 수 없는 값을 정의합니다. const는 매개 변수의 값을 지정합니다. 이러한 매개 변수는 선택 사항이며 정의된 경우 모든 클래스 매개 변수에 필수는 아닙니다.
감독자 네임스페이스 클래스 바인딩 생성 예시 입력입니다.
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespaceClassBinding
metadata:
  name: gold-with-gpu
  namespace: demo-project
spec:
  overrideParameters:
    - name: environment
      type: string
      const: testing
supervisorNamespaceClassRef:
  apiVersion: infrastructure.cci.vmware.com/v1alpha1
  kind: SupervisorNamespaceClass
  name: gold
이 예에서 name: environment는 감독자 네임스페이스 클래스의 environment 매개 변수를 사용하는 재정의 매개 변수입니다. const: testing을 지정하면 사용자는 테스트 환경에서만 이 클래스를 사용하여 감독자 네임스페이스를 생성할 수 있습니다.

감독자 네임스페이스

감독자 네임스페이스
사용자가 감독자 네임스페이스 클래스를 템플릿으로 사용하여 특정 지역에서 감독자 네임스페이스를 생성할 수 있습니다. 표시된 경우 선택적 클래스 매개 변수를 사용하여 네임스페이스 설정을 정의할 수 있습니다.
SupervisorNamespace에는 다음 속성이 포함됩니다.
  • metadata.name 프로젝트 및 감독자에 있는 네임스페이스의 이름입니다.
  • metadata.namespace 프로젝트 이름입니다.
  • spec.regionName 지역 이름입니다.
  • spec.className 감독자 네임스페이스 클래스 이름입니다.
  • spec.classParameters 기본 매개 변수 값을 재정의하는 선택적 키-값입니다.
  • spec.description 선택적 네임스페이스 설명입니다.
감독자 네임스페이스 생성 예시 입력입니다.
apiVersion: infrastructure.cci.vmware.com/v1alpha1
kind: SupervisorNamespace
metadata:
  name: demo-ns5
  namespace: demo-project
spec:
  description: Demonstrating supervisor namespace creation
  regionName: us-west2
  className: bronze
감독자 네임스페이스 예제 출력을 생성합니다.
Name:         demo-1
Namespace:    sprint-demo-project
Labels:       <none>
Annotations:  infrastructure.cci.vmware.com/wcp-address: 10.161.81.40
API Version:  infrastructure.cci.vmware.com/v1alpha1
Kind:         SupervisorNamespace
Metadata:
  Creation Timestamp:  2022-09-13T01:55:57Z
  UID:                 my-example-demo-1
Spec:
  Class Name:  demo-class
  Class Parameters:
    Pods:       30
  Description:
  Region Name:  us-demo-1
Status:
  Conditions:
    Last Transition Time:  2022-09-13T01:55:58Z
    Status:                True
    Type:                  Ready
  Phase:                   Created
Events:                    <none>