2.8. CRD
2.8.1. 사용자 정의 리소스 정의에서 리소스 관리
이 가이드에서는 개발자가 CRD(사용자 정의 리소스 정의)에서 제공하는 CR(사용자 정의 리소스)을 관리하는 방법을 설명합니다.
2.8.1.1. 사용자 정의 리소스 정의
Kubernetes API에서 리소스는 특정 종류의 API 오브젝트 컬렉션을 저장하는 끝점입니다. 예를 들어 기본 제공 Pod
리소스에는 Pod
오브젝트의 컬렉션이 포함됩니다.
CRD(사용자 정의 리소스 정의) 오브젝트는 클러스터에서 종류라는 새로운 고유한 오브젝트 유형을 정의하고 Kubernetes API 서버에서 전체 라이프사이클을 처리하도록 합니다.
CR(사용자 정의 리소스) 오브젝트는 클러스터 관리자가 클러스터에 추가한 CRD에서 생성하므로 모든 클러스터 사용자가 새 리소스 유형을 프로젝트에 추가할 수 있습니다.
특히 운영자는 CRD를 필수 RBAC 정책 및 기타 소프트웨어별 논리와 함께 패키지로 제공하는 방식으로 CRD를 사용합니다.
2.8.1.2. 파일에서 사용자 정의 리소스 생성
CRD(사용자 정의 리소스 정의)가 클러스터에 추가되면 CR 사양을 사용하여 파일에서 CLI를 사용하여 CR(사용자 정의 리소스)을 생성할 수 있습니다.
프로세스
CR에 대한 YAML 파일을 생성합니다. 다음 예제 정의에서
cronSpec
및image
사용자 정의 필드는Kind: CronTab
의 CR에 설정됩니다.Kind
는 CRD 오브젝트의spec.kind
필드에서 제공합니다.CR에 대한 YAML 파일의 예
apiVersion: "stable.example.com/v1" 1 kind: CronTab 2 metadata: name: my-new-cron-object 3 finalizers: 4 - finalizer.stable.example.com spec: 5 cronSpec: "* * * * /5" image: my-awesome-cron-image
파일을 생성한 후 오브젝트를 생성합니다.
$ oc create -f <file_name>.yaml
2.8.1.3. 사용자 정의 리소스 검사
CLI를 사용하여 클러스터에 존재하는 CR(사용자 정의 리소스) 오브젝트를 검사할 수 있습니다.
사전 요구 사항
- CR 오브젝트는 액세스할 수 있는 네임스페이스에 있습니다.
프로세스
특정 종류의 CR에 대한 정보를 얻으려면 다음을 실행합니다.
$ oc get <kind>
예를 들면 다음과 같습니다.
$ oc get crontab
출력 예
NAME KIND my-new-cron-object CronTab.v1.stable.example.com
리소스 이름은 대소문자를 구분하지 않으며 CRD에 정의된 단수형 또는 복수형 양식이나 짧은 이름을 사용할 수 있습니다. 예를 들면 다음과 같습니다.
$ oc get crontabs
$ oc get crontab
$ oc get ct
CR의 원시 YAML 데이터를 볼 수도 있습니다.
$ oc get <kind> -o yaml
예를 들면 다음과 같습니다.
$ oc get ct -o yaml
출력 예
apiVersion: v1 items: - apiVersion: stable.example.com/v1 kind: CronTab metadata: clusterName: "" creationTimestamp: 2017-05-31T12:56:35Z deletionGracePeriodSeconds: null deletionTimestamp: null name: my-new-cron-object namespace: default resourceVersion: "285" selfLink: /apis/stable.example.com/v1/namespaces/default/crontabs/my-new-cron-object uid: 9423255b-4600-11e7-af6a-28d2447dc82b spec: cronSpec: '* * * * /5' 1 image: my-awesome-cron-image 2