Share via


Usare OpenFaaS con il servizio Azure Kubernetes abilitato da Azure Arc

Si applica a: servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server

OpenFaaS è un framework per la compilazione di funzioni serverless tramite contenitori. Come progetto di open source, ha ottenuto l'adozione su larga scala all'interno della community. Questo articolo descrive l'installazione e l'uso di OpenFaas in un cluster Kubernetes in esecuzione nel servizio Azure Kubernetes abilitato da Azure Arc.

Prerequisiti

Per completare la procedura descritta in questo articolo, assicurarsi di avere i requisiti seguenti:

  • Conoscenza di base di Kubernetes.
  • Un cluster Kubernetes con almeno un nodo di lavoro Linux operativo.
  • L'ambiente locale kubectl è configurato per puntare al cluster. È possibile usare il comando Get-AksHciCredential di PowerShell per accedere al cluster usando kubectl.
  • Vengono installati i prerequisiti e la riga di comando Helm v3.
  • È possibile usare l'interfaccia della riga di comando di Azure per eseguire i comandi se si preferisce l'interfaccia della riga di comando di Azure a PowerShell.
  • Gli strumenti da riga di comando Git vengono installati nel sistema.
  • L'interfaccia della OpenFaaS riga di comando è installata. Per le opzioni di installazione, vedere la documentazione dell'interfaccia della riga di comando di OpenFaaS.

Importante

Helm è progettato per l'esecuzione in nodi Linux. Se il cluster dispone di nodi Windows Server, è necessario assicurarsi che i pod Helm siano pianificati per l'esecuzione solo nei nodi Linux. È anche necessario assicurarsi che tutti i grafici Helm installati siano pianificati per l'esecuzione nei nodi corretti. I comandi in questo articolo usano i selettori di nodo per assicurarsi che i pod siano pianificati nei nodi corretti, ma non tutti i grafici Helm espongono un selettore di nodo. È anche possibile usare altre opzioni, ad esempio taints, nel cluster.

Aggiungere il repository del grafico Helm OpenFaaS

Con il file kubeconfig disponibile, aprire la console per avviare il processo di distribuzione. Se si esegue in Windows, il download e l'esecuzione di Git Bash è il modo più semplice da seguire. Da qui, per iniziare, OpenFaaS gestisce i propri grafici Helm per rimanere aggiornati con tutte le modifiche più recenti:

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

Distribuire OpenFaaS

Come procedura consigliata, le funzioni OpenFaaS e OpenFaaS devono essere archiviate nel proprio spazio dei nomi Kubernetes.

Create uno spazio dei nomi per il sistema e le funzioni OpenFaaS:

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

Generare una password per il portale dell'interfaccia utente OpenFaaS e l'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"

È possibile ottenere il valore del segreto con echo $PASSWORD.

Il grafico Helm usa la password creata qui per abilitare l'autenticazione di base nel gateway OpenFaaS, esposta esternamente tramite un servizio di bilanciamento del carico.

Il repository clonato include un grafico Helm per OpenFaaS. Usare questo grafico per distribuire OpenFaaS nel cluster Kubernetes:

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

Output:

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

Per verificare che OpenFaas sia stato avviato, eseguire il comando seguente:

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

Viene creato un indirizzo IP pubblico per l'accesso al gateway OpenFaaS. Per recuperare questo indirizzo IP, usare il comando kubectl get service. L'assegnazione dell'indirizzo IP al servizio può richiedere un minuto:

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

Output:

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

Per testare il sistema OpenFaaS, passare all'indirizzo IP esterno sulla porta 8080, http://192.168.0.152:8080 in questo esempio. Viene richiesto di eseguire l'accesso. Per recuperare la password, immettere echo $PASSWORD.

Interfaccia utente di OpenFaaS

Impostare $OPENFAAS_URL su External-IP trovato in questo esempio.

Accedere con la console. Se si eseguono comandi in GitBash in Windows, potrebbe essere necessario usare faas-cli anziché ./faas-cli nel comando seguente:

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

Creare la prima funzione

Ora che OpenFaaS è operativo, creare una funzione usando il portale OpenFaaS.

Selezionare Distribuisci nuova funzione e cercare Figlet. Selezionare la funzione Figlet e quindi fare clic su Distribuisci.

Screenshot che mostra la finestra di dialogo Distribuisci una nuova funzione in OpenFAAS, con

Usare curl per richiamare la funzione. Sostituire l'indirizzo IP nell'esempio seguente con l'indirizzo del gateway OpenFaaS.

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

Output:

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

Pulire le risorse

Quando si distribuisce un grafico Helm, vengono create molte risorse Kubernetes. Queste risorse includono pod, distribuzioni e servizi. Per pulire queste risorse, usare il comando e specificare il helm uninstall nome della versione, come illustrato nel comando precedente helm list :

helm uninstall openfaas

L'esempio seguente mostra che la versione denominata openfaas è stata disinstallata:

release "openfaas" uninstalled

Passaggi successivi

È possibile continuare a imparare con il workshop OpenFaaS tramite un set di lab pratici che illustrano argomenti come la creazione di un bot GitHub personalizzato, l'utilizzo di segreti, la visualizzazione delle metriche e il ridimensionamento automatico.