我有Kubernetes在两个不同的环境中工作得很好,即在我的本地环境(MacBook运行minikube)和谷歌的容器引擎(GCE, Kubernetes在谷歌云上)。我使用MacBook/local环境来开发和测试我的YAML文件,然后,完成后,在GCE上尝试它们。
目前我需要单独使用每个环境:我需要在我的本地环境中编辑YAML文件,当准备就绪时,(git)将它们克隆到GCE环境中,然后使用/部署它们。这是一个有点麻烦的过程。
理想情况下,我想从我的Macbook使用kubectl来轻松地在本地minikube或GCE Kubernetes环境之间切换,并轻松地确定在哪里使用YAML文件。有没有一种简单的方法来切换上下文来做到这一点?
为不同的环境克隆YAML文件绝对是理想的。你要做的是模板化你的YAML文件——通过提取不同环境的参数。
当然,您可以使用一些模板引擎,分离YAML中的值,并为特定环境生成YAML。但如果你采用掌舵图,这是很容易做到的。要查看一些示例图表,请访问这个Github回购的稳定目录
以Wordpress图表为例,你可以在两个环境中使用两个不同的命令:
戴夫:
头盔安装——name dev-release——set \
wordpressUsername = dev_admin \
wordpressPassword = dev_password \
mariadb。mariadbRootPassword = dev_secretpassword \
稳定/ wordpress
不过,在CLI上传递这些值并不是必须的,可以将这些值存储在一个名为aptly values的文件中。Yml,你可以为不同的环境有不同的文件
在转换为Helm图表标准时,您需要做一些工作,但这些努力是值得的。
TL;DR:我创建了一个GUI来通过AppleScript切换Kubernetes上下文。我通过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
为不同的环境克隆YAML文件绝对是理想的。你要做的是模板化你的YAML文件——通过提取不同环境的参数。
当然,您可以使用一些模板引擎,分离YAML中的值,并为特定环境生成YAML。但如果你采用掌舵图,这是很容易做到的。要查看一些示例图表,请访问这个Github回购的稳定目录
以Wordpress图表为例,你可以在两个环境中使用两个不同的命令:
戴夫:
头盔安装——name dev-release——set \
wordpressUsername = dev_admin \
wordpressPassword = dev_password \
mariadb。mariadbRootPassword = dev_secretpassword \
稳定/ wordpress
不过,在CLI上传递这些值并不是必须的,可以将这些值存储在一个名为aptly values的文件中。Yml,你可以为不同的环境有不同的文件
在转换为Helm图表标准时,您需要做一些工作,但这些努力是值得的。
如果你正在寻找一种在不同上下文之间切换的简单方法,也许这将会有所帮助。
我从前面提到的kubectx和kswitch脚本中得到了灵感,我可以将它们推荐给大多数用例。它们帮助解决切换任务,但在~/.kube/config的一些更大或更少的标准配置上对我造成了破坏。所以我创建了一个sys-exec调用包装器和一个kubectl的简写。
如果你不带参数地调用k,你会看到一个被拦截的切换上下文的提示。
Switch kubectl to a different context/cluster/namespace.
Found following options to select from:
>>> context: [1] franz
>>> context: [2] gke_foo_us-central1-a_live-v1
>>> context: [3] minikube
--> new num [?/q]:
更进一步,k继续作为一个简写。以下是等价的:
kubectl get pods --all-namespaces
k get pods -A
k p -A