Первое, что нам понадобится, это клиент Open Faas «faas-cli», для которого мы можем выбрать на его странице различные двоичные файлы для установки CLI.
В моем случае, а в данном примере я буду делать это на Windows, для загрузки клиента первое, что нужно сделать, это получить последнюю версию cli:
$version = (Invoke-WebRequest "https://api.github.com/repos/openfaas/faas-cli/releases/latest" | ConvertFrom-Json)[0].tag_name
А теперь загружаем исполняемый файл в соответствии с последней версией:
(New-Object System.Net.WebClient).DownloadFile("https://github.com/openfaas/faas-cli/releases/download/$version/faas-cli.exe", "faas-cli.exe")
Мы можем добавить переменную окружения в путь PATH, чтобы иметь возможность получить к нему доступ, не вызывая весь путь, или использовать абсолютный путь исполняемого файла.
В предыдущем блоге я рассказывал об установке OpenFaas, в конце которой вы получаете пароль сервера, чтобы иметь возможность вводить
https://dev.to/jevillanueva/openfaas-con-k3s-en-un-servidor-arm64-2ib2
Этот пароль будет сохранен в файле для входа в систему под названием «password.txt» это способ выполнить вход в систему, затем подключиться, используя файл «password.txt», указывающий на шлюз openfaas
cat .password.txt | faas-cli.exe login -s --gateway https://faas.jevillanueva.dev
Он сгенерирует учетные данные для нашего пользователя, хранящиеся в папке «users/.openfaas».
Fass cli, позволяет нам управлять докер-образами для загрузки в openfaas, используя build, push, deploy и up.
Существует множество вариантов развертывания с использованием различных шаблонов.
Для этого руководства мы будем использовать python
faas-cli new echo —lang python3
Создайте структуру проекта, подобную этой
В файле handler.py находится запрос, который будет получен, когда вы будете в сети.
def handle(req):
"""handle a request to the function
Args:
req (str): request body
"""
return req
Мы изменим файл «echo.yml» с учетом характеристик нашего сервера openfaas.
#echo.yml
version: 1.0
provider:
name: openfaas
gateway: https://faas.jevillanueva.dev/ #Dirección del servidor openfaas
functions:
echo:
lang: python3
handler: ./echo
image: jevillanueva/echo-openfaas:latest #nombre de la imagen de docker
В этих примерах мы используем публичные образы для простоты использования и развертывания, используя Docker Hub в качестве реестра контейнеров.
Мы выполняем строительство
faas-cli build -f ./echo.yml
Загрузите в концентратор докеров
faas-cli push -f ./echo.yml
После компиляции и публикации образа на хабе docker мы можем поднять функцию на нашем сервере openfaas
Мы поднимаем функцию с помощью
faas-cli deploy -f ./echo.yml
Мы можем просмотреть со страницы администрирования функцию и вызвать ее.
Мы можем протестировать нашу конечную точку с помощью postman или curl
curl --request GET 'https://faas.jevillanueva.dev/function/echo' --header 'Content-Type: application/json' --data-raw '{"message": "Hola Mundo"}'
ЭКСТРА
Поскольку мы работаем под Windows на машине с 64-битной архитектурой, а сервер OpenFaas работает на ARM64, нам потребуется скомпилировать образы docker совместимым с ARM способом. Для этого мы будем использовать Buildx, который позволит нам сгенерировать образы другим способом, и QEMU для виртуализации среды ARM. Для этого мы должны сначала загрузить инструменты QEMU
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
После загрузки инструментов вы можете выполнить публикацию multiarch в docker hub
faas-cli publish -f ./echo.yml --platforms linux/arm64,linux/amd64
С реализованным проектом можно ознакомиться по адресу:
https://github.com/jevillanueva/echo-openfaas
https://hub.docker.com/r/jevillanueva/echo-openfaas
Используемые ресурсы:
https://docs.openfaas.com/cli/install/
https://docs.openfaas.com/cli/templates/
https://docs.docker.com/build/buildx/
https://www.qemu.org/
Посмотреть предыдущий пост о восстании сервера Open Faas вы можете в предыдущем посте
«OpenFaaS с K3S на сервере ARM64 (1/2)».
Вот моя личная страница jevillanueva.dev