20.2. 사용자 정의 리소스 정의 생성
사용자 정의 오브젝트를 생성하려면 먼저 CRD(사용자 정의 리소스 정의)를 생성해야 합니다.
클러스터 관리자만 CRD를 생성할 수 있습니다.
절차
CRD를 생성하려면 다음을 수행합니다.
다음 예제의 필드가 포함된 YAML 파일을 생성합니다.
사용자 정의 리소스 정의에 대한 YAML 파일의 예
apiVersion: apiextensions.k8s.io/v1beta1 1 kind: CustomResourceDefinition metadata: name: crontabs.stable.example.com 2 spec: group: stable.example.com 3 version: v1 4 scope: Namespaced 5 names: plural: crontabs 6 singular: crontab 7 kind: CronTab 8 shortNames: - ct 9
- 1
apiextensions.k8s.io/v1beta1
API를 사용합니다.- 2
- 정의의 이름을 지정합니다.
group
및plural
필드의 값을 사용하는 <plural-name><group> 형식이어야 합니다. - 3
- API의 그룹 이름을 지정합니다. API 그룹은 논리적으로 관련된 오브젝트의 컬렉션입니다. 예를 들어
Job
또는ScheduledJob
과 같은 모든 배치 오브젝트는 배치 API 그룹(예: batch.api.example.com)에 있을 수 있습니다. 조직의 정규화된 도메인 이름을 사용하는 것이 좋습니다. - 4
- URL에 사용할 버전 이름을 지정합니다. 각 API 그룹은 여러 버전에 존재할 수 있습니다. 예:
v1alpha
,v1beta
,v1
. - 5
- 특정 프로젝트(
Namespaced
) 또는 클러스터의 모든 프로젝트(Cluster
)에서 사용자 정의 오브젝트를 사용할 수 있는지 지정합니다. - 6
- URL에서 사용할 복수형 이름을 지정합니다.
plural
필드는 API URL의 리소스와 동일합니다. - 7
- CLI 및 디스플레이에서 별칭으로 사용할 단수형 이름을 지정합니다.
- 8
- 생성할 수 있는 오브젝트의 종류를 지정합니다. 유형은 CamelCase에 있을 수 있습니다.
- 9
- CLI의 리소스와 일치하는 짧은 문자열을 지정합니다.
참고기본적으로 사용자 정의 리소스 정의는 클러스터 범위이며 모든 프로젝트에서 사용할 수 있습니다.
오브젝트를 생성합니다.
oc create -f <file-name>.yaml
다음에 새 RESTful API 끝점이 생성됩니다.
/apis/<spec:group>/<spec:version>/<scope>/*/<names-plural>/...
예를 들어 예제 파일을 사용하면 다음 끝점이 생성됩니다.
/apis/stable.example.com/v1/namespaces/*/crontabs/...
이 끝점 URL을 사용하여 사용자 지정 오브젝트를 생성하고 관리할 수 있습니다. 오브젝트의 종류는 생성한 Custom Resource Definition 오브젝트의
spec.kind
필드를 기반으로 합니다.