IT/Kubernetes_k8s

kubeconfig 설정 for kubectl / k9s

동구멍폴로 2024. 9. 2. 23:11
반응형

Kubeconfig 파일은 Kubernetes 클러스터에 접근하기 위한 설정을 정의하는 파일입니다. 이 파일은 클러스터와의 통신, 인증 정보, 네임스페이스 등을 정의하여 kubectl 및 K9s와 같은 도구가 클러스터와 상호작용할 수 있게 해줍니다. kubeconfig 파일을 설정하는 방법을 단계별로 설명하겠습니다.

1. kubeconfig 파일의 기본 구조

kubeconfig 파일은 YAML 형식으로 작성되며, 기본 구조는 다음과 같습니다:

apiVersion: v1
kind: Config
clusters:
- name: my-cluster
  cluster:
    server: https://your-k8s-api-server:6443
    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: default
current-context: my-context
 

주요 구성 요소:

  • clusters: 클러스터의 정보(서버 주소, 인증서 경로 등)를 정의합니다.
  • users: 클러스터에 접근하기 위한 사용자의 인증 정보를 정의합니다.
  • contexts: 클러스터와 사용자, 네임스페이스를 연결하는 컨텍스트를 정의합니다.
  • current-context: 현재 사용 중인 컨텍스트를 지정합니다.

2. 클러스터 정보 설정

클러스터 정보를 추가하려면 clusters 섹션을 설정합니다. 예를 들어:

clusters:
- name: my-cluster
  cluster:
    server: https://my-k8s-api-server:6443
    certificate-authority: /path/to/ca.crt
  • name: 클러스터의 이름입니다. 이 이름은 contexts에서 참조됩니다.
  • server: 클러스터의 API 서버 주소입니다.
  • certificate-authority: 클러스터와의 통신에 사용하는 CA 인증서의 경로입니다.

3. 사용자 정보 설정

클러스터에 접근할 사용자를 정의하려면 users 섹션을 설정합니다:

users:
- name: my-user
  user:
    client-certificate: /path/to/client.crt
    client-key: /path/to/client.key
  • name: 사용자의 이름입니다. 이 이름은 contexts에서 참조됩니다.
  • client-certificate: 클라이언트 인증서 경로입니다.
  • client-key: 클라이언트 키 파일 경로입니다.

4. 컨텍스트 설정

컨텍스트는 특정 클러스터와 사용자, 네임스페이스를 결합하여 하나의 작업 환경을 정의합니다:

contexts:
- name: my-context
  context:
    cluster: my-cluster
    user: my-user
    namespace: default
  • name: 컨텍스트의 이름입니다.
  • cluster: 사용할 클러스터의 이름입니다(clusters 섹션에서 정의됨).
  • user: 사용할 사용자의 이름입니다(users 섹션에서 정의됨).
  • namespace: 기본적으로 사용할 네임스페이스입니다.

5. 현재 컨텍스트 설정

current-context 섹션은 현재 활성화된 컨텍스트를 지정합니다:

current-context: my-context

이 설정은 기본적으로 사용할 클러스터, 사용자, 네임스페이스 조합을 지정하는 데 사용됩니다.

6. kubeconfig 파일 위치

기본적으로 kubeconfig 파일은 ~/.kube/config에 위치합니다. 그러나 다른 경로에 파일을 저장하고 싶다면 KUBECONFIG 환경 변수를 사용해 경로를 지정할 수 있습니다:

export KUBECONFIG=/path/to/your/kubeconfig

또는 명령어를 실행할 때:

KUBECONFIG=/path/to/your/kubeconfig kubectl get pods

7. kubeconfig 파일 병합

여러 kubeconfig 파일을 사용할 수 있습니다. 이를 위해 KUBECONFIG 환경 변수에 여러 파일 경로를 콜론(:)으로 구분하여 지정할 수 있습니다:

export KUBECONFIG=~/.kube/config:/another/path/to/kubeconfig:/third/path/to/kubeconfig

이 경우, 여러 kubeconfig 파일이 병합되어 사용됩니다.

8. kubeconfig 파일 생성

만약 kubeconfig 파일을 처음부터 생성해야 한다면, kubectl 명령을 사용해 자동으로 생성할 수 있습니다. 예를 들어, 클러스터에서 토큰을 이용해 생성할 수 있습니다:

kubectl config set-cluster my-cluster --server=https://my-k8s-api-server:6443 --certificate-authority=/path/to/ca.crt
kubectl config set-credentials my-user --token=my-token
kubectl config set-context my-context --cluster=my-cluster --user=my-user --namespace=default
kubectl config use-context my-context
 

 이 명령들은 kubeconfig 파일에 새로운 클러스터, 사용자, 컨텍스트를 추가하고 현재 컨텍스트로 설정합니다.

이렇게 하면 kubeconfig 파일을 설정하고 관리하여 Kubernetes 클러스터와의 연결을 관리할 수 있습니다.

반응형