Использование OpenFaaS в Служба Azure Kubernetes (AKS)
OpenFaaS — это платформа, которая использует контейнеры для создания бессерверных функций. Как проект с открытым кодом она стала очень популярной в сообществе. В этом документе описано, как установить и использовать OpenFaas в кластере Службы Azure Kubernetes (AKS).
Подготовка к работе
- В этой статье предполагается базовое понимание концепций Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).
- наличие активной подписки Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.
- Вам нужен кластер AKS. Если у вас нет существующего кластера, его можно создать с помощью Azure CLI, Azure PowerShell или портал Azure.
- Необходимо установить интерфейс командной строки OpenFaaS. Дополнительные сведения о параметрах установки см. в документации по интерфейсу командной строки OpenFaaS.
Добавьте репозиторий с чартом Helm для OpenFaaS
Перейдите в Azure Cloud Shell.
Добавьте репозиторий диаграммы Helm OpenFaaS и обновите его до последней версии, используя следующие
helm
команды.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Развертывание OpenFaaS
Рекомендуется, чтобы OpenFaaS и функции OpenFaaS хранились в собственном пространстве имен Kubernetes.
Создайте пространство имен для системы OpenFaaS и функций с помощью
kubectl apply
команды.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Создайте пароль для портала пользовательского интерфейса OpenFaaS и REST API с помощью следующих команд. Диаграмма helm использует этот пароль для включения базовой проверки подлинности на шлюзе OpenFaaS, который предоставляется в Интернете через облако LoadBalancer.
# generate a random password PASSWORD=$(head -c 12 /dev/urandom | shasum| cut -d' ' -f1) kubectl -n openfaas create secret generic basic-auth \ --from-literal=basic-auth-user=admin \ --from-literal=basic-auth-password="$PASSWORD"
Внимание
Использование имени пользователя и пароля для проверки подлинности является небезопасным шаблоном. Если у вас есть корпоративная лицензия OpenFaaS, мы рекомендуем использовать управление удостоверениями и доступом (IAM) для OpenFaaS .
Получите значение пароля с помощью следующей
echo
команды.echo $PASSWORD
Разверните OpenFaaS в кластере AKS с помощью
helm upgrade
команды.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Выходные данные должны выглядеть примерно так:
NAME: openfaas LAST DEPLOYED: Tue Aug 29 08:26:11 2023 NAMESPACE: openfaas STATUS: deployed ... NOTES: To verify that openfaas has started, run: kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas" ...
Для получения доступа к шлюзу OpenFaaS создается общедоступный IP-адрес. Получите IP-адрес с помощью
kubectl get service
команды.kubectl get service -l component=gateway --namespace openfaas
Выходные данные должны выглядеть примерно так:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE gateway ClusterIP 10.0.156.194 <none> 8080/TCP 7m gateway-external LoadBalancer 10.0.28.18 52.186.64.52 8080:30800/TCP 7m
Проверьте систему OpenFaaS, перейдя по внешнему IP-адресу через порт 8080,
http://52.186.64.52:8080
в этом примере вам будет предложено войти в систему. Пользователь по умолчанию иadmin
пароль можно получить с помощьюecho $PASSWORD
.Задайте
$OPENFAAS_URL
URL-адрес внешнего IP-адреса через порт 8080 и войдите в систему с помощью Azure CLI, выполнив следующие команды.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Создание первой функции
Перейдите к системе OpenFaaS с помощью URL-адреса OpenFaaS.
Создайте функцию с помощью портала OpenFaas, выбрав "Развернуть новую функцию " и найдите Figlet.
Выберите функцию Figlet и нажмите кнопку "Развернуть".
Вызовите функцию с помощью следующей
curl
команды. Замените IP-адрес в следующем примере адресом шлюза OpenFaaS.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Выходные данные должны выглядеть примерно так:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Создание второй функции
Настройка экземпляра Azure Cosmos DB
Перейдите в Azure Cloud Shell.
Создайте новую группу ресурсов для экземпляра Azure Cosmos DB с помощью
az group create
команды.az group create --name serverless-backing --location eastus
Разверните экземпляр
MongoDB
Azure Cosmos DB типа с помощьюaz cosmosdb create
команды. Заменитеopenfaas-cosmos
собственным уникальным именем экземпляра.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Получите базу данных Azure Cosmos DB строка подключения и сохраните ее в переменной
az cosmosdb keys list
с помощью команды. Замените значение--resource-group
аргумента именем группы ресурсов и--name
аргумент именем экземпляра Azure Cosmos DB.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Заполните Azure Cosmos DB тестированными данными, создав файл с именем
plans.json
и скопируйте его в следующем json.{ "name" : "two_person", "friendlyName" : "Two Person Plan", "portionSize" : "1-2 Person", "mealsPerWeek" : "3 Unique meals per week", "price" : 72, "description" : "Our basic plan, delivering 3 meals per week, which will feed 1-2 people.", "__v" : 0 }
Создание функции
Установите средства MongoDB. В следующем примере команда устанавливает эти средства с помощью пивоварения. Дополнительные варианты установки см. в документации по MongoDB.
brew install mongodb
Загрузите экземпляр Azure Cosmos DB с данными с помощью средства mongoimport .
mongoimport --uri=$COSMOS -c plans < plans.json
Выходные данные должны выглядеть примерно так:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Создайте функцию с помощью
faas-cli deploy
команды. Обязательно обновите значение аргумента-g
с помощью адреса шлюза OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
После развертывания выходные данные должны выглядеть примерно так:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Проверьте функцию с помощью следующей
curl
команды. Обязательно обновите IP-адрес с помощью адреса шлюза OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-query
Выходные данные должны выглядеть примерно так:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Примечание.
Вы также можете протестировать функцию в пользовательском интерфейсе OpenFaaS:
Следующие шаги
Продолжайте учиться на семинаре OpenFaaS, который включает набор практических лабораторий, охватывающих такие темы, как создание собственного бота GitHub, использование секретов, просмотр метрик и автомасштабирование.
Azure Kubernetes Service