LabHub
배우기 러닝패스 코스

CNPA — Cloud Native Platform Engineering Associate

Watch the API Server Actually Reject

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

이 실습은 진짜 API 서버에서 돕니다

CRD 는 "API 서버가 이미 가진 능력을 내 타입에 빌려 준다" 는 물건입니다. 그 능력이란 스키마 검증 · 기본값 · RBAC · 감사 · watch 입니다.

그런데 가짜 클러스터에는 그 능력이 없습니다. 무엇을 넣어도 받아 주므로 잘못된 값이 거절되는 것도, 기본값이 채워지는 것도 볼 수 없었습니다. 거절당해 봐야 계약이 무엇인지 압니다.

처음 뜨는 데 2분쯤 걸립니다.

목표

개발자에게 줄 플랫폼 API 를 하나 설계하고, 그것이 실제로 담장 노릇을 하는지 확인합니다.

단계

  1. CRD 를 만들고 API 서버가 그것을 받아들이는 것을 /root/cnpa/crd.txt 에 담으세요.
  2. 스키마가 잘못된 값을 거절하는 것을 /root/cnpa/validate.txt 에 담으세요.
  3. 기본값이 채워지는 것을 /root/cnpa/defaults.txt 에 담으세요.
  4. kubectl get 이 쓸 만하게 보이도록 출력 열을 붙여 /root/cnpa/columns.txt 에 담으세요.
  5. RBAC 으로 개발자가 할 수 있는 일을 정하고 /root/cnpa/rbac.txt 에 담으세요.
  6. 쿼터로 자원의 담장을 세우고 /root/cnpa/quota.txt 에 담으세요.
  7. 배포 원장에서 DORA 지표를 계산해 /root/cnpa/dora.txt 에 담으세요.
  8. /root/cnpa/report.mdcrd_kind=, rejected=yes, deploy_freq= 세 줄과 설명을 쓰세요.

참고

내 타입을 API 에 등록한다

CRD 를 만들고 API 서버가 그것을 받아들이는 것을 /root/cnpa/crd.txt 에 담으세요.

group·names·versions 셋이 필요합니다. servedstorage 도 봐 두세요.

거절당해 봐야 계약을 안다

스키마가 잘못된 값을 거절하는 것을 /root/cnpa/validate.txt 에 담으세요.

필수 필드를 빼 보고, 타입을 틀려 보고, 없는 필드를 넣어 보세요.

빠뜨린 값을 API 서버가 채운다

기본값이 채워지는 것을 /root/cnpa/defaults.txt 에 담으세요.

default: 를 스키마에 두면 저장 시점에 채워집니다. kubectl get -o yaml 로 확인하세요.

kubectl get 이 쓸 만해야 쓰인다

kubectl get 이 쓸 만하게 보이도록 출력 열을 붙여 /root/cnpa/columns.txt 에 담으세요.

additionalPrinterColumns 를 versions 아래에 둡니다.

개발자가 할 수 있는 일을 정한다

RBAC 으로 개발자가 할 수 있는 일을 정하고 /root/cnpa/rbac.txt 에 담으세요.

CRD 도 다른 자원과 똑같이 RBAC 이 걸립니다. kubectl auth can-i --as 로 확인하세요.

자원의 담장

쿼터로 자원의 담장을 세우고 /root/cnpa/quota.txt 에 담으세요.

ResourceQuota 는 네임스페이스 전체의 합을 막고, LimitRange 는 개별 파드의 기본값과 상한을 정합니다.

지표는 계산에서 갈린다

배포 원장에서 DORA 지표를 계산해 /root/cnpa/dora.txt 에 담으세요.

배포 원장에서 네 지표를 직접 계산하세요. 정의가 아니라 무엇을 세느냐가 답을 바꿉니다.

무엇을 배웠나

/root/cnpa/report.mdcrd_kind=, rejected=yes, deploy_freq= 세 줄과 설명을 쓰세요.

crd_kind=, rejected=yes, deploy_freq= 세 줄과 설명을 쓰세요.