1. kubeconfig 파일이란?
kubeconfig 파일은 k8s의 설정 파일로 kubectl 명령어로 apiserver에 접근할 때 사용하는 인증정보가 저장된 파일이다.
기본적으로 ~/.kube/config 경로에 위치하지만, 다른 경로의 kubeconfig 파일도 사용할 수 있다.
- kubeconfi 파일에 들어있는 정보
- 클러스터 정보: API 서버 주소 등
- 사용자 정보: 인증서, 토큰 등
- 네임스페이스 정보: 기본적으로 사용할 네임스페이스
- 컨텍스트(Context): 클러스터, 사용자, 네임스페이스를 조합한 프로필
2. 컨텍스트(Context)란?
- kubectl 명령어를 실행할 때 어떤 클러스터의 어느 네임스페이스에서 어떤 사용자로 동작할지를 정의한 것으로 여러 개의 클러스터를 운영할 경우, 컨텍스트를 바꾸면 다른 클러스터로 쉽게 전환할 수 있다.
- kubeconfig 파일 구조
apiVersion: v1
kind: Config
clusters:
- name: my-cluster
cluster:
server: https://my-cluster.example.com
certificate-authority: /path/to/ca.crt
users:
- name: my-user
user:
client-certificate: /path/to/client.crt
client-key: /path/to/client.key
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
namespace: my-namespace
current-context: my-context
3. 컨텍스트 전환 방법
# 현재 사용 중인 컨텍스트 확인
kubectl config current-context
# 사용 가능한 컨텍스트 목록 확인
kubectl config get-contexts
# 특정 컨텍스트로 전환
kubectl config use-context my-context
만약 두 개의 클러스터를 관리한다면?
✅ dev-cluster → 개발 환경
✅ prod-cluster → 운영 환경
개발 클러스터(dev-cluster)에서 운영 클러스터(prod-cluster)로 전환해야 한다면?
kubectl config use-context dev-context # 개발 환경으로 전환
kubectl config use-context prod-context # 운영 환경으로 전환
4. 네임스페이스를 지정했을 때와 지정하지 않을때
- 지정하지 않았을 때
kubernetes는 기본적으로 default 네임스페이스에서 모든 작업을 수행한다. 즉, namespace를 설정하지 않으면 default 네임스페이스가 자동으로 사용된다.
예를 들어 pod를 조회하는 명령어를 사용할 때 'kubectl get pods' 명령어는 default ns에서 pod 목록을 조회하게 된다.
하지만 만약 namespace를 지정하지 않았다면
kubectl get pods --namespace=my-namespace
이렇게 명령어에 --namespace 옵션을 붙여서 사용해야한다.
- namespace를 kubeconfig에 지정했다면
kubeconfig 파일에 namespace: my-namespace를 설정하면, 해당 컨텍스트를 사용할 때 기본적으로 해당 네임스페이스에서 모든 작업이 실행된다.
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
namespace: my-namespace
그리고 해당 컨텍스트를 활성화하면
kubectl config use-context my-context
kubectl 명령어를 실행할 때 자동으로 my-namespace에서 동작한다.
- --namespace=my-namespace 옵션을 매번 입력할 필요 없음
- 기본 네임스페이스(default)가 아니라 my-namespace가 자동 적용
- 여러 네임스페이스를 다루는 경우, 예를 들어 dev-namespace, prod-namespace를 번갈아가며 사용한다면 컨텍스트를 변경하는 것만으로 쉽게 네임스페이스를 전환할 수 있다.
kubectl config use-context dev-context # dev 네임스페이스로 자동 전환
kubectl config use-context prod-context # prod 네임스페이스로 자동 전환
😊 결론
kubeconfig 파일은 Kubernetes 클러스터, 사용자, 네임스페이스 정보를 관리하는 파일로 컨텍스트(Context) 를 설정하면 kubectl 사용 시 여러 클러스터와 네임스페이스를 쉽게 전환할 수 있어 여러 개의 클러스터를 다룰 때 매우 유용하다.
context에 namespace를 설정하지 않으면 기본(default) 네임스페이스가 사용되고, namespace를 kubeconfig에 설정하면, 해당 컨텍스트를 사용할 때 자동 적용된다.
여러 네임스페이스를 다룰 때 컨텍스트를 이용하면 빠르고 실수 없이 작업할 수 있다.
'Kubernetes' 카테고리의 다른 글
[kubernetes] 2-3. kubernetes cluster 구축 - worker node 복제 (0) | 2025.03.18 |
---|---|
[kubernetes] 2-2. kubernetes cluster 구축 - VM 환경구성 (0) | 2025.03.17 |
[kubernetes] icmp destination unreachable (0) | 2025.02.23 |
[kubernetes] 2-1. kubernetes cluster 구축 (0) | 2025.02.23 |
[kubernetes] 1. Container service 개요 (0) | 2025.02.23 |