저는 Kubernetes가 두 가지 환경, 즉 내 로컬 환경 (minikube를 실행하는 MacBook)과 Google의 Container Engine (GCE, Kubernetes on Google Cloud)에서 잘 작동합니다. MacBook / 로컬 환경을 사용하여 YAML 파일을 개발하고 테스트 한 다음 완료되면 GCE에서 시도합니다.
현재 각 환경에서 개별적으로 작업해야합니다. 로컬 환경에서 YAML 파일을 편집하고 준비가되면 (git) GCE 환경에 복제 한 다음 사용 / 배포해야합니다. 이것은 다소 번거로운 과정입니다.
이상적으로는 Macbook의 kubectl을 사용하여 로컬 minikube 또는 GCE Kubernetes 환경 사이를 쉽게 전환하고 YAML 파일이 사용되는 위치를 쉽게 결정하고 싶습니다. 이를 위해 컨텍스트를 전환하는 간단한 방법이 있습니까?
답변
다음을 사용하여 로컬 (minikube)에서 gcloud로 전환하고 다시 돌아갈 수 있습니다.
kubectl config use-context CONTEXT_NAME
모든 컨텍스트를 나열하려면 :
kubectl config get-contexts
로컬 및 gcloud에 대해 서로 다른 환경을 만들고 별도의 yaml 파일에 넣을 수 있습니다.
답변
표준 kubectl 명령어에 대한 더 빠른 단축키는 kubectx 를 사용하는 것입니다 .
- 컨텍스트 나열 :
kubectx
- 에 해당
kubectl config get-contexts
- 에 해당
- 컨텍스트 전환 (foo로) :
kubectx foo
- 에 해당
kubectl config use-context foo
- 에 해당
macOS에 설치하려면 : brew install kubectx
kubectx 패키지에는 또한라는 네임 스페이스를 전환하기위한 유사한 도구가 포함되어 kubens
있습니다.
이 두 가지는 여러 컨텍스트와 네임 스페이스에서 정기적으로 작업하는 경우 매우 편리합니다.
더 많은 정보 : https://ahmet.im/blog/kubectx/
답변
Mac 용 GUI 기반 솔루션을 찾고 있고 Docker Desktop이 설치되어있는 경우 Docker 메뉴 모음 아이콘을 사용할 수 있습니다. 여기에서 kubeconfig에있는 모든 컨텍스트가있는 “Kubernetes”메뉴를 찾을 수 있으며 이들 사이를 쉽게 전환 할 수 있습니다.
답변
최신 2020 답변이 여기에 있습니다.
kubectl 컨텍스트간에 전환하는 간단한 방법,
kubectl top nodes **--context=**context01name
kubectl top nodes --context=context02name
context01name = gke _ $ {GOOGLE_CLOUD_PROJECT} _us-central1-a_standard-cluster-1과 같이 컨텍스트 이름을 env로 저장할 수도 있습니다.
답변
요약 : AppleScript를 통해 Kubernetes 컨텍스트를 전환하는 GUI를 만들었습니다. shift-cmd-x를 통해 활성화합니다.
나도 같은 문제가 있었다. 명령 줄에서 컨텍스트를 전환하는 것은 고통 스러웠습니다. FastScripts를 사용하여 키 콤보 (shift-cmd-x)를 설정하여 다음 AppleScript ($ (HOME) / Library / Scripts / Applications / Terminal 디렉터리에 있음)를 실행했습니다.
use AppleScript version "2.4" -- Yosemite (10.10) or later
use scripting additions
do shell script "/usr/local/bin/kubectl config current-context"
set curcontext to result
do shell script "/usr/local/bin/kubectl config get-contexts -o name"
set contexts to paragraphs of result
choose from list contexts with prompt "Select Context:" with title "K8s Context Selector" default items {curcontext}
set scriptArguments to item 1 of result
do shell script "/usr/local/bin/kubectl config use-context " & scriptArguments
display dialog "Switched to " & scriptArguments buttons {"ok"} default button 1
답변
나는 이것을 반복해서 입력하는 것이 지겨워서 컨텍스트를 전환하는 간단한 bash 유틸리티를 작성했습니다.
https://github.com/josefkorbel/kube-switch에서 찾을 수 있습니다.
답변
다른 환경의 저장소에서 YAML 파일을 복제하는 것은 확실히 이상적입니다. 해야 할 일은 환경마다 다른 매개 변수를 추출하여 YAML 파일을 템플릿 화하는 것입니다.
물론 일부 템플릿 엔진을 사용하고 YAML에서 값을 분리하고 특정 환경에 대한 YAML을 생성 할 수 있습니다. 그러나 Helm Charts 를 채택하면 쉽게 할 수 있습니다 . 샘플 차트를 살펴 보려면이 Github 저장소의 stable 디렉토리로 이동하세요.
WordPress 차트 의 예를 보려면 두 가지 환경에 대해 두 가지 다른 명령을 사용할 수 있습니다.
Dev의 경우 :
helm install --name dev-release --set \
wordpressUsername=dev_admin, \
wordpressPassword=dev_password, \
mariadb.mariadbRootPassword=dev_secretpassword \
stable/wordpress
CLI에서이 값을 전달할 필요는 없지만 aptly라는 파일에 값을 저장할 values.yml
수 있으며 환경에 따라 다른 파일을 가질 수 있습니다.
Helm 차트 표준으로 변환하려면 약간의 작업이 필요하지만 그만한 가치가 있습니다.
