У меня проблемы с настройкой Spinnaker с доступом ECR.
Справочная информация: я установил спинакер с помощью helm на кластер EKS и подтвердил, что кластер имеет необходимые разрешения ECR (путем ручного запуска команд ECR из модуля clouddriver). Я следую приведенным здесь инструкциям, чтобы настроить Spinnaker + ECR: https://www.spinnaker.io/setup/install/providers/docker-registry/
Проблема. Когда я бегаю:
hal config provider docker-registry account add my-ecr-registry \
--address $ADDRESS \
--username AWS \
--password-command "aws --region us-west-2 ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d | sed 's/^AWS://'"
Получаю следующий результат:
+ Get current deployment
Success
- Add the some-ecr-registry account
Failure
Problems in default.provider.dockerRegistry.some-ecr-registry:
- WARNING Resolved Password was empty, missing dependencies for
running password command?
- WARNING You have a supplied a username but no password.
! ERROR Unable to fetch tags from the docker repository: code, 400
Bad Request
? Can the provided user access this repository?
- WARNING None of your supplied repositories contain any tags.
Spinnaker will not be able to deploy any docker images.
? Push some images to your registry.
Problems in halconfig:
- WARNING There is a newer version of Halyard available (1.28.0),
please update when possible
? Run 'sudo apt-get update && sudo apt-get install
spinnaker-halyard -y' to upgrade
- Failed to add account some-ecr-registry for provider
dockerRegistry.
- Я подтвердил, что aws-cli установлен на модуле clouddriver. И я подтвердил, что могу вводить пароль напрямую из модуля облачного драйвера, и он успешно возвращает токен.
- Я также подтвердил, что если я вручную сгенерирую токен ECR и
run hal config provider docker-registry account add my-ecr-registry --address $ADDRESS --username AWS --password-command "echo $MANUALLY_GENERATED_TOKEN"
все будет работать нормально. Итак, есть что-то специфическое для команды пароля, которая работает неправильно, и я не уверен, как это отладить. - Еще одно странное поведение: если я упрощу команду пароля до:
hal config provider docker-registry account add some-ecr-registry --address $ADDRESS --username AWS --repositories code --password-command "aws --region us-west-2 ecr get-authorization-token"
, я получу дополнительный фрагмент вывода, который говорит"- WARNING Password command returned non 0 return code stderr/stdout was:bash: aws: command not found"
. Этот вывод появляется только для этой упрощенной команды.
Мы будем очень благодарны за любые советы о том, как отладить это.
aws --region us-west-2 ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d | sed 's/^AWS://
, я бы просто отправил ее в переменнуюPASSWORD="aws --region us-west-2 ecr get-authorization-token --output text --query 'authorizationData[].authorizationToken' | base64 -d | sed 's/^AWS://"
и использовал бы как вrun hal config provider docker-registry account add my-ecr-registry --address $ADDRESS --username AWS --password-command "echo $PASSWORD"
. - person Mark Watney   schedule 25.11.2019