Как отправить образ OpenFaaS в реестр Minishift/Openshift Docker?

Я пытаюсь развернуть локально написанную функцию OpenFaaS в Minishift. Мой файл YAML:

provider:
  name: faas
  gateway: http://gateway-openfaas.10.10.80.33.nip.io

functions:
  test:
  lang: python
  handler: ./test
  image: 172.30.1.1:5000/test

172.30.1.1:5000 — результат вызова

minishift openshift registry

Когда я получаю доступ к пользовательскому интерфейсу OpenFaaS через консоль Openshift, я могу правильно развертывать функции оттуда. Я также вижу там функцию, которую я пытался развернуть локально, но образа Docker нет в реестре Minishift Docker. Чтобы отправить туда свое изображение, я пытаюсь использовать команду:

faas-cli push -f ./test.yml

К сожалению, я получаю следующую ошибку:

PS D:\projects> faas-cli push -f ./test.yml
[0] > Pushing test.
The push refers to a repository [172.30.1.1:5000/test]
8124325a272a: Preparing
2fbb584cb870: Preparing
e6dd715c8997: Preparing
ac20ff3419a9: Preparing
18adf8f88cf9: Preparing
ab495c1b9bd4: Waiting
09c56bd3ad6c: Waiting
a291b1700920: Waiting
8a65d1376e5b: Waiting
155a0aa5c33a: Waiting
8984417f4638: Waiting
a7d53ea16e81: Waiting
e53f74215d12: Waiting
unauthorized: repository name "test" invalid: it must be of the format 
<project>/<name>
2018/03/22 11:30:53 ERROR - Could not execute command: [docker push 
172.30.1.1:5000/test]

Что я делаю неправильно? Любая помощь приветствуется.


person Owen    schedule 22.03.2018    source источник


Ответы (2)


Похоже вам нужно имя проекта перед именем вашего изображения, например openshift в следующем примере

$ docker push 172.30.124.220:5000/openshift/busybox
...
cf2616975b4a: Image successfully pushed
Digest: sha256:3662dd821983bc4326bee12caec61367e7fb6f6a3ee547cbaff98f77403cab55

Попробуйте изменить раздел изображения в файле test.yml на 172.30.1.1:5000/openfaas/test или аналогичный.

Вам также может понадобиться получить токен доступа и использовать его с docker login, как описано в приведенной выше ссылке, если вы еще этого не сделали:

$ oc whoami -t
$ docker login -u <username> -e <any_email_address> -p <token_value> <registry_service_host:port>
person codemonkey    schedule 22.03.2018
comment
Добавление имени проекта к пути в файле YAML было правильным решением. Спасибо! - person Owen; 23.03.2018
comment
Превосходно. Без проблем. - person codemonkey; 23.03.2018

@codemonkey прав. Нужно включить имя проекта как часть любого образа приложения.

Кроме того, я бы посоветовал вам попробовать $(minishift openshift реестр), так как если вы дадите вам IP-адрес реестра: порт.

Подробнее см. Подробнее https://docs.openshift.org/latest/minishift/openshift/openshift-docker-registry.html.

person brg    schedule 26.03.2018