Создание функции Python для развертывания в OpenFaas (2/2)

Первое, что нам понадобится, это клиент 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

Оцените статью
devanswers.ru
Добавить комментарий