8.2. 커스텀 리소스
어떨 때 보는가
- 표준 메뉴에 없는 자원을 다룰 때
- 설치한 도구가 만든 자원을 확인할 때
- 어떤 확장 기능이 설치되어 있는지 볼 때
CRD 란
Kubernetes 는 파드·Service 처럼 처음부터 있는 자원 외에 새 자원 종류를 추가 할 수 있습니다. 이때 "이런 종류의 자원이 있고, 이런 항목을 갖는다" 고 정의하는 것이 CRD(CustomResourceDefinition)입니다.
CRD 를 등록하면 그 종류의 자원을 파드나 Service 와 똑같은 방식으로 다룰 수 있습니다. 같은 API 를 쓰고, 같은 권한 체계가 적용되고, Console 화면에도 나타납니다.
대부분의 확장 기능이 이 방식으로 만들어집니다. CRD 로 자원 종류를 정의하고, 그 자원을 감시하며 실제 일을 하는 프로그램(컨트롤러)을 함께 설치합니다.
COP 에서 쓰는 커스텀 리소스
| 커스텀 리소스 | 하는 일 | 장 |
|---|---|---|
| BuildConfig | 소스에서 이미지를 만드는 설정 | 4.2 장 |
| Certificate · Issuer | 인증서 자동 발급 | 7.3 장 |
| CronHPA | 시각 기준 파드 수 조절 | 3.5 장 |
이 자원들은 전용 메뉴가 따로 있어 CRD 화면에서 다루지 않아도 됩니다. 전용 메뉴가 없는 확장 기능만 이 화면에서 봅니다.
CRD 목록
커스텀 리소스(CRD) > 사용자 정의 리소스 정의 로 들어갑니다.

| 열 | 설명 |
|---|---|
| 이름 | <복수형>.<그룹> 형태입니다. 예: buildconfigs.build.openmaru.io |
| 그룹 | 소속 API 그룹. 만든 곳을 알 수 있습니다 |
| 범위 | 네임스페이스 단위인지 클러스터 단위인지 |
| 버전 | 지원하는 API 버전 |
그룹 이름으로 출처를 짐작할 수 있습니다. cert-manager.io 는 cert-manager 가,
build.openmaru.io 는 COP 가 만든 것입니다.
CRD 상세에서 볼 것
이름을 누르면 그 종류가 어떤 항목을 갖는지(스키마) 확인할 수 있습니다.
| 항목 | 무엇을 알 수 있는가 |
|---|---|
| 스키마 | 필수 항목, 각 항목의 형식과 설명 |
| 버전 | 여러 버전이 있으면 어느 것이 저장용인지 |
| 범위 | 네임스페이스 단위면 네임스페이스를 지정해야 합니다 |
| 짧은 이름 | 명령어에서 줄여 쓸 수 있는 이름 |
스키마가 있으면 Console 이 그것을 읽어 입력 서식을 자동으로 만들어 줍니다. 어떤 항목이 필수인지, 값의 형식이 무엇인지 여기서 확인하십시오.
커스텀 리소스 보기
커스텀 리소스(CRD) > 인스턴스 에서 실제로 만들어진 자원을 봅니다. CRD 종류를 고르면 그 종류의 자원 목록이 나옵니다.
목록이 비어 있어도 CRD 자체는 설치되어 있을 수 있습니다. 종류는 정의됐지만 아직 그 자원을 하나도 만들지 않은 상태입니다.
다루는 방법
전용 화면이 없는 커스텀 리소스는 YAML 로 다룹니다.
| 하고 싶은 일 | 방법 |
|---|---|
| 확인 | 목록에서 이름을 눌러 상세를 보고, YAML 로 전체 내용 확인 |
| 수정 | 편집 버튼으로 YAML 을 고칩니다 |
| 생성 | 왼쪽 메뉴 아래 생성 버튼에서 YAML 을 붙여 넣습니다 |
상태(status) 항목은 직접 고치지 마십시오. 컨트롤러가 채우는 자리라 손으로 바꿔도 곧 되돌아갑니다. 사용자가 정하는 것은 원하는 상태(spec)입니다.
만든 뒤 아무 일도 일어나지 않으면 그 종류를 처리하는 컨트롤러가 없는 것입니다. CRD 만 설치되고 컨트롤러가 빠진 경우로, 운영 담당자에게 확인하십시오.
지울 때 주의할 것
CRD 자체를 지우면 그 종류의 자원이 전부 함께 지워집니다. 되 돌릴 수 없습니다.
예를 들어 certificates.cert-manager.io CRD 를 지우면 클러스터의 모든 인증서 자원이
사라집니다. CRD 는 지우지 마십시오.
개별 커스텀 리소스를 지울 때도 그 자원이 만든 다른 자원이 함께 지워지는지 확인하십시오. 컨트롤러가 만든 파드·Service 가 딸려 있을 수 있습니다.