`kubectl config`를 사용하여 다중 Kubernetes 클러스터 관리 가이드

`kubectl config`를 사용하여 다중 Kubernetes 클러스터 관리를 마스터하세요. 이 가이드는 컨텍스트 전환, 클러스터 세부 정보 확인, kubeconfig 파일 구성에 대한 단계별 튜토리얼을 제공합니다. 실용적인 명령어와 모범 사례를 배워 다중 클러스터 워크플로를 간소화하고, 보안을 강화하며, 컨테이너 오케스트레이션 작업의 생산성을 높이세요.

37 조회수

kubectl config를 이용한 다중 Kubernetes 클러스터 관리 가이드

다중 Kubernetes 클러스터를 관리하는 것은 개발자 및 운영팀에게 일반적인 요구사항입니다. 개발, 스테이징, 프로덕션 환경에서 작업하거나 여러 클라우드 제공업체에 걸쳐 클러스터를 관리하는 경우, 클러스터 간 효율적인 전환은 생산성을 위해 매우 중요합니다. kubectl config 명령어 세트는 이 작업을 위한 가장 강력한 도구이며, kubeconfig 파일 내에서 컨텍스트, 클러스터 및 사용자를 관리할 수 있게 해줍니다.

이 가이드에서는 다중 클러스터 워크플로우를 간소화하는 데 도움이 되는 필수 kubectl config 명령어를 안내합니다. 이 명령어를 숙달하면 효율성을 크게 향상하고, 잘못된 클러스터에 실수로 변경을 가할 위험을 줄이며, 안전하고 체계적인 명령줄 환경을 유지할 수 있습니다. 컨텍스트를 보고, 전환하고, 관리하는 방법과 여러 kubeconfig 파일을 다루는 모범 사례를 자세히 다룰 것입니다.

Kubeconfig 파일 이해하기

kubectl config 명령어를 자세히 알아보기 전에 kubeconfig 파일을 이해하는 것이 중요합니다. 이 파일은 클러스터, 사용자 및 이들을 연결하는 컨텍스트에 대한 정보를 저장합니다. kubectl은 이 파일을 사용하여 인증하고 상호작용할 클러스터를 지정합니다. 기본적으로 kubectl$HOME/.kube/config 경로에서 kubeconfig 파일을 찾습니다.

이 파일 내에는 세 가지 주요 섹션이 있습니다.

  • clusters: Kubernetes 클러스터를 정의하며, API 서버 엔드포인트 및 인증 기관(certificate authorities)을 포함합니다.
  • users: 클라이언트 인증서(client certificates) 및 토큰(tokens)과 같은 인증 자격 증명(authentication credentials)을 저장합니다.
  • contexts: 클러스터, 사용자 및 선택적으로 네임스페이스를 연결합니다. 컨텍스트는 이러한 구성을 그룹화하는 편리한 방법을 제공하여 kubectl이 다른 클러스터/사용자 조합 간에 쉽게 전환할 수 있도록 합니다.

kubectl config로 컨텍스트 관리하기

컨텍스트는 kubectl이 다양한 Kubernetes 클러스터에 대한 연결을 관리하는 주요 방법입니다. 이들은 단일 명령으로 클러스터 간에 전환할 수 있도록 하는 바로 가기 역할을 합니다.

사용 가능한 컨텍스트 보기

현재 kubeconfig 파일에서 사용 가능한 모든 컨텍스트를 보려면 다음 명령어를 사용하십시오.

kubectl config get-contexts

이 명령어는 각 컨텍스트와 연결된 클러스터, 사용자 및 네임스페이스 목록을 출력합니다. 현재 활성 컨텍스트는 별표(*)로 표시됩니다.

예시 출력:

CURRENT   NAME                 CLUSTER              AUTHINFO       NAMESPACE
*         my-dev-context       my-dev-cluster       dev-user       default
          my-prod-context      my-prod-cluster      prod-user      production
          staging-context      staging-cluster      staging-user   staging

현재 컨텍스트 확인하기

현재 사용 중인 컨텍스트를 빠르게 확인하려면 다음을 실행하십시오.

kubectl config current-context

이것은 활성 컨텍스트의 이름을 출력합니다.

컨텍스트 전환하기

다른 컨텍스트로 전환하는 것은 간단합니다. 활성화하려는 컨텍스트 이름 뒤에 use-context 하위 명령을 사용하십시오.

kubectl config use-context <context-name>

예를 들어, 위 예시에서 my-prod-context로 전환하려면:

kubectl config use-context my-prod-context

이 명령을 실행한 후, 이어지는 kubectl 명령은 my-prod-context에 지정된 클러스터로 향하게 됩니다.

컨텍스트 설정하기

특정 클러스터 및 사용자에 대한 컨텍스트를 설정할 수 있으며, 이를 반드시 향후 기본값으로 만들 필요는 없습니다. 이는 임시 작업에 유용합니다.

kubectl config set-context <context-name> --cluster=<cluster-name> --user=<user-name> --namespace=<namespace-name>

--namespace를 생략하면 클러스터의 기본 네임스페이스가 사용됩니다.

클러스터 및 사용자 관리하기

컨텍스트가 전환에 사용되지만, 컨텍스트가 참조하는 클러스터 및 사용자 구성을 직접 관리할 수도 있습니다.

클러스터 정보 보기

구성된 모든 클러스터를 나열하려면:

kubectl config get-clusters

특정 클러스터의 세부 정보를 보려면:

kubectl config view --minify -o jsonpath='{.clusters[?(@.name=="<cluster-name>")].cluster}'

<cluster-name>을 실제 클러스터 이름으로 바꾸십시오.

사용자 정보 보기

구성된 모든 사용자를 나열하려면:

kubectl config get-users

구성 추가 및 수정하기

새 클러스터, 사용자 및 컨텍스트를 추가하거나 기존 항목을 수정할 수 있습니다.

  • 새 클러스터 추가:
    bash kubectl config set-cluster <cluster-name> --server=<api-server-url> --certificate-authority=<path-to-ca-file> --embed-certs=true
  • 새 사용자 추가:
    bash kubectl config set-credentials <user-name> --client-certificate=<path-to-cert-file> --client-key=<path-to-key-file> --embed-certs=true
  • 새 컨텍스트 추가:
    bash kubectl config set-context <context-name> --cluster=<cluster-name> --user=<user-name> --namespace=<namespace-name>

여러 Kubeconfig 파일 관리하기

특히 많은 클러스터나 민감한 자격 증명을 다룰 때, 향상된 보안 및 구성을 위해 kubeconfig 파일을 분리하여 유지하는 것이 좋습니다. kubectlKUBECONFIG 환경 변수 또는 --kubeconfig 플래그를 사용하여 여러 kubeconfig 파일을 관리할 수 있습니다.

KUBECONFIG 환경 변수 사용하기

로드할 kubeconfig 파일 목록을 지정할 수 있습니다. kubectl은 이 파일들을 병합합니다. 병합된 목록에서 요청을 만족하는 첫 번째 컨텍스트가 사용됩니다.

현재 쉘 세션에 이 변수를 설정하려면:

export KUBECONFIG=~/.kube/config:~/.kube/config-dev:~/.kube/config-prod

이를 영구적으로 만들려면 export 줄을 쉘 프로필 파일(예: ~/.bashrc, ~/.zshrc)에 추가하십시오.

--kubeconfig 플래그 사용하기

또는 단일 kubectl 명령에 대해 특정 kubeconfig 파일을 지정할 수 있습니다.

kubectl --kubeconfig=~/.kube/config-dev get pods

이는 일회성 명령이나 어떤 파일이 사용되는지 확실히 하고 싶을 때 유용합니다.

다중 클러스터 관리를 위한 모범 사례

  • 개별 파일 사용: 다른 환경(개발, 스테이징, 프로덕션) 또는 클라우드 제공업체에 대한 구성을 별도의 kubeconfig 파일(예: config-dev, config-staging, config-prod)에 저장하십시오.
  • KUBECONFIG 활용: 쉘 프로필에 KUBECONFIG 환경 변수를 설정하여 수동 병합 없이 여러 파일을 쉽게 병합하고 관리하십시오.
  • 설명적인 컨텍스트 이름: 혼동을 피하기 위해 컨텍스트에 명확하고 설명적인 이름(예: aws-prod-us-east-1, gke-dev-eu-west-2)을 사용하십시오.
  • 네임스페이스 인식: 항상 작업 중인 네임스페이스를 유념하십시오. 올바른 네임스페이스를 대상으로 지정하려면 --namespace 플래그를 사용하거나 컨텍스트에 설정하십시오.
  • 정기 감사: 컨텍스트 및 클러스터 구성을 주기적으로 검토하여 최신 상태이고 안전한지 확인하십시오.
  • Kubeconfig 보안: kubeconfig 파일을 민감한 자격 증명으로 취급하십시오. 파일 권한을 제한하고 버전 제어에 커밋하지 마십시오.

결론

kubectl config 명령어 세트는 Kubernetes와 함께 작업하는 모든 사람에게 필수적인 도구입니다. 컨텍스트, 클러스터 및 사용자를 관리하는 방법을 이해하고 여러 kubeconfig 파일을 다루는 모범 사례를 채택함으로써, 생산성을 크게 향상하고 다중 클러스터 환경을 제어할 수 있습니다. 이러한 명령을 정기적으로 연습하면 더욱 효율적이고 안전한 Kubernetes 워크플로우를 얻을 수 있습니다.