Faasd — не удается извлечь изображение из частного реестра

#docker #serverless #containerd #faas #openfaas

#docker #бессерверный #контейнер #faas #openfaas

Вопрос:

У меня есть приложение, которое использует OpenFaaS.

В частности, я использую faasd, потому что функция будет работать на устройствах с низкой пропускной способностью. У меня есть частный реестр, в котором присутствует изображение функции ‘X’. Я хочу извлечь это изображение из faasd для его развертывания и выполнения, но я столкнулся с проблемой: похоже, что я не прошел проверку подлинности при попытке выполнить действие, но я правильно передаю токен registryAuth.

Здесь есть пример того, что я делаю (следуя этому https://ericstoekl.github.io/faas/operations/managing-images/#deploy-functions-with-private-registries-credentials)

Публикация

 <ip_address>:8080/system/functions
  

Заголовки:

 {
"Authorization": "mytoken"
}
  

Тело:

 {
    "service": "functionName",
    "image": "<registry_ip_address>/functions/functionName:<version>",
    "envProcess": "/.../myprocess",
    "registryAuth": <base64 token obtained from 'user:password'>,
    "secrets": [
        "mysecret"
    ]
}
  

Я подтверждаю, что все параметры верны, и я получаю эту ошибку:

«невозможно извлечь изображение <registry_ip_address>/functions/functionName:: не удается извлечь: не удалось разрешить ссылку «<registry_ip_address>/functions/functionName:»: не указана область для проверки подлинности токена»

Реестр работает хорошо, потому что, если я попытаюсь загрузить изображение классическим способом с помощью docker, я смогу извлечь изображение.

Заранее благодарю вас!

Ответ №1:

Для faasd вам необходимо создать файл учетных данных.

Необходимо скопировать ваш обычный файл ~/.docker/config.json /var/lib/faasd/.docker/config.json .

https://github.com/openfaas/faasd#a-note-on-private-repos—registries

Примечание о частных репозиториях / реестрах

Чтобы использовать частные репозитории изображений, ~/.docker/config.json необходимо скопировать в /var/lib/faasd/.docker/config.json.

Если вы хотите настроить свой собственный частный реестр, ознакомьтесь с этим руководством.

Помните, что запуск docker login на macOS и Windows может создать пустой файл с вашими учетными данными, хранящимися в системном помощнике.

В качестве альтернативы вы можете использовать registry-login команду из OpenFaaS Cloud bootstrap tool (ofc-bootstrap):

 curl -sLSf https://raw.githubusercontent.com/openfaas-incubator/ofc-bootstrap/master/get.sh | sudo sh

ofc-bootstrap registry-login --username <your-registry-username> --password-stdin
# (then enter your password and hit return)
  

Файл будет создан в ./credentials/

Комментарии:

1. Спасибо! Мне это очень помогло 🙂 Похоже, предоставленная вами ссылка больше не содержит информации.

2. @Klaus Я добавил содержимое из исходного документа, чтобы оно оставалось в стеке в будущем. Теперь, если я тоже смогу это понять…