Usar o OpenFaaS no Serviço Kubernetes do Azure (AKS)
OpenFaaS é uma estrutura que usa contêineres para construir funções sem servidor. Como um projeto de código aberto, ganhou adoção em larga escala dentro da comunidade. Este documento detalha a instalação e o uso do OpenFaas em um cluster do Serviço Kubernetes do Azure (AKS).
Antes de começar
- Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos principais do Kubernetes para o Serviço Kubernetes do Azure (AKS).
- Você precisa de uma assinatura ativa do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
- Você precisa de um cluster AKS. Se você não tiver um cluster existente, poderá criar um usando a CLI do Azure, o Azure PowerShell ou o portal do Azure.
- Você precisa instalar a CLI do OpenFaaS. Para obter opções de instalação, consulte a documentação da CLI do OpenFaaS.
Adicionar o repositório de gráficos de leme OpenFaaS
Navegue até Azure Cloud Shell.
Adicione o repositório de gráficos de leme OpenFaaS e atualize para a versão mais recente usando os seguintes
helm
comandos.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Implantar o OpenFaaS
Como uma boa prática, as funções OpenFaaS e OpenFaaS devem ser armazenadas em seu próprio namespace Kubernetes.
Crie um namespace para o sistema OpenFaaS e funções usando o
kubectl apply
comando.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml
Gere uma senha para o OpenFaaS UI Portal e REST API usando os seguintes comandos. O gráfico de leme usa essa senha para habilitar a autenticação básica no OpenFaaS Gateway, que é exposto à Internet por meio de um LoadBalancer em nuvem.
# 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"
Importante
Usar um nome de usuário e senha para autenticação é um padrão inseguro. Se você tiver uma licença empresarial do OpenFaaS, recomendamos usar o Gerenciamento de Identidade e Acesso (IAM) para OpenFaaS .
Obtenha o valor da sua senha usando o seguinte
echo
comando.echo $PASSWORD
Implante o OpenFaaS em seu cluster AKS usando o
helm upgrade
comando.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancer
Sua saída deve ser semelhante à seguinte saída de exemplo condensada:
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" ...
Um endereço IP público é criado para acessar o gateway OpenFaaS. Obtenha o endereço IP usando o
kubectl get service
comando.kubectl get service -l component=gateway --namespace openfaas
Sua saída deve ser semelhante à saída de exemplo a seguir:
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
Teste o sistema OpenFaaS navegando até o endereço IP externo na porta 8080,
http://52.186.64.52:8080
neste exemplo, onde você será solicitado a fazer login. O usuário padrão éadmin
e sua senha pode ser recuperada usandoecho $PASSWORD
.Defina
$OPENFAAS_URL
como a URL do endereço IP externo na porta 8080 e faça logon com a CLI do Azure usando os comandos a seguir.export OPENFAAS_URL=http://52.186.64.52:8080 echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin
Criar a primeira função
Navegue até o sistema OpenFaaS usando seu URL OpenFaaS.
Crie uma função usando o portal OpenFaas selecionando Implantar uma nova função e procure por Figlet.
Selecione a função Figlet e, em seguida, selecione Implantar.
Invoque a função usando o seguinte
curl
comando. Certifique-se de substituir o endereço IP no exemplo a seguir pelo seu endereço de gateway OpenFaaS.curl -X POST http://52.186.64.52:8080/function/figlet -d "Hello Azure"
Sua saída deve ser semelhante à saída de exemplo a seguir:
_ _ _ _ _ | | | | ___| | | ___ / \ _____ _ _ __ ___ | |_| |/ _ \ | |/ _ \ / _ \ |_ / | | | '__/ _ \ | _ | __/ | | (_) | / ___ \ / /| |_| | | | __/ |_| |_|\___|_|_|\___/ /_/ \_\/___|\__,_|_| \___|
Criar segunda função
Configurar sua instância do Azure Cosmos DB
Navegue até Azure Cloud Shell.
Crie um novo grupo de recursos para a instância do Azure Cosmos DB usando o
az group create
comando.az group create --name serverless-backing --location eastus
Implante uma instância do tipo
MongoDB
Azure Cosmos DB usando oaz cosmosdb create
comando. Substituaopenfaas-cosmos
por seu próprio nome de instância exclusivo.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDB
Obtenha a cadeia de conexão de banco de dados do Azure Cosmos DB e armazene-a em uma variável usando o
az cosmosdb keys list
comando. Certifique-se de substituir o valor do--resource-group
argumento pelo nome do seu grupo de recursos e o--name
argumento pelo nome da sua instância do Azure Cosmos DB.COSMOS=$(az cosmosdb keys list \ --type connection-strings \ --resource-group serverless-backing \ --name openfaas-cosmos \ --output tsv)
Preencha o Azure Cosmos DB com dados de teste criando um arquivo nomeado
plans.json
e copiando no seguinte 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 }
Criar a função
Instale as ferramentas do MongoDB. O comando de exemplo a seguir instala essas ferramentas usando brew. Para obter mais opções de instalação, consulte a documentação do MongoDB.
brew install mongodb
Carregue a instância do Azure Cosmos DB com dados usando a ferramenta mongoimport .
mongoimport --uri=$COSMOS -c plans < plans.json
Sua saída deve ser semelhante à saída de exemplo a seguir:
2018-02-19T14:42:14.313+0000 connected to: localhost 2018-02-19T14:42:14.918+0000 imported 1 document
Crie a função usando o
faas-cli deploy
comando. Certifique-se de atualizar o valor do argumento com seu-g
endereço de gateway OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOS
Uma vez implantada, sua saída deve ser semelhante à saída de exemplo a seguir:
Deployed. 202 Accepted. URL: http://52.186.64.52:8080/function/cosmos-query
Teste a função usando o seguinte
curl
comando. Certifique-se de atualizar o endereço IP com o endereço do gateway OpenFaaS.curl -s http://52.186.64.52:8080/function/cosmos-query
Sua saída deve ser semelhante à saída de exemplo a seguir:
[{"ID":"","Name":"two_person","FriendlyName":"","PortionSize":"","MealsPerWeek":"","Price":72,"Description":"Our basic plan, delivering 3 meals per week, which will feed 1-2 people."}]
Nota
Você também pode testar a função dentro da interface do usuário do OpenFaaS:
Próximos passos
Continue a aprender com o workshop OpenFaaS, que inclui um conjunto de laboratórios práticos que abrangem tópicos como como criar seu próprio bot GitHub, consumir segredos, visualizar métricas e dimensionar automaticamente.
Azure Kubernetes Service