Usar o OpenFaaS com o AKS habilitado pelo Azure Arc

Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server

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

Pré-requisitos

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

  • Uma compreensão básica do Kubernetes.
  • Um cluster do Kubernetes com pelo menos um nó de trabalho do Linux em execução.
  • Seu ambiente local kubectl está configurado para apontar para o cluster. Você pode usar o comando Get-AksHciCredential do PowerShell para acessar o cluster usando kubectl.
  • A linha de comando e os pré-requisitos do Helm v3 são instalados.
  • Você pode usar a CLI do Azure para executar comandos se preferir a CLI do Azure ao PowerShell.
  • As ferramentas de linha de comando do Git são instaladas em seu sistema.
  • A OpenFaaS CLI está instalada. Para ver as opções de instalação, confira a documentação da CLI do OpenFaaS.

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 sejam agendados para serem executados somente em nós do Linux. Você também deve garantir que todos os gráficos do Helm instalados estejam agendados 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, no cluster.

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

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í, para começar, 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 que você cria aqui para habilitar a autenticação básica no Gateway OpenFaaS, que é exposto 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 no 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, insira echo $PASSWORD.

Interface do usuário do OpenFaaS

Defina $OPENFAAS_URL como o IP externo encontrado neste exemplo.

Entre com seu console. Se você executar comandos no GitBash no Windows, talvez seja necessário usar faas-cli em vez de ./faas-cli no 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 pesquise 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 limpo esses recursos, use o comando e especifique o helm uninstall nome da versão, conforme encontrado no comando anteriorhelm 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.