Namespace란?
- K8S cluster 내의 논리적인 분리 단위로써, 'Live', 'QA' 등 서비스 목적에 따라 리소스들을 격리하여 관리할 수 있는 공간이다.
<목 적>
- 하나의 클러스터에 Live/QA/Review 환경을 모두 두면, 혼란이 생길 수 있기 때문에
- 네임스페이스를 사용하여 각각의 환경마다 논리적인 분리를 통한 구분
- ResourceQuota를 사용하여 네임스페이스마다 CPU, MEMORY등의 개별적인 리소스 할당이 가능
- 위와 같이 Kubernetes 클러스터를 복수의 목적으로 공유하여 이용할 경우 유용함
<기본 제공되는 NameSpace>
- kube-system
- K8S 클러스터의 컴포넌트와 add-on이 deploy됨
- kube-public
- 모든 사용자(인증되지 않은 사용자 포함)가 읽기 권한으로 접근
- 주로 전체 클러스터 중에 공개적으로 드러나서 읽을 수 있는 리소스를 위해 예약되어 있음
- 모든 유저가 이용할 수 있는 ConfigMap 등을 배치
- default
- 기본 Namespace
추가 활용 시나리오
- RBAC을 함께 이용하여, 클러스터 조작에 관한 권한을 Namespace 마다 나누는 것이 가능
- Network Policy와 함께 조합하여 Namespace 간의 통신의 제어를 실행
고려 사항
- eksctl로 생성한 fargate 모드 EKS cluster에는, default로 생성되는 fargate profile의 namespace가 'default, kube-system'만 잡혀 있혀 있다.
- Fargate Profile은 immutable 리소스라서, namespace 값을 'update' 가 불가하고, 새로 만들고 기존껄 지워주면 된다.
구성 절차
1) Namespace 생성
kubectl create ns live
kubectl create ns qa
2) 생성한 namespace 확인
kubectl get ns