检查我正在部署到正确的kubernetes集群的脚本

时间:2018-12-18 20:18:55

标签: kubernetes kubectl

我有一个脚本将我的应用程序部署到我的kubernetes集群。但是,如果我当前的kubectl上下文指向错误的集群,那么我很容易最终将应用程序部署到我不打算部署到的集群中。 (从脚本内部)检查要部署到正确集群的一种好方法是什么?

我真的不想硬编码一个特定的kubectl上下文名称,因为我们团队中的不同开发人员对于如何命名其kubectl上下文有不同的约定。

相反,我想要更像if $(kubectl get cluster-name) != "expected-clsuter-name" then error的东西。

2 个答案:

答案 0 :(得分:2)

#!/bin/bash

if [ $(kubectl config current-context) != "your-cluster-name" ]
then
    echo "Do some error!!!"
    return
fi

echo "Do some kubectl command"

上面的脚本获取群集名称并与your-desired-cluster名称匹配。如果不匹配,则给出错误。否则,运行desire kubectl命令。

答案 1 :(得分:1)

对于每个集群,运行一次kubectl cluster-info即可看到what the IP/host for master is-这对于集群来说应该是稳定的,并且不会随kubectl上下文中的名称而有所不同(开发人员的设置可能有所不同)。然后使用export MASTERA=<HOST/IP>在脚本中捕获该脚本,该脚本是群集A的主脚本。然后脚本可以执行以下操作:

kubectl cluster-info | grep -q $MASTERA && echo 'on MASTERA'

use an if-else

if kubectl cluster-info | grep -q $MASTERA; then
   echo 'on $MASTERA'
else
  exit 1
fi