我有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图表标准时,您需要做一些工作,但这些努力是值得的。
标准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/
是的,我想这就是你要问的问题。要查看当前配置,请使用kubectl配置视图。Kubectl从以下位置加载并合并配置(按顺序)
--kubeconfig=/path/to/.kube/config command line flag
KUBECONFIG=/path/to/.kube/config env variable
$HOME/.kube/config - The DEFAULT
我使用——kubecconfig,因为我经常在多个集群之间切换。它有点麻烦,但它工作得很好。
更多信息请看这些。
https://kubernetes.io/docs/tasks/administer-cluster/share-configuration/和https://kubernetes.io/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/