Quickstart: Een toepassing implementeren met de Dapr-clusterextensie (preview) voor Azure Kubernetes Service (AKS)
In deze quickstart maakt u kennis met het gebruik van de Dapr-clusterextensie in een AKS-cluster. U implementeert een Hello World-voorbeeld, bestaande uit een Python-toepassing die berichten genereert en een Node-toepassing die deze gebruikt en persistent maakt.
Belangrijk
Preview-functies van AKS zijn beschikbaar via selfservice en opt-in. Previews worden aangeboden 'as is' en 'as available', en ze worden uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:
Vereisten
- Een Azure-abonnement. Als u geen Azure-abonnement hebt, kunt u een gratis account maken.
- Azure CLI geïnstalleerd.
- Een AKS-cluster met de Dapr-clusterextensie ingeschakeld
De opslagplaats klonen
Als u de bestanden wilt verkrijgen die u gaat gebruiken om de voorbeeldtoepassing te implementeren, kloont u de Quickstarts-opslagplaats en gaat u naar de hello-kubernetes map :
git clone https://github.com/dapr/quickstarts.git
cd quickstarts/hello-kubernetes
Een statusopslag maken en configureren
Dapr kan een aantal verschillende state stores (Redis, CosmosDB, DynamoDB, Cassandra, enzovoort) gebruiken om de status te persistent te maken en op te halen. Voor dit voorbeeld gebruiken we Redis.
Een Redis-winkel maken
- Open de Azure Portal om de azure-Redis Cache te starten.
- Vul de benodigde gegevens in
- Klik op Maken om de implementatie van uw Redis-exemplaar te implementeren.
- Noteer de hostnaam van uw Redis-exemplaar, die u kunt ophalen uit het overzicht in Azure. Deze ziet er als
xxxxxx.redis.cache.windows.net:6380uit. - Zodra uw exemplaar is gemaakt, moet u uw toegangssleutel pakken. Navigeer naar Toegangssleutels onder Instellingen en maak een Kubernetes-geheim om uw Redis-wachtwoord op te slaan:
kubectl create secret generic redis --from-literal=redis-password=<your-redis-password>
De Dapr-onderdelen configureren
Zodra uw archief is gemaakt, moet u de sleutels toevoegen aan het bestand redis.yaml in de implementatiemap van de Hallo wereld opslagplaats. Vervang de redisHost waarde door uw eigen Redis-hoofdadres en de door uw eigen redisPassword geheim. Meer informatie vindt u hier.
U moet ook de volgende twee regels hieronder toevoegen om verbinding via TLS mogelijk redisPassword te maken:
- name: redisPassword
secretKeyRef:
name: redis
key: redis-password
- name: enableTLS
value: true
De configuratie toepassen
Pas het bestand redis.yaml toe:
kubectl apply -f ./deploy/redis.yaml
En controleer of uw statusopslag is geconfigureerd in de uitvoer:
component.dapr.io/statestore created
De app Node.js implementeren met de Dapr-sidecar
Pas de Node.js van de app toe op uw cluster:
kubectl apply -f ./deploy/node.yaml
Notitie
Kubernetes-implementaties zijn asynchroon. Dit betekent dat u moet wachten tot de implementatie is voltooid voordat u verder gaat met de volgende stappen. U kunt dit doen met de volgende opdracht:
kubectl rollout status deploy/nodeapp
Hiermee wordt de Node.js-app geïmplementeerd in Kubernetes. Het Dapr-besturingsvlak injecteert automatisch de Dapr-sidecar in de pod. Als u het bestand node.yaml bekijkt, ziet u hoe Dapr is ingeschakeld voor die implementatie:
dapr.io/enabled: true- dit vertelt het Dapr-besturingsvlak om een sidecar in deze implementatie te injecteren.dapr.io/app-id: nodeapp- Hiermee wordt een unieke id of naam toegewezen aan de Dapr-toepassing, zodat deze berichten kan verzenden naar en kan worden gecommuniceerd met andere Dapr-apps.
Als u toegang wilt krijgen tot uw service, moet u de verkrijgen en noteren EXTERNAL-IP via kubectl :
kubectl get svc nodeapp
De service verifiëren
Voer het volgende uit om de service aan te roepen:
curl $EXTERNAL_IP/ports
De uitvoer ziet er als volgt uit:
{"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
Verzend vervolgens een bestelling naar de toepassing:
curl --request POST --data "@sample.json" --header Content-Type:application/json $EXTERNAL_IP/neworder
Controleer of de bestelling is persistent gemaakt door deze aan te vragen:
curl $EXTERNAL_IP/order
De uitvoer ziet er als volgt uit:
{ "orderId": "42" }
Tip
Dit is een goed moment om kennis te maken met het Dapr-dashboard: een handige interface voor het controleren van de status, informatie en logboeken van toepassingen die worden uitgevoerd op Dapr. Met de volgende opdracht wordt deze beschikbaar gemaakt op http://localhost:8080/ :
kubectl port-forward svc/dapr-dashboard -n dapr-system 8080:8080
De Python-app implementeren met de Dapr-sidecar
Bekijk de Python-app kort. Navigeer naar de map van de Python-app in hello-kubernetes de quickstart en open app.py .
Dit is een eenvoudige Python-app waarmee JSON-berichten worden geplaatst in . Dit localhost:3500 is de standaard luisterpoort voor Dapr. U kunt het eindpunt van Node.js toepassing neworder aanroepen door een bericht naar te v1.0/invoke/nodeapp/method/neworder verzenden. Het bericht bevat enkele gegevens met een orderId die eenmaal per seconde wordt verhoogd:
n = 0
while True:
n += 1
message = {"data": {"orderId": n}}
try:
response = requests.post(dapr_url, json=message)
except Exception as e:
print(e)
time.sleep(1)
Implementeer de Python-app in uw Kubernetes-cluster:
kubectl apply -f ./deploy/python.yaml
Notitie
Net als hierboven wacht de volgende opdracht tot de implementatie is voltooid:
kubectl rollout status deploy/pythonapp
Berichten observeren en persistentie bevestigen
Nu zowel de Node.js- als Python-toepassingen zijn geïmplementeerd, worden berichten ontvangen.
Haal de logboeken van de Node.js app op:
kubectl logs --selector=app=node -c node --tail=-1
Als de implementaties zijn geslaagd, ziet u logboeken zoals deze:
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
Roep het Node.js van de app aan om de meest recente bestelling op te halen. Haal het externe IP-adres op dat u eerder hebt opgeslagen en typ '/order' en voer er een GET-aanvraag voor uit (voer het in uw browser in, gebruik Postman of curl het!):
curl $EXTERNAL_IP/order
{"orderID":"42"}
U ziet de meest recente JSON in het antwoord.
Resources opschonen
Gebruik de opdracht az group delete om de resourcegroep, het AKS-cluster, de naamruimte en alle gerelateerde resources te verwijderen.
az group delete --name MyResourceGroup
Volgende stappen
Nadat deze voorbeeldtoepassing is geïmplementeerd: