Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
OpenFaaS — это платформа, которая использует контейнеры для создания бессерверных функций. Как проект с открытым кодом она стала очень популярной в сообществе. В этом документе описано, как установить и использовать OpenFaas в кластере Службы Azure Kubernetes (AKS).
Перед началом
- В этой статье предполагается базовое понимание концепций Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).
- Вам нужна активная подписка Azure. Если у вас еще нет учетной записи, создайте бесплатную учетную запись прежде чем начать.
- Вам нужен кластер AKS. Если у вас нет существующего кластера, его можно создать с помощью Azure CLI, Azure PowerShell или портал Azure.
- Необходимо установить интерфейс командной строки OpenFaaS. Для параметров установки см. документацию по интерфейсу командной строки OpenFaaS.
Добавьте репозиторий Helm chart для 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 chart использует этот пароль для включения базовой аутентификации на шлюзе OpenFaaS, который открыт в Интернет через облачный балансировщик нагрузки.
# 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_URLURL-адрес внешнего 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Разверните экземпляр Azure Cosmos DB типа
MongoDBс помощью команды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. В следующем примере команда устанавливает эти средства с помощью Homebrew. Дополнительные варианты установки см. в документации по 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, использование секретов, просмотр метрик и автомасштабирование.