Обновите контекст куба с помощью скрипта оболочки

#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