관리자와 개발자는 CCI Kubernetes API 서버가 표시하는 CCI(클라우드 소비 인터페이스) API 리소스에 대해 작업을 수행할 수 있습니다.
리소스 종류에 따라 관리자와 개발자는 API를 사용하여 다음 작업을 수행할 수 있습니다.
리소스 종류 | 관리자 작업(동사) | 개발자 작업(동사) |
---|---|---|
CloudAccount | 가져오기, 나열 | |
Supervisor | 가져오기, 패치 적용, 나열 | |
Project | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | 가져오기, 나열 |
ProjectRole | 가져오기, 나열 | 가져오기, 나열 |
ProjectRoleBinding | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | 가져오기, 나열 |
Region | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | 가져오기, 나열 |
RegionBinding | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | 가져오기, 나열 |
RegionBindingConfig | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | |
SupervisorNamespaceClass | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | 가져오기, 나열 |
SupervisorNamespaceClassConfig | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | |
SupervisorNamespaceClassBinding | 생성, 가져오기, 업데이트, 패치 적용, 삭제, 나열 | 가져오기, 나열 |
SupervisorNamespace | 생성, 가져오기, 삭제, 나열 | 생성, 가져오기, 삭제, 나열 |
다음 예는 CLI 호출 및 응답을 보여줍니다. CLI를 사용하려면 다음이 필요합니다.
- CCI kubectl 플러그인을 다운로드했습니다.
- API 토큰을 획득했습니다.
- 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
- 지역 바인딩
-
관리자는 지역 바인딩을 생성하여 프로젝트와 지역을 연결합니다.
프로젝트의 사용자가 감독자 네임스페이스에 생성하려면 RegionBinding 및 RegionBindingConfig가 모두 존재해야 합니다.
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를 생성합니다. 프로젝트가 감독자 네임스페이스 클래스에 액세스할 수 있도록 하려면
SupervisorNamespaceClass와
SupervisorNamespaceClassConfig가 모두 존재해야 합니다.
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
입니다.
- 사용자가 매개 변수 값을 true로 지정하면 이름은
((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>