Używanie usługi OpenFaaS z hybrydową usługą AKS

Dotyczy: usługa AKS w usłudze Azure Stack HCI, AKS w systemie Windows Server

OpenFaaS to struktura do tworzenia funkcji bezserwerowych przy użyciu kontenerów. Jako projekt open source zyskał wdrożenie na dużą skalę w społeczności. Ten dokument zawiera szczegółowe informacje na temat instalowania i używania usługi OpenFaas w klastrze Kubernetes uruchomionym w środowisku hybrydowym usługi AKS.

Wymagania wstępne

Aby wykonać kroki opisane w tym artykule, upewnij się, że masz następujące wymagania:

  • Podstawowa wiedza na temat platformy Kubernetes.
  • Klaster usługi AKS z co najmniej jednym węzłem roboczym systemu Linux, który jest uruchomiony.
  • Środowisko lokalne kubectl jest skonfigurowane tak, aby wskazywało klaster usługi AKS. Aby uzyskać dostęp do klastra, możesz użyć polecenia Get-AksHciCredential programu PowerShell przy użyciu polecenia kubectl.
  • Zainstalowano wiersz polecenia programu Helm w wersji 3 i wymagania wstępne.
  • Interfejs wiersza polecenia platformy Azure może być również używany do uruchamiania poleceń, jeśli wolisz używać interfejsu wiersza polecenia platformy Azure do programu PowerShell.
  • Narzędzia wiersza polecenia git są zainstalowane w systemie.
  • Interfejs OpenFaaS wiersza polecenia jest zainstalowany. Aby uzyskać informacje o opcjach instalacji, zobacz dokumentację interfejsu wiersza polecenia platformy OpenFaaS.

Ważne

Program Helm jest przeznaczony do uruchamiania w węzłach systemu Linux. Jeśli klaster ma węzły systemu Windows Server, należy upewnić się, że zasobniki programu Helm są zaplanowane do uruchamiania tylko w węzłach systemu Linux. Należy również upewnić się, że wszystkie zainstalowane wykresy programu Helm mają być uruchamiane na odpowiednich węzłach. Polecenia w tym artykule używają selektorów węzłów , aby upewnić się, że zasobniki są zaplanowane do odpowiednich węzłów, ale nie wszystkie wykresy programu Helm uwidocznią selektor węzła. Możesz również użyć innych opcji, takich jak defekty, w klastrze.

Dodawanie repozytorium pakietu Helm openFaaS

Po uruchomieniu pliku kubeconfig otwórz konsolę, aby rozpocząć proces wdrażania. Jeśli korzystasz z systemu Windows, pobieranie i uruchamianie powłoki Git Bash jest najprostszym sposobem na wykonanie tych czynności. Od tego momentu, aby rozpocząć, OpenFaaS utrzymuje własne wykresy Helm, aby być na bieżąco ze wszystkimi najnowszymi zmianami:

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

Wdrażanie usługi OpenFaaS

Najlepszym rozwiązaniem jest przechowywanie funkcji OpenFaaS i OpenFaaS we własnej przestrzeni nazw Kubernetes.

Utwórz przestrzeń nazw dla systemu i funkcji OpenFaaS:

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

Wygeneruj hasło dla portalu interfejsu użytkownika openFaaS i interfejsu 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"

Wartość wpisu tajnego można uzyskać za pomocą polecenia echo $PASSWORD.

Wykres helm użyje hasła, które utworzymy w tym miejscu, aby włączyć uwierzytelnianie podstawowe w bramie OpenFaaS, która jest uwidoczniona zewnętrznie za pośrednictwem modułu LoadBalancer.

Pakiet Helm dla usługi OpenFaaS znajduje się w sklonowanym repozytorium. Użyj tego wykresu, aby wdrożyć usługę OpenFaaS w klastrze usługi AKS.

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

Dane wyjściowe:

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

Aby sprawdzić, czy usługa OpenFaas została uruchomiona, uruchom następujące polecenie:

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

Publiczny adres IP jest tworzony na potrzeby uzyskiwania dostępu do bramy OpenFaaS. Aby pobrać ten adres IP, użyj polecenia kubectl get usługi . Przypisanie adresu IP do usługi może potrwać minutę.

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

Dane wyjściowe:

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

Aby przetestować system OpenFaaS, przejdź do zewnętrznego adresu IP na porcie 8080 — http://192.168.0.152:8080 w tym przykładzie. Zostanie wyświetlony monit o zalogowanie się. Aby pobrać hasło, wprowadź .echo $PASSWORD

Interfejs użytkownika openFaaS

Ustaw $OPENFAAS_URL wartość external-IP znalezioną powyżej.

Zaloguj się przy użyciu konsoli. Jeśli używasz poleceń w powłoce GitBash w systemie Windows, może być konieczne użycie faas-cli polecenia zamiast ./faas-cli w poniższym poleceniu.

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

Tworzenie pierwszej funkcji

Teraz, gdy usługa OpenFaaS działa, utwórz funkcję przy użyciu portalu OpenFaaS.

Kliknij pozycję Wdróż nową funkcję i wyszukaj ciąg Figlet. Wybierz funkcję Figlet, a następnie kliknij przycisk Wdróż.

Zrzut ekranu przedstawia okno dialogowe Deploy A New Function in OpenFAAS (Wdrażanie nowej funkcji w systemie OpenFAAS) z ciągiem

Użyj polecenia curl , aby wywołać funkcję . Zastąp adres IP w poniższym przykładzie adresem bramy OpenFaaS.

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

Dane wyjściowe:

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

Czyszczenie zasobów

Podczas wdrażania wykresu programu Helm jest tworzonych wiele zasobów platformy Kubernetes. Te zasoby obejmują zasobniki, wdrożenia i usługi. Aby wyczyścić te zasoby, użyj polecenia [helm uninstall][helm-cleanup] i określ nazwę wydania, jak znaleziono w poprzednim helm list poleceniu.

helm uninstall openfaas

W poniższym przykładzie pokazano, że wersja o nazwie openfaas została odinstalowana:

release "openfaas" uninstalled

Następne kroki

Możesz kontynuować naukę na warsztatach OpenFaaS, korzystając z zestawu praktycznych laboratoriów, które obejmują takie tematy, jak tworzenie własnego bota usługi GitHub, korzystanie z wpisów tajnych, wyświetlanie metryk i automatyczne skalowanie.