반응형

Terraform 출력에서 ​​여러 Kubernetes ~/.kube/config 파일 관리하는 방법

 

 

클러스터 프로비저닝 자동화

 

표준 라이선스에 따라 사용되는 셔터스톡

Kubernetes로 작업할 때 여러 클러스터에 배포할 애플리케이션을 개발하는 경우가 종종 있습니다.

때로는 이러한 클러스터가 여러 클라우드 제공업체에 분산되어 여러 컨텍스트 간에 전환하기 어려울 수 있습니다.

다음과 같은 훌륭한 오픈 소스 도구가 있음에도 불구하고 kubectx 컨텍스트와 네임스페이스를 원활하게 들락날락할 수 있게 하는 전체 프로세스는 특히 Terraform을 사용하여 리소스를 반복적으로 프로비저닝하고 생성하고 파괴할 때 까다로울 수 있습니다.

의 출력을 얻은 후 terraform apply그것은 종종 kubeconfig 민감한 파일은 base64로 인코딩된 문자열 형식으로 존재합니다. 클라우드 공급자의 콘솔에서 다운로드할 수 있지만 중복 오버헤드를 생성하며 결국 이는 Terraform의 원칙에 어긋납니다.

그러나 다운로드되어 사용자 컴퓨터의 어딘가에 있다고 가정해 보겠습니다.

여러 구성을 처리하는 일반적인 방법은 다음과 같은 환경 값을 설정하는 것입니다. KUBECONFIG 사용할 구성 경로를 가리키고 있지만 그 접근 방식이 마음에 들지 않습니다.

모든 새 셸 세션에서 설정하는 것은 번거롭지만 셸 프로필에서 설정하면 한 번에 하나의 컨텍스트만 액세스할 수 있습니다.

클러스터 프로비저닝 및 배포를 진정으로 자동화하기 위해 이 간단한 솔루션을 생각해 냈습니다.

포함시킨 후 kubeconfig 출력 값:

output "kubeconfig" {
value = linode_lke_cluster.[cluster-name].kubeconfig
sensitive = true
}

적용하고, kubeconfig.yaml 그런 다음 구문 분석하고 파일로 파이프할 수 있습니다.

terraform output kubeconfig | jq -r "@base64d" > ~/.kube/$PROVIDER.yaml

나중에 별칭의 변수로 사용:

alias $PROVIDER"ctl"="KUBECONFIG=~/.kube/$PROVIDER.yaml"

에 안전하게 추가할 수도 있습니다. .zshrc 또는 .bashrc Terraform의 구성이 변경되는 경우 덮어쓰기만 하면 됩니다.

그 컨텍스트를 사용하려면 skaffold또는 helm, env 변수도 해당 명령의 일부로 포함되어야 합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기