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 usandokubectl
. - 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
.
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.
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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de