kubernetes concept
Namespace - 리소스를 구분하는 장벽
리소스들을 논리적으로 구분하기 위해 사용한다. Pod, Replica-Set, Deployment, Serviec 와 같은 쿠버네티스 리소스들이 묶여있는 가상의 공간
이라고 이해하면 된다.
기본 Namespace
- default
- kube-system : 쿠버네티스 클러스터 구성에 필수적인 컴포넌트들과 설정값
- kube-public 등 하지만 각 네임스페이스의 리소스들은 논리적으로만 구분된 것일 뿐 물리적으로 격리된 것이 아니라는 점을 알아둬야 한다.
리눅스 네임스페이스
와는 완전히 다른 개념이다. 리눅스 네임스페이스는 컨테이너의 격리된 공간을 생성하기 위해 리눅스 커널의 자체 기능을 활용하는 것이며 네트워크, 마운트, 프로세스 네임스페이스 를 의미한다.
Namepspace 사용하기
- yaml 파일에 설정
- kubectl create namespace production
Namespace Service 접근하기
다른 네임스페이스에 존재하는 경우, 서비스 이름만으로 접근할 수 없다. 하지만 서비스 이름 뒤에 네임스페이스 이름을 붙이면 접근이 가능하다.s
네임스페이스 종속여부
모든 오브젝트가 네임스페이스에 종속되는 것은 아니다. 노드
와 같은 오브젝트들은 네임스페이스에 의해 구분되지 않기 때문이다.
Configmap, Secret - 설정값을 포드로
쿠버네티스에서는 yaml파일과 설정값을 분리할 수 있는 ConfigMap 과 Secret 오브젝트를 제공한다.
Configmap
일반적인 설정값을 담아 저장할 수 있는 쿠버네티스 오브젝트이다.
- 컨피크맵의 값을 컨테이너의 환경변수로 사용
- 컨피그맵의 값을 포드 내부의 파일로 마운트해 사용
- 컨피그맵의 데이터를 컨테이너의 환경변수로 가져옴
- 컨피그맵의 내용을 파일로 포드 내부에 마운트해서 사용
Secret
SSH키, 비밀번호와 같이 민감한 정보를 저장하기 위한 용도로 사용된다. 네임스페이스에 종속되는 쿠버네티스 오브젝트이다.