Развертывание в контейнерах IBM без CLI cf/ice

В настоящее время у меня есть рабочий процесс, который выглядит следующим образом: Bitbucket -> Wercker.

Веркер правильно создает мое приложение, но когда дело доходит до развертывания, я теряюсь. Я пытаюсь выполнить развертывание в своем реестре IBM Containers в Bluemix (недавно вышла из бета-версии). Запуск docker login registry.ng.bluemix.net с учетными данными моей учетной записи IBM возвращает 401: неправильные учетные данные на моем локальном компьютере (boot2docker в OSX). То же самое происходит с Wercker на моем этапе развертывания. Вот мой шаг развертывания:

deploy:
  box:
    id: node
    tag: 0.12.6-slim
  steps:
    - internal/docker-push:
            username: $USERNAME
            password: $PASSWORD
            tag: main
            entrypoint: node bundle/main.js
            repository: <my namespace/<my container name> (removed for this post)
            registry: registry.ng.bluemix.net

Как видите, я передал имя пользователя и пароль в качестве переменных среды в соответствии с Wercker Docs (и я проверил, что они передаются правильно).

По сути: как отправить контейнеры в реестр IBM БЕЗ использования интерфейса командной строки ice/cf? У меня такое чувство, что я упускаю что-то очевидное. Я просто не могу найти его.


person Luke Adams    schedule 08.07.2015    source источник


Ответы (4)


Вам нужно использовать либо плагин Containers для cf, либо инструмент ICE для входа в систему.

Документация

Плагин Cloud Foundry: cf ic login ICE: ice login

Можете ли вы создать собственный скрипт, который может сначала войти в систему? Если в среде уже есть cf с расширением container:

- script:
    name: Custom login for Bluemix Containers
    code: cf login -u <username> -p <password> -o <org> -s <space>

Извините за мой веркер ньюб.

person Ram Vennam    schedule 08.07.2015
comment
Я не думаю, что Wercker читает какие-либо конфигурации докеров, созданные в среде сборки (которая сама работает в докере), но я сообщу, когда у меня будет шанс. - person Luke Adams; 08.07.2015
comment
Да вроде. ice использует cf для захвата токена, затем пытается инициализировать докер (не работает на Wercker). cf сохранит токен на диск (вне buildroot ;) ), чтобы вы могли извлечь его и установить в качестве переменной среды для отправки. - person Luke Adams; 10.07.2015
comment
И спасибо - вы начали меня на правильном пути. Я даже не подумал попробовать прямо cf в среде развертывания. - person Luke Adams; 10.07.2015

Проблема в том, что для аутентификации в реестре используется токен, а не ваш идентификатор пользователя и пароль. ice login и cf ic login позаботятся об этом, но, к сожалению, прямой docker login не сработает.

Некоторые скрипты для инициализации, сборки и очистки образов также доступны здесь: https://github.com/Osthanes/docker_builder< /а>. Они используются в конвейере доставки DevOps Services, который, вероятно, похож на то, что вы создаете.

person Robbie Minshall    schedule 09.07.2015

Оказывается: вполне возможно.

В основном:

  • Установите клиент CF
  • cf login -a https://api.ng.bluemix.net
  • Извлечь токен из ~/.cf/config.json (текст после носителя в AccessToken + "|" + OrganizationFields.Guid

Это зависит от того, что вы хотите с этим делать. У меня есть очень подробная статья здесь на Github. Вы можете использовать токен в качестве пароля, передав «носитель» в качестве имени пользователя.

@mods: этого достаточно для ссылки на другой сайт? Я очень не люблю дублировать такие вещи...

person Luke Adams    schedule 10.07.2015

Теперь вы можете генерировать токены для доступа к IBM Bluemix Container Registry с помощью подключаемого модуля container-registry для команды bx.

Эти токены могут быть read-only или read-write и либо бессрочными (если они не отозваны), либо истекают через 24 часа.

Токены можно использовать напрямую с docker login.

Ознакомьтесь с документацией здесь

person timgp    schedule 16.06.2017