我的带有kubectl
的bash脚本在更改上下文时有时会引起麻烦。运行脚本后,用户可能会意外地在错误的集群中进行更改。当涉及到在脚本中处理上下文时,我想探究一下您的智慧。
脚本是否可以保存旧上下文,并在完成后恢复旧上下文?(我曾想过运行kubectl config get-contexts
查找当前上下文,并在脚本完成后将其设置回来。但如果用户没有保存上下文,这可能会失败(
我正在考虑的另一种方法是保存KUBECONFIG env-var的值,将其更改为临时文件,获取凭据,并在脚本完成时恢复该值。
在我重新发明轮子之前,我想看看电力用户是如何处理这种情况的?你能分享你的想法吗?
通常,我认为隐式依赖全局状态是有问题的,而全局状态可能会被其他进程和用户任意更新。
即使有多个配置文件,使用哪个集群、用户、名称空间和上下文仍然是不透明的。
对于单个用户来说,kubectl
的配置文件提供了不必为每个命令重新键入标志的便利,我认为这应该是它的唯一用途。
在脚本中,我认为最好(更清晰|自文档化(是显式的,每次都包括--context
或--cluster
、--user
(可能还有--namespace
(。
也就是说,使用变量而不是硬编码值也是可取的,因此仍有出错的空间。
kubectl delete deployment/primary-service
# vs
KUBECONFIG=sam-monday-morning-config.yaml
kubectl delete deplopyment/primary-service
# vs
kubectl delete deployment/primary-service
--cluster=test-cluster
--namespace=test-namespace
--user=test-user