Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W ramach tego przewodnika użyjesz rozszerzenia Dapr w klastrze Kubernetes z włączoną obsługą AKS lub Arc. Wdrażasz hello world przykład, który składa się z aplikacji Python generującej komunikaty oraz aplikacji Node.js, która odbiera i utrwala te komunikaty.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli go nie masz, możesz utworzyć bezpłatne konto.
- Zainstalowany interfejs wiersza polecenia platformy Azure
- Klaster usługi AKS z:
- Tożsamość obciążenia włączona
- Tożsamość zarządzana utworzona w tej samej subskrypcji
- Konto usługi Kubernetes
- Poświadczenia tożsamości federacyjnej
- Rozszerzenie Dapr zainstalowane w klastrze usługi AKS
- narzędzie kubectl zainstalowane lokalnie
Klonowanie repozytorium
Sklonuj repozytorium Dapr quickstart przy użyciu
git clonepolecenia.git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.gitPrzejdź do
dapr-aks-extension-quickstartkatalogu.cd dapr-aks-extension-quickstart
Tworzenie i konfigurowanie magazynu Redis
Otwórz portal Azure, aby uruchomić przepływ tworzenia zarządzanej usługi Redis Azure.
Uzupełnij zalecane informacje zgodnie z przewodnikiem Szybki start Tworzenie wystąpienia usługi Azure Managed Redis.
Wybierz Utwórz, aby rozpocząć wdrażanie instancji Redis.
Weryfikowanie informacji o zasobie
Po wdrożeniu zasobu usługi Redis przejdź do strony podglądu.
Zanotuj następujące kwestie:
- Nazwa hosta znajdująca się w sekcji Podstawy na stronie przeglądu zasobu. Format nazwy hosta wygląda podobnie do:
<your-cache-name>.<region>.redis.azure.net. - Port SSL znajduje się w obszarze Ustawienia>Ustawienia zaawansowane. Domyślna wartość to
10000.
- Nazwa hosta znajdująca się w sekcji Podstawy na stronie przeglądu zasobu. Format nazwy hosta wygląda podobnie do:
W terminalu włącz uwierzytelnianie za pomocą klucza dostępu w domyślnej bazie danych.
az redisenterprise database update \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --access-keys-auth EnabledPobierz klucz podstawowy domyślnej bazy danych i zapisz go w zmiennej środowiskowej.
export REDIS_PRIMARY_KEY=$(az redisenterprise database list-keys \ --cluster-name <REDIS_NAME> \ --resource-group <RESOURCE_GROUP> \ --query primaryKey \ -o tsv)
Włączanie dostępu do sieci publicznej
W tym scenariuszu wystąpienie usługi Azure Managed Redis korzysta z publicznego dostępu do sieci. Pamiętaj, aby wyczyścić zasoby po zakończeniu pracy z tym przewodnikiem Szybki start.
W menu zasobów w obszarze Ustawienia wybierz pozycję Sieć.
Ustaw pozycję Dostęp do sieci publicznej na wartość Włączone.
Konfigurowanie składników języka Dapr
W pliku redis.yaml należy skonfigurować składnik do korzystania z uwierzytelniania za pomocą klucza dostępu z protokołem TLS.
- name: redisPassword
secretKeyRef:
name: redis-secret
key: redisPassword
- name: useEntraID
value: "false"
- name: enableTLS
value: true
W preferowanym edytorze kodu przejdź do katalogu deploy w repozytorium przykładowym i otwórz plik redis.yaml.
W polu
redisHostzastąp wartość symbolu zastępczego<REDIS_HOST>:10000nazwą hosta usługi Azure Managed Redis zapisaną wcześniej w portalu Azure.- name: redisHost value: <your-cache-name>.<region>.redis.azure.net:10000Utwórz sekret Kubernetes używany przez
redisPassword.kubectl create secret generic redis-secret \ --from-literal=redisPassword="$REDIS_PRIMARY_KEY"
Stosowanie konfiguracji
Zastosuj plik redis.yaml przy użyciu polecenia kubectl apply.
kubectl apply -f ./deploy/redis.yaml
Oczekiwane dane wyjściowe
component.dapr.io/statestore created
Wdrażanie aplikacji Node.js za pomocą przyczepki Dapr
Konfigurowanie aplikacji Node.js
Przejdź do
deploykatalogu i otwórz plik workload-identity.yaml.Zastąp
<MANAGED_IDENTITY_CLIENT_ID>element identyfikatorem klienta utworzonej tożsamości zarządzanej przypisanej przez użytkownika.Zastosuj manifest konta usługi przed wdrożeniem manifestów aplikacji.
kubectl apply -f ./deploy/workload-identity.yaml
W pliku node.yaml specyfikacja poda używa etykiety Workload Identity i współdzielonego workload-sa konta usługi:
labels:
app: node
azure.workload.identity/use: "true"
Stosowanie konfiguracji
Zastosuj wdrożenie aplikacji Node.js w klastrze przy użyciu polecenia
kubectl apply.kubectl apply -f ./deploy/node.yamlWdrożenia platformy Kubernetes są asynchroniczne, więc przed przejściem do następnych kroków sprawdź, czy wdrożenie zostało ukończone przy użyciu następującego polecenia:
kubectl rollout status deploy/nodeappUzyskaj dostęp do usługi przy użyciu
kubectl get svcpolecenia .kubectl get svc nodeappZanotuj
EXTERNAL-IPelement w danych wyjściowych i ustaw go jako zmienną środowiskową.export EXTERNAL_IP=<EXTERNAL-IP>
Weryfikowanie usługi Node.js
Używając
curl, wywołaj usługę za pomocąEXTERNAL-IP.curl $EXTERNAL_IP/portsPrzykładowe dane wyjściowe
{"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}Prześlij zamówienie do aplikacji.
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworderPotwierdź zamówienie.
curl $EXTERNAL_IP/orderOczekiwane dane wyjściowe
{ "orderId": "42" }
Wdrażanie aplikacji Python z sidecarem Dapr
Konfigurowanie aplikacji w języku Python
W pliku python.yaml specyfikacja poda używa etykiety Workload Identity i współdzielonego konta usługi workload-sa:
labels:
app: python
azure.workload.identity/use: "true"
Stosowanie konfiguracji
Wdróż aplikację w języku Python w klastrze Kubernetes przy użyciu
kubectl applypolecenia .kubectl apply -f ./deploy/python.yamlWdrożenia platformy Kubernetes są asynchroniczne, więc przed przejściem do następnych kroków sprawdź, czy wdrożenie zostało ukończone przy użyciu następującego polecenia:
kubectl rollout status deploy/pythonapp
Obserwowanie komunikatów i potwierdzanie trwałości
Teraz, gdy zarówno aplikacje Node.js, jak i Python zostały wdrożone, możesz obserwować, jak napływają komunikaty.
Pobierz dzienniki aplikacji Node.js przy użyciu
kubectl logspolecenia .kubectl logs --selector=app=node -c node --tail=-1Oczekiwane dane wyjściowe
Got a new order! Order ID: 1 Successfully persisted state Got a new order! Order ID: 2 Successfully persisted state Got a new order! Order ID: 3 Successfully persisted stateZa pomocą metody
curlwywołaj punkt końcowy zamówienia aplikacji Node.js, aby uzyskać najnowsze zamówienie.curl $EXTERNAL_IP/orderW odpowiedzi powinny zostać wyświetlone najnowsze dane wyjściowe JSON.
Czyszczenie zasobów
Jeśli nie planujesz już korzystać z zasobów z tego materiału szybkiego startu, możesz usunąć grupę zasobów, klaster, przestrzeń nazw i wszystkie powiązane zasoby, używając polecenia az group delete.
az group delete --name <your-resource-group>