Есть ли способ запустить kubectl в «сеансе» так, чтобы он получал свой kubeconfig из локального каталога, а не из ~/.kubeconfig
?
Пример использования
Учитывая абстрактный характер вопроса, стоит описать, почему это может быть полезным в качестве примера. Если у кого-то было приложение, назовите его «a», и у него было 4 кластера kubernetes, каждый из которых запускал a, у них может быть простой сценарий, который выполнял некоторые действия kubectl
в каждом кластере, чтобы протестировать новое развертывание A, например. Они могут захотеть развернуть приложение и посмотреть, сколько его копий было автоматически масштабировано в каждом кластере впоследствии.
Пример решения
Как и в git, возможно, может быть «попытаться использовать локальный файл kubeconfig, если вы можете его найти» в качестве глобального параметра в стиле git:
kubectl global set-precedence local-kubectl
Затем в одном терминале:
cd firstcluster
cat << EOF > kubeconfig
firstcluster
...
EOF
kubectl get pods
p4
Затем в другом терминале:
cd secondcluster/
cat << EOF > kubeconfig
secondcluster
...
EOF
kubectl get pods
p1
p2
p3
Таким образом, те же самые команды kubectl (без необходимости устанавливать контекст) фактически работают с новыми кластерами в зависимости от каталога, в котором вы находитесь.
Некоторые идеи для решения
Одна идея, которая у меня была для этого, заключалась в том, чтобы написать плагин kubectl-context, который каким-то образом заставлял kubectl всегда проверять локальный kubeconfig, устанавливая контекст за кулисами, если это было возможно перед запуском, к контексту в глобальной конфигурации, который соответствует имени каталога.
Другая идея, которую я придерживался в этом отношении, заключается в создании разных пользователей, каждый из которых имел разные домашние файлы kubeconfig.
И, конечно, используя что-то вроде virtualenv, вы можете сделать что-то, где файлы kubeconfig имеют свое собственное значение.
Заключительная мысль
В конечном счете, я думаю, что цель здесь состоит в том, чтобы опровергнуть идею о том, что файл ~ / .kubeconfig имеет какое-то конкретное значение, и вместо этого посмотреть на способы использования многих файлов kubeconfig на одной машине, однако не только с помощью * Вариант 1040 *, а точнее так, чтобы состояние сохранялось в локальном порядке в каталоге.