본문으로 건너뛰기
버전: 1.0.3

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) > 사용자 정의 리소스 정의 로 들어갑니다.

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 가 딸려 있을 수 있습니다.