20장. 사용자 정의 리소스를 사용하여 Kubernetes API 확장
20.1. Kubernetes 사용자 정의 리소스 정의
Kubernetes API에서 리소스는 특정 종류의 API 오브젝트 컬렉션을 저장하는 끝점입니다. 예를 들어 기본 제공 Pod 리소스에는 Pod 오브젝트 컬렉션이 포함되어 있습니다.
사용자 정의 리소스는 Kubernetes API를 확장하거나 자체 API를 프로젝트 또는 클러스터에 도입할 수 있는 오브젝트입니다.
CRD(사용자 정의 리소스 정의 ) 파일은 자체 오브젝트 유형을 정의하고 API 서버가 전체 라이프사이클을 처리할 수 있도록 합니다. CRD를 클러스터에 배포하면 Kubernetes API 서버가 지정된 사용자 지정 리소스 제공을 시작합니다.
새 CRD(사용자 정의 리소스 정의)를 생성할 때 Kubernetes API 서버는 전체 클러스터 또는 단일 프로젝트(네임스페이스)에서 액세스할 수 있는 새 RESTful 리소스 경로를 생성하여 반응합니다. 기존의 기본 제공 오브젝트와 마찬가지로 프로젝트를 삭제하면 해당 프로젝트의 모든 사용자 지정 오브젝트가 삭제됩니다.
사용자에게 CRD에 대한 액세스 권한을 부여하려면 클러스터 역할 집계를 사용하여 admin, edit 또는 view 기본 클러스터 역할이 있는 사용자에게 액세스 권한을 부여합니다. 클러스터 역할 집계를 사용하면 이러한 클러스터 역할에 사용자 정의 정책 규칙을 삽입할 수 있습니다. 이 동작은 새 리소스를 기본 제공 리소스인 것처럼 클러스터의 RBAC 정책에 통합합니다.
클러스터 관리자만 CRD를 생성할 수 있지만 읽기 및 쓰기 권한이 있는 경우 CRD에서 오브젝트를 생성할 수 있습니다.