Szybki start: wdrażanie aplikacji przy użyciu rozszerzenia Dapr dla usługi Azure Kubernetes Service (AKS) lub platformy Kubernetes z obsługą usługi Arc

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

Klonowanie repozytorium

  1. Sklonuj repozytorium Dapr quickstart przy użyciu git clone polecenia.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Przejdź do dapr-aks-extension-quickstart katalogu.

    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.

  1. Uzupełnij zalecane informacje zgodnie z przewodnikiem Szybki start Tworzenie wystąpienia usługi Azure Managed Redis.

  2. Wybierz Utwórz, aby rozpocząć wdrażanie instancji Redis.

Weryfikowanie informacji o zasobie

  1. Po wdrożeniu zasobu usługi Redis przejdź do strony podglądu.

  2. 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.
  3. 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 Enabled
    
  4. Pobierz 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.

  1. W menu zasobów w obszarze Ustawienia wybierz pozycję Sieć.

  2. 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
  1. W preferowanym edytorze kodu przejdź do katalogu deploy w repozytorium przykładowym i otwórz plik redis.yaml.

  2. W polu redisHost zastąp wartość symbolu zastępczego <REDIS_HOST>:10000 nazwą hosta usługi Azure Managed Redis zapisaną wcześniej w portalu Azure.

    - name: redisHost
      value: <your-cache-name>.<region>.redis.azure.net:10000
    
  3. Utwó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

  1. Przejdź do deploy katalogu i otwórz plik workload-identity.yaml.

  2. Zastąp <MANAGED_IDENTITY_CLIENT_ID> element identyfikatorem klienta utworzonej tożsamości zarządzanej przypisanej przez użytkownika.

  3. 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

  1. Zastosuj wdrożenie aplikacji Node.js w klastrze przy użyciu polecenia kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. Wdroż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/nodeapp
    
  3. Uzyskaj dostęp do usługi przy użyciu kubectl get svc polecenia .

    kubectl get svc nodeapp
    
  4. Zanotuj EXTERNAL-IP element w danych wyjściowych i ustaw go jako zmienną środowiskową.

    export EXTERNAL_IP=<EXTERNAL-IP>
    

Weryfikowanie usługi Node.js

  1. Używając curl, wywołaj usługę za pomocą EXTERNAL-IP.

    curl $EXTERNAL_IP/ports
    

    Przykładowe dane wyjściowe

    {"DAPR_HTTP_ENDPOINT":"http://localhost:3500","DAPR_GRPC_ENDPOINT":"http://localhost:50001"}
    
  2. Prześlij zamówienie do aplikacji.

    curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
    
  3. Potwierdź zamówienie.

    curl $EXTERNAL_IP/order
    

    Oczekiwane 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

  1. Wdróż aplikację w języku Python w klastrze Kubernetes przy użyciu kubectl apply polecenia .

    kubectl apply -f ./deploy/python.yaml
    
  2. Wdroż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.

  1. Pobierz dzienniki aplikacji Node.js przy użyciu kubectl logs polecenia .

    kubectl logs --selector=app=node -c node --tail=-1
    

    Oczekiwane 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 state
    
  2. Za pomocą metody curlwywołaj punkt końcowy zamówienia aplikacji Node.js, aby uzyskać najnowsze zamówienie.

    curl $EXTERNAL_IP/order
    

    W 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>

Następny krok