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:
- 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 usandokubectl
o . - A linha de comando e os pré-requisitos do Helm v3 estã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 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
.
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.
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.