#amazon-web-services #shell #kubernetes #amazon-eks
Вопрос:
Я пытаюсь установить текущий контекст кластера с помощью сценария оболочки.
#!/usr/bin/env bash
#Set Parameters
echo ${cluster_arn}
sh "aws eks update-kubeconfig --name abc-eks-cluster --role-arn ${cluster_arn} --alias abc-eks-cluster"
export k8s_host="$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")"
Однако приведенная выше команда выдает ошибку:
sh: 0: Не удается открыть обновление aws eks-kubeconfig —имя abc-eks-кластера —роль-arn arn:aws:iam::4399999999873:роль/abc-eks-кластер-администратор кластера —псевдоним abc-eks-кластер
Может ли кто-нибудь подсказать мне, как решить проблему и как я могу установить текущий контекст, потому что команда k8_host выдает еще одну ошибку, что контекст не установлен.
Комментарии:
1. кто-то сделал для этого инструмент, просто используйте напрямую: github.com/ahmetb/kubectx
Ответ №1:
Я понятия не имею, почему вы даже участвуете sh
в качестве субшеллы, когда вы уже находитесь в сценарии оболочки, но
Может кто-нибудь подсказать мне … в чем проблема
Вы предоставили всю команду sh
, но не смогли использовать -c
, которая сообщает, что первый аргумент является встроенным фрагментом оболочки; в противном случае sh
ожидается, что первый аргумент, не являющийся опцией, является файлом, поэтому он говорит, что не может открыть файл с таким ужасающе длинным именем
Есть два способа выбраться из этой неразберихи: использовать -c
или прекратить попытки использовать подоболочку
sh -c "aws eks update-kubeconfig --name abc-eks-cluster --role-arn ${cluster_arn} --alias abc-eks-cluster"
или:
aws eks update-kubeconfig --name abc-eks-cluster --role-arn ${cluster_arn} --alias abc-eks-cluster