개요
쿠버네티스의 각 요소들은 오브젝트(Object)*라고 표현됩니다.
본 문서는 쿠버네티스 공식 문서에 근거하여 오브젝트에 대해서 딥다이브합니다.
오브젝트란?
쿠버네티스 오브젝트는 의도의 기록입니다.
원하는 상태를 기록함으로써 쿠버네티스에게 이를 알립니다.
결과적으로 쿠버네티스는 오브젝트와 실제 상태를 비교합니다.
- [Ref] kubernetes - Objects in Kubernetes
오브젝트의 속성
거의 모든 오브젝트는
그 구성을 관리하는 두 개의 중첩된 오브젝트 필드를 가집니다.
첫 번째 중첩 오브젝트 필드는 spec으로서
엔지니어가 오브젝트를 생성할 때 설정하는데 사용됩니다.
kubectl apply -f nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
selector:
matchLabels:
app: nginx
두 번째 중첩 오브젝트 필드는 status로서
쿠버네티스 시스템이 오브젝트의 상태를 기록하는덴 사용합니다.
kubectl get pods -A
오브젝트의 spec과 그 속성
쿠버네티스 오브젝트의 spec 필드에는 다음 값이 필수입니다.
apiVersion - 해당 오브젝트를 생성하는데 사용되는 쿠버네티스 api 버전
kind - 생성하려는 오브젝트 종류
metadata - 객체를 고유하게 식별하게 도움이 되는 데이터
name, uid, namespace 등으로 구성
spec - 객체에 대해 원하는 상태
서버측 필드 유효성 검사
쿠버네티스 1.25 이상에서 지원되는 기능입니다.
이 기능을 사용할 수 없는 경우 클라이언트측 필드 유효성 검사를 사용합니다.
단, 쿠버네티스 1.27 이상에서는 항상 클라이언트측 필드 유효성 검사를 지원합니다.
API 서버는 오브젝트에서 인식할 수 없거나 중복된 필드를 감지하는 서버측 필드 유효성 검사(Server side field validation) 기능을 제공합니다.
kubectl --validate
해당 기능의 옵션은 크게 세 가지 수준으로 정의됩니다.
Strict : 엄격한 필드 유효성 검사, 유효성 검사 실패 시 오류 발생
Warn : 필드 유효성 검사는 수행되지만, 실패 시 오류 발생하지 않고 경고로 노출
Ignore : 서버 측 필드 유효성 검사는 실행되지 않음
- [Ref] kubernetes - Objects in Kubernetes # Server side field validation