Kubernetes

[kubernetes] kubeconfig ?

su''@ 2025. 2. 24. 00:11

 

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에 설정하면, 해당 컨텍스트를 사용할 때 자동 적용된다.
여러 네임스페이스를 다룰 때 컨텍스트를 이용하면 빠르고 실수 없이 작업할 수 있다.