설명
NamespaceLifecycle admission 플러그인은 존재하지 않거나 삭제 중인 네임스페이스에 새 리소스가 생성되는 상황 등을 제어합니다. 이 플러그인을 비활성화하면 네임스페이스 생명주기와 맞지 않는 작업이 허용될 수 있습니다. 기본적으로 활성화되는 기능이며 RBAC 접근 권한을 대신하지는 않습니다.
잠재적 영향
- 삭제 중인 네임스페이스에 리소스가 추가되어 정리 작업이 복잡해질 수 있습니다.
- 네임스페이스 상태와 실제 리소스 상태가 어긋나 복구가 어려워질 수 있습니다.
해결 방법
- 직접 관리하는 API 서버에서는 --disable-admission-plugins에서 NamespaceLifecycle을 제거하고 기본 활성 상태를 유지하세요. 관리형 서비스에서는 제공자의 제어 플레인 정책을 확인하세요.
- 적용 후 네임스페이스 생성·삭제와 관련 요청의 허용·거부가 정상인지 확인하세요. 사용자와 서비스 계정의 RBAC 권한도 별도로 관리하세요.
예시
Kubernetes v1.30.0의 API 서버 인자를 비교하는 과거 발췌입니다. 실제 적용에는 지원되는 버전과 전체 제어 플레인 구성이 필요합니다.
변경 전
yaml
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
spec:
containers:
- name: kube-apiserver
image: registry.k8s.io/kube-apiserver:v1.30.0
command:
- kube-apiserver
args:
- --disable-admission-plugins=NamespaceLifecycle
NamespaceLifecycle을 명시적으로 비활성화합니다.
변경 후
yaml
apiVersion: v1
kind: Pod
metadata:
name: kube-apiserver
spec:
containers:
- name: kube-apiserver
image: registry.k8s.io/kube-apiserver:v1.30.0
command:
- kube-apiserver
args:
- --enable-admission-plugins=NamespaceLifecycle
비활성화 인자를 제거하고 NamespaceLifecycle을 명시적으로 활성화합니다. 이 플러그인은 기본 활성 상태이므로 별도 비활성화가 없다면 활성화 목록에 항상 적을 필요는 없습니다.