Compartilhar via


Usar o OpenFaaS com o AKS habilitado pelo Azure Arc

Aplica-se ao: AKS no Azure Local 22H2, AKS no Windows Server

O OpenFaaS é uma estrutura para criar funções sem servidor usando contêineres. Como um projeto de código aberto, ganhou adoção em larga escala dentro da comunidade. Este artigo descreve a instalação e o uso do OpenFaas em um cluster do Kubernetes em execução no AKS habilitado pelo Azure Arc.

Pré-requisitos

Para concluir as etapas deste artigo, verifique se você tem os seguintes requisitos:

Importante

O Helm destina-se a ser executado em nós do Linux. Se o cluster tiver nós do Windows Server, você deverá garantir que os pods do Helm estejam agendados para serem executados somente em nós do Linux. Você também deve garantir que todos os gráficos do Helm instalados estejam programados para serem executados nos nós corretos. Os comandos neste artigo usam seletores de nó para garantir que os pods estejam agendados para os nós corretos, mas nem todos os gráficos do Helm expõem um seletor de nó. Você também pode usar outras opções, como taints, em seu cluster.

Adicionar o repositório de gráfico do OpenFaaS Helm

Com o arquivo kubeconfig disponível, abra o console para iniciar o processo de implantação. Se você estiver executando no Windows, baixar e executar o Git Bash é a maneira mais fácil de acompanhar. A partir daí, o OpenFaaS mantém seus próprios gráficos do Helm para se manter atualizado com todas as alterações mais recentes:

helm repo add openfaas https://openfaas.github.io/faas-netes/
helm repo update

Implantar o OpenFaaS

Como prática recomendada, as funções OpenFaaS e OpenFaaS devem ser armazenadas em seu próprio namespace do Kubernetes.

Criar um namespace para as funções e o sistema OpenFaaS:

kubectl apply -f https://raw.githubusercontent.com/openfaas/faas-netes/master/namespaces.yml

Gerar uma senha para o portal de interface do usuário do OpenFaaS e a API REST:

# 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"

Você pode obter o valor do segredo com echo $PASSWORD.

O gráfico do Helm usa a senha criada aqui para habilitar a autenticação básica no OpenFaaS Gateway, que é exposta externamente por meio de um balanceador de carga.

Um gráfico do Helm para o OpenFaaS está incluído no repositório clonado. Use este gráfico para implantar o OpenFaaS em seu cluster do Kubernetes:

helm upgrade openfaas --install openfaas/openfaas \
    --namespace openfaas  \
    --set basic_auth=true \
    --set functionNamespace=openfaas-fn \
    --set serviceType=LoadBalancer

Saída:

NAME:   openfaas
LAST DEPLOYED: Fri May 14 18:35:47 2021
NAMESPACE: openfaas
STATUS: deployed
REVISION: 1
TEST SUITE: None

Para verificar se o OpenFaas foi iniciado, execute o seguinte comando:

kubectl --namespace=openfaas get deployments -l "release=openfaas, app=openfaas"

Um endereço IP público é criado para acessar o gateway OpenFaaS. Para recuperar esse endereço IP, use o comando kubectl get service. Pode levar um minuto para que o endereço IP seja atribuído ao serviço:

kubectl get service -l component=gateway --namespace openfaas

Saída:

NAME               TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)          AGE
gateway            ClusterIP      10.110.205.41  <none>         8080/TCP         7m
gateway-external   LoadBalancer   10.107.51.110  192.168.0.152  8080:32029/TCP   7m

Para testar o sistema OpenFaaS, navegue até o endereço IP externo na porta 8080 - http://192.168.0.152:8080 neste exemplo. Você será solicitado a entrar. Para recuperar sua senha, digite echo $PASSWORD.

Interface do usuário do OpenFaaS

Defina $OPENFAAS_URL como o IP externo encontrado neste exemplo.

Faça login com seu console. Se você executar comandos no GitBash no Windows, talvez seja necessário usar faas-cli em vez do ./faas-cli seguinte comando:

export OPENFAAS_URL=http://192.168.0.152:8080
echo -n $PASSWORD | ./faas-cli login -g $OPENFAAS_URL -u admin --password-stdin

Criar a primeira função

Agora que o OpenFaaS está operacional, crie uma função usando o portal OpenFaaS.

Selecione Implantar nova função e procure por Figlet. Selecione a função Figlet e clique em Implantar.

A captura de tela mostra a caixa de diálogo Implantar uma nova função no OpenFAAS, com

Use curl para invocar a função. Substitua o endereço IP no exemplo a seguir pelo endereço do gateway OpenFaaS.

curl -X POST http://192.168.0.152:8080/function/figlet -d "Hello Azure"

Saída:

 _   _      _ _            _
| | | | ___| | | ___      / \    _____   _ _ __ ___
| |_| |/ _ \ | |/ _ \    / _ \  |_  / | | | '__/ _ \
|  _  |  __/ | | (_) |  / ___ \  / /| |_| | | |  __/
|_| |_|\___|_|_|\___/  /_/   \_\/___|\__,_|_|  \___|

Limpar os recursos

Quando você implanta um gráfico do Helm, vários recursos do Kubernetes são criados. Esses recursos incluem pods, implantações e serviços. Para limpar esses recursos, use o comando e especifique o nome da helm uninstall versão, conforme encontrado no comando anterior helm list :

helm uninstall openfaas

O exemplo a seguir mostra que a versão chamada openfaas foi desinstalada:

release "openfaas" uninstalled

Próximas etapas

Você pode continuar a aprender com o workshop do OpenFaaS por meio de um conjunto de laboratórios práticos que abordam tópicos do tipo: como criar seu próprio bot do GitHub, como consumir segredos, como exibir métricas e como fazer o dimensionamento automático.