AWS ECR PULL нет базовых учетных данных

Я развертываю кластер Azure K8s с Terraform, а образ размещен в Amazon ECR. Развертывание завершается ошибкой при получении образа из ECR со следующей ошибкой:

Failed to pull image "tooot.eu-west-1.amazonaws.com/app-t:latest": rpc error: code = Unknown desc = Error response from daemon: Get https://tooot.eu-west-1.amazonaws.com/v2/app-t/manifests/latest: no basic auth credentials

Ниже приведен мой ресурс kuberentes в шаблоне terraform

  metadata {
    name = "terraform-app-deployment-example"
    labels {
      test = "app-deployment"
    }
  }

  spec {
    replicas = 6

    selector {
      match_labels {
        test = "app-deployment"
      }
    }

    template {
      metadata {
        labels {
          test = "app-deployment"
        }
      }

      spec {
        container {
          image = "toot.eu-west-1.amazonaws.com/app-t:latest"
          name  = "app"
        }
      }
    }
  }
}`

person Renm    schedule 14.03.2019    source источник
comment
См. Здесь stackoverflow.com/questions/49654457/   -  person arcseldon    schedule 09.03.2020


Ответы (2)


Обычно вам не хватает учетных данных для получения изображений из AWS.

Вам необходимо создать regcred, который содержит учетные данные для входа:

https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/

После этого вам нужно добавить regcred в вашу конфигурацию terraform. Я не работал с шаблонами, но в спецификации развертывания вы должны добавить поле с именем imagePullSecrets.

https://www.terraform.io/docs/providers/kubernetes/r/deployment.html

Описание imagePullSecrets:

image_pull_secrets - (Необязательно) ImagePullSecrets - это необязательный список ссылок на секреты в том же пространстве имен для использования для извлечения любого из изображений, используемых этим PodSpec. Если указано, эти секреты будут переданы отдельным реализациям съемника для использования. Например, в случае с докером учитываются только секреты типа DockerConfig.

person Leandro Donizetti Soares    schedule 14.03.2019
comment
Спасибо, я узнаю об этом больше сегодня, думаю, это приведет меня в правильное русло - person Renm; 15.03.2019

в кластере kubernetes вы должны добавить секрет, который будет использоваться для входа в ECR во время извлечения изображения

ECR управлял токеном для загрузки и извлечения изображений. Токен действителен 12 часов

Пожалуйста, проверьте токен в ECR

Я написал сценарий оболочки для этого, вы также можете проверить это

он получает токен от aws ECR, удаляя старый секрет в кластере кубернетов и снова создавая новый секрет в кластере кубернетов. какой секрет будет использоваться для извлечения изображения из aws ecr.

поскольку я проверяю, нет ли секрета в опции спецификации контейнера

вы можете узнать больше здесь:

https://github.com/harsh4870/ECR-Token-automation/blob/master/aws-token.sh

person Harsh Manvar    schedule 14.03.2019
comment
Ух ты, большое спасибо за скрипт Harsh !, но как мне его запустить? Я попытался аутентифицировать себя, запустив $ (aws ecr get-login --no-include-email --region eu-west-1) и вывод этой команды, однако у меня все еще есть та же проблема, когда я запускаю kubectl получить стручки - смотри, я получаю ImagePullBackOff и ErrImagePull kubelet, aks-default-32086448-1 Не удалось получить изображение toot.dkr.ecr.eu-west-1.amazonaws.com/app-t:latest: ошибка rpc: code = Неизвестный desc = Ошибка, ответ от демона: Get toot.dkr.ecr.eu-west-1.amazonaws.com/v2/app-t/manifests/latest: нет базовых учетных данных - person Renm; 14.03.2019
comment
после запуска aws ecr get-login --no-include-email --region eu-west-1 вы получите одну команду docker в качестве вывода с большим токеном ... в вашем случае это проблема с генерацией токена в кластере kubernetes ... - person Harsh Manvar; 15.03.2019
comment
вы редактировали файл manbifest ??? где там конфиг спек-контейнера ??? вы должны добавить туда секретное имя..secret, в котором будет храниться токен ECR - person Harsh Manvar; 15.03.2019
comment
Ваш сценарий является копией этого - stackoverflow.com/a/50502171/1882064 - person arcseldon; 09.03.2020
comment
@arcseldon Я использовал его задолго до этого, также внес некоторые изменения. Извините, я не проверил, доступен ли ответ на Так уже. - person Harsh Manvar; 10.03.2020
comment
@HarshManvar - совсем нет, хорошо, что вы поделитесь! В конце концов, мы все постоянно копируем друг друга. Ссылка отвечает на вопрос, который задал и Ренм. - person arcseldon; 10.03.2020