Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 Helm Chart OpenFaaS
Navegue até Azure Cloud Shell.
Adicione o repositório Helm Chart OpenFaaS e atualize para a versão mais recente usando os seguintes
helmcomandos.helm repo add openfaas https://openfaas.github.io/faas-netes/ helm repo update
Implantar o OpenFaaS
Como boa prática, OpenFaaS e as suas funções devem ser armazenados no seu próprio namespace Kubernetes.
Crie um namespace para o sistema OpenFaaS e funções usando o
kubectl applycomando.kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.ymlGere uma senha para o OpenFaaS UI Portal e REST API usando os seguintes comandos. O Helm Chart utiliza esta palavra-passe para habilitar a autenticação básica no Gateway OpenFaaS, que está exposto à Internet através de um balanceador de carga 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
echocomando.echo $PASSWORDImplante o OpenFaaS em seu cluster AKS usando o
helm upgradecomando.helm upgrade openfaas --install openfaas/openfaas \ --namespace openfaas \ --set basic_auth=true \ --set functionNamespace=openfaas-fn \ --set serviceType=LoadBalancerSua 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 servicecomando.kubectl get service -l component=gateway --namespace openfaasSua 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 7mTeste o sistema OpenFaaS navegando até o endereço IP externo na porta 8080,
http://52.186.64.52:8080neste exemplo, onde você será solicitado a fazer login. O usuário padrão éadmine sua senha pode ser recuperada usandoecho $PASSWORD.
Defina
$OPENFAAS_URLcomo 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é ao sistema OpenFaaS usando o URL do 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
curlcomando. 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 createcomando.az group create --name serverless-backing --location eastusImplante uma instância do tipo
MongoDBAzure Cosmos DB usando oaz cosmosdb createcomando. Substituaopenfaas-cosmospor seu próprio nome de instância exclusivo.az cosmosdb create --resource-group serverless-backing --name openfaas-cosmos --kind MongoDBObtenha 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 listcomando. Certifique-se de substituir o valor do--resource-groupargumento pelo nome do seu grupo de recursos e o--nameargumento 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.jsone 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 mongodbCarregue a instância do Azure Cosmos DB com dados usando a ferramenta mongoimport .
mongoimport --uri=$COSMOS -c plans < plans.jsonSua 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 documentCrie a função usando o
faas-cli deploycomando. Certifique-se de atualizar o valor do argumento com seu-gendereço de gateway OpenFaaS.faas-cli deploy -g http://52.186.64.52:8080 --image=shanepeckham/openfaascosmos --name=cosmos-query --env=NODE_ENV=$COSMOSUma 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-queryTeste a função usando o seguinte
curlcomando. 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-querySua 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.