在jenkins作业A和B中,这两个作业都在同一台机器上执行到两个不同的集群。当";kubectl配置使用上下文";在两个作业中都输入了命令。他们犯了以下错误。如何处理。
看起来使用上下文会更改文件,同时从两个作业执行会导致问题。
工作A:
- kubectl配置使用上下文arn:aws:eks:us-west-2:XYZXYZXYZ:cluster/ABC错误:加载配置文件时出错/home/ubuntu/.kube/config":yaml:第29行:找不到预期的":">
作业B:
- kubectl配置使用上下文arn:aws:eks:us-west-2:XYZXYZXYZ:cluster/CBD错误:加载配置文件时出错/home/ubuntu/.kube/config":yaml:第29行:找不到预期的":">
您不需要发出"使用上下文";(是的,确实写入$KUBECONFIG
(--kubectl有--context
参数,允许您指定每次调用要使用的上下文:
# job A
$ kubectl --context "arn:aws:eks:us-west-2:XYZXYZXYZ:cluster/ABC" get nodes
# job B
$ kubectl --context "arn:aws:eks:us-west-2:XYZXYZXYZ:cluster/CBD" get nodes
然而,如果您有很多这样的命令,那可能会变得乏味。在这种情况下,只需复制原始$KUBECONFIG
,然后在作业中设置KUBECONFIG
env var以指向本地的、有效的一次性的:
cp ${KUBECONFIG:-$HOME/.kube/config} job-X.kubeconfig
export KUBECONFIG=$PWD/job-X.kubeconfig
# some copies of kubectl whine if the permissions are too broad
chmod 0600 $KUBECONFIG
# now your use-context is safe to perform
kubectl config use-context "arn:aws:eks:us-west-2:XYZXYZXYZ:cluster/ABC"
kubectl get nodes