Een Java-toepassing implementeren met Quarkus in een Azure Kubernetes Service-cluster
In dit artikel leest u hoe u Red Hat Quarkus snel implementeert in Azure Kubernetes Service (AKS) met een eenvoudige CRUD-toepassing. De toepassing is een takenlijst met een JavaScript-front-end en een REST-eindpunt. Azure Database for PostgreSQL Flexible Server biedt de persistentielaag voor de app. In het artikel wordt beschreven hoe u uw app lokaal test en implementeert in AKS.
Vereisten
- Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.
- Bereid een lokale computer voor waarop unix-achtig besturingssysteem is geïnstalleerd, bijvoorbeeld Ubuntu, macOS of Windows-subsysteem voor Linux.
- Installeer een Java SE-implementatieversie 17 of hoger, bijvoorbeeld Microsoft-build van OpenJDK.
- Installeer Maven, versie 3.9.8 of hoger.
- Installeer Docker of Podman voor uw besturingssysteem.
- Installeer jq.
- Installeer cURL.
- Installeer de Quarkus CLI, versie 3.12.1 of hoger.
- Azure CLI voor Unix-achtige omgevingen. Voor dit artikel is alleen de Bash-variant van Azure CLI vereist.
Een ontwikkelaar moet Azure CLI installeren en zich interactief aanmelden met de az login-opdracht om u aan te melden bij Azure voordat de DefaultAzureCredential in code wordt gebruikt. az login
- Voor dit artikel is ten minste versie 2.61.0 van Azure CLI vereist.
Het app-project maken
Gebruik de volgende opdracht om het Java-voorbeeldproject voor dit artikel te klonen. Het voorbeeld bevindt zich op GitHub.
git clone https://github.com/Azure-Samples/quarkus-azure
cd quarkus-azure
git checkout 2024-07-08
cd aks-quarkus
Als u een bericht ziet over een losgekoppelde HEAD-status , is dit bericht veilig te negeren. Omdat voor dit artikel geen doorvoeringen nodig zijn, is de losgekoppelde HEAD-status geschikt.
Uw Quarkus-app lokaal testen
In de stappen in deze sectie ziet u hoe u de app lokaal uitvoert.
Quarkus ondersteunt het automatisch inrichten van niet-geconfigureerde services in de ontwikkelings- en testmodus. Quarkus verwijst naar deze mogelijkheid als dev-services. Stel dat u een Quarkus-functie opneemt, zoals verbinding maken met een databaseservice. U wilt de app testen, maar u hebt de verbinding met een echte database nog niet volledig geconfigureerd. Quarkus start automatisch een stub-versie van de relevante service en verbindt uw toepassing hiermee. Zie Dev Services Overview in the Quarkus documentation (Overzicht van Dev Services) voor meer informatie.
Zorg ervoor dat uw containeromgeving, Docker of Podman, wordt uitgevoerd en gebruik de volgende opdracht om de dev-modus quarkus in te voeren:
quarkus dev
In plaats van quarkus dev
, kunt u hetzelfde doen met Maven met behulp van mvn quarkus:dev
.
Mogelijk wordt u gevraagd of u telemetrie wilt verzenden van uw gebruik van quarkus dev-modus. Zo ja, antwoord zoals u wilt.
Quarkus dev-modus maakt live opnieuw laden met achtergrondcompilatie mogelijk. Als u een aspect van de broncode van uw app wijzigt en uw browser vernieuwt, ziet u de wijzigingen. Als er problemen zijn met compilatie of implementatie, laat een foutpagina u weten. Quarkus dev-modus luistert naar een foutopsporingsprogramma op poort 5005. Als u wilt wachten totdat het foutopsporingsprogramma wordt toegevoegd voordat u deze uitvoert, geeft -Dsuspend
u de opdrachtregel door. Als u het foutopsporingsprogramma helemaal niet wilt, kunt u gebruiken -Ddebug=false
.
De uitvoer moet eruitzien als in het volgende voorbeeld:
__ ____ __ _____ ___ __ ____ ______
--/ __ \/ / / / _ | / _ \/ //_/ / / / __/
-/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \
--\___\_\____/_/ |_/_/|_/_/|_|\____/___/
INFO [io.quarkus] (Quarkus Main Thread) quarkus-todo-demo-app-aks 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.2.0.Final) started in 3.377s. Listening on: http://localhost:8080
INFO [io.quarkus] (Quarkus Main Thread) Profile dev activated. Live Coding activated.
INFO [io.quarkus] (Quarkus Main Thread) Installed features: [agroal, cdi, hibernate-orm, hibernate-orm-panache, hibernate-validator, jdbc-postgresql, narayana-jta, resteasy-reactive, resteasy-reactive-jackson, smallrye-context-propagation, vertx]
--
Tests paused
Press [e] to edit command line args (currently ''), [r] to resume testing, [o] Toggle test output, [:] for the terminal, [h] for more options>
Druk op w op de terminal waar de Quarkus-ontwikkelmodus wordt uitgevoerd. Met de w-toets wordt uw standaardwebbrowser geopend om de Todo
toepassing weer te geven. U kunt ook rechtstreeks toegang krijgen tot de toepassings-GUI http://localhost:8080
.
Selecteer een paar taken in de takenlijst. De gebruikersinterface geeft de selectie aan met een doorhalende tekststijl. U kunt ook een nieuw taakitem toevoegen aan de takenlijst door Todo-apps verifiëren te typen en op Enter te drukken, zoals wordt weergegeven in de volgende schermafbeelding:
Open de RESTful-API (/api
) om alle taken op te halen die zijn opgeslagen in de lokale PostgreSQL-database:
curl --verbose http://localhost:8080/api | jq .
De uitvoer moet eruitzien als in het volgende voorbeeld:
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /api HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 664
< Content-Type: application/json;charset=UTF-8
<
{ [664 bytes data]
100 664 100 664 0 0 13278 0 --:--:-- --:--:-- --:--:-- 15441
* Connection #0 to host localhost left intact
[
{
"id": 1,
"title": "Introduction to Quarkus Todo App",
"completed": false,
"order": 0,
"url": null
},
{
"id": 2,
"title": "Quarkus on Azure App Service",
"completed": false,
"order": 1,
"url": "https://learn.microsoft.com/en-us/azure/developer/java/eclipse-microprofile/deploy-microprofile-quarkus-java-app-with-maven-plugin"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
},
{
"id": 4,
"title": "Quarkus on Azure Functions",
"completed": false,
"order": 3,
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Verify Todo apps",
"completed": false,
"order": 5,
"url": null
}
]
Druk op q om quarkus-ontwikkelaarsmodus af te sluiten.
De Azure-resources maken om de Quarkus-app uit te voeren
In de stappen in deze sectie ziet u hoe u de volgende Azure-resources maakt om de Quarkus-voorbeeld-app uit te voeren:
- Flexibele azure Database for PostgreSQL-server
- Azure Container Registry (ACR)
- Azure Kubernetes Service (AKS)
Sommige van deze resources moeten unieke namen hebben binnen het bereik van het Azure-abonnement. Om deze uniekheid te garanderen, kunt u het initialen-, reeks-, datum-, achtervoegselpatroon gebruiken. Als u dit patroon wilt toepassen, noemt u uw resources door uw initialen, een reeksnummer, de datum van vandaag en een bepaald type resourcespecifiek achtervoegsel weer te geven, rg
bijvoorbeeld voor 'resourcegroep'. In de volgende omgevingsvariabelen wordt dit patroon gebruikt. Vervang de tijdelijke aanduidingen UNIQUE_VALUE
LOCATION
DB_PASSWORD
en door uw eigen waarden en voer vervolgens de volgende opdrachten uit in uw terminal:
export UNIQUE_VALUE=<your unique value, such as ejb010717>
export RESOURCE_GROUP_NAME=${UNIQUE_VALUE}rg
export LOCATION=<your desired Azure region for deploying your resources - for example, northeurope>
export REGISTRY_NAME=${UNIQUE_VALUE}reg
export DB_SERVER_NAME=${UNIQUE_VALUE}db
export DB_NAME=demodb
export DB_ADMIN=demouser
export DB_PASSWORD='<your desired password for the database server - for example, Secret123456>'
export CLUSTER_NAME=${UNIQUE_VALUE}aks
export AKS_NS=${UNIQUE_VALUE}ns
Een Flexibele Azure Database for PostgreSQL-server maken
Azure Database for PostgreSQL Flexible Server is een volledig beheerde databaseservice die is ontworpen om nauwkeurige controle en flexibiliteit te bieden als het gaat om databasebeheerfuncties en configuratie-instellingen. In deze sectie wordt beschreven hoe u een Exemplaar van Azure Database for PostgreSQL Flexible Server maakt met behulp van de Azure CLI. Zie quickstart: Een Exemplaar van Azure Database for PostgreSQL - Flexible Server maken met behulp van Azure CLI voor meer informatie.
Maak eerst een resourcegroep die de databaseserver en andere resources bevat met behulp van de volgende opdracht:
az group create \
--name $RESOURCE_GROUP_NAME \
--location $LOCATION
Maak vervolgens een exemplaar van een flexibele Azure Database for PostgreSQL-server met behulp van de volgende opdracht:
az postgres flexible-server create \
--name $DB_SERVER_NAME \
--resource-group $RESOURCE_GROUP_NAME \
--admin-user $DB_ADMIN \
--admin-password $DB_PASSWORD \
--database-name $DB_NAME \
--public-access 0.0.0.0 \
--yes
Het duurt enkele minuten om de server, database, beheerder en firewallregels te maken. Als de opdracht is geslaagd, ziet de uitvoer er ongeveer als volgt uit:
{
"connectionString": "postgresql://<DB_ADMIN>:<DB_PASSWORD>@<DB_SERVER_NAME>.postgres.database.azure.com/<DB_NAME>?sslmode=require",
"databaseName": "<DB_NAME>",
"firewallName": "AllowAllAzureServicesAndResourcesWithinAzureIps_2024-7-5_14-39-45",
"host": "<DB_SERVER_NAME>.postgres.database.azure.com",
"id": "/subscriptions/REDACTED/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.DBforPostgreSQL/flexibleServers/<DB_SERVER_NAME>",
"location": "North Europe",
"password": "<DB_PASSWORD>",
"resourceGroup": "<RESOURCE_GROUP_NAME>",
"skuname": "Standard_D2s_v3",
"username": "<DB_ADMIN>",
"version": "13"
}
Een Azure Container Registry-exemplaar maken
Omdat Quarkus een systeemeigen cloudtechnologie is, biedt het ingebouwde ondersteuning voor het maken van containers die worden uitgevoerd in Kubernetes. Kubernetes is volledig afhankelijk van het hebben van een containerregister waaruit de containerinstallatiekopieën worden gevonden die moeten worden uitgevoerd. AKS heeft ingebouwde ondersteuning voor Azure Container Registry (ACR).
Gebruik de opdracht az acr create om het ACR-exemplaar te maken. In het volgende voorbeeld wordt een ACR-exemplaar gemaakt met de waarde van uw omgevingsvariabele ${REGISTRY_NAME}
:
az acr create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $REGISTRY_NAME \
--sku Basic \
--admin-enabled
Na korte tijd ziet u JSON-uitvoer die de volgende regels bevat:
"provisioningState": "Succeeded",
"publicNetworkAccess": "Enabled",
"resourceGroup": "<YOUR_RESOURCE_GROUP>",
Uw Docker verbinden met het ACR-exemplaar
Meld u aan bij het ACR-exemplaar. Als u zich aanmeldt, kunt u een afbeelding pushen. Gebruik de volgende opdrachten om de verbinding te controleren:
export LOGIN_SERVER=$(az acr show \
--name $REGISTRY_NAME \
--query 'loginServer' \
--output tsv)
echo $LOGIN_SERVER
export USER_NAME=$(az acr credential show \
--name $REGISTRY_NAME \
--query 'username' \
--output tsv)
echo $USER_NAME
export PASSWORD=$(az acr credential show \
--name $REGISTRY_NAME \
--query 'passwords[0].value' \
--output tsv)
echo $PASSWORD
docker login $LOGIN_SERVER -u $USER_NAME -p $PASSWORD
Als u Podman gebruikt in plaats van Docker, moet u de benodigde wijzigingen aanbrengen in de opdracht.
Als u zich hebt aangemeld bij het ACR-exemplaar, ziet Login Succeeded
u aan het einde van de opdrachtuitvoer.
Een AKS-cluster maken
Gebruik de opdracht az aks create om een AKS-cluster te maken. In het volgende voorbeeld wordt een cluster met de naam gemaakt met de waarde van uw omgevingsvariabele ${CLUSTER_NAME}
met één knooppunt. Het cluster is verbonden met het ACR-exemplaar dat u in een vorige stap hebt gemaakt. Het voltooien van deze opdracht duurt enkele minuten.
az aks create \
--resource-group $RESOURCE_GROUP_NAME \
--location ${LOCATION} \
--name $CLUSTER_NAME \
--attach-acr $REGISTRY_NAME \
--node-count 1 \
--generate-ssh-keys
Na een paar minuten wordt de opdracht voltooid en retourneert JSON-geformatteerde informatie over het cluster, inclusief de volgende uitvoer:
"nodeResourceGroup": "MC_<your resource_group_name>_<your cluster name>_<your region>",
"privateFqdn": null,
"provisioningState": "Succeeded",
"resourceGroup": "<your resource group name>",
Verbinding maken met het AKS-cluster
Als u een Kubernetes-cluster wilt beheren, gebruikt kubectl
u de Kubernetes-opdrachtregelclient. Als u lokaal wilt installeren kubectl
, gebruikt u de opdracht az aks install-cli , zoals wordt weergegeven in het volgende voorbeeld:
az aks install-cli
Zie het opdrachtregelprogramma (kubectl) in de Kubernetes-documentatie voor meer informatiekubectl
.
Gebruik de opdracht az aks get-credentials om verbinding te maken kubectl
met uw Kubernetes-cluster, zoals wordt weergegeven in het volgende voorbeeld. Bij deze opdracht worden referenties gedownload en wordt Kubernetes CLI geconfigureerd voor het gebruik van deze referenties.
az aks get-credentials \
--resource-group $RESOURCE_GROUP_NAME \
--name $CLUSTER_NAME \
--overwrite-existing \
--admin
Geslaagde uitvoer bevat tekst die vergelijkbaar is met het volgende voorbeeld:
Merged "ejb010718aks-admin" as current context in /Users/edburns/.kube/config
Het is misschien handig om een alias k
te gebruiken voor kubectl
. Gebruik in dat voorbeeld de volgende opdracht:
alias k=kubectl
Als u de verbinding met uw cluster wilt controleren, gebruikt u de kubectl get
opdracht om een lijst met de clusterknooppunten te retourneren, zoals wordt weergegeven in het volgende voorbeeld:
kubectl get nodes
In de volgende voorbeelduitvoer ziet u het enkele knooppunt dat is gemaakt in de vorige stappen. Zorg ervoor dat de status van het knooppunt Ready is:
NAME STATUS ROLES AGE VERSION
aks-nodepool1-xxxxxxxx-yyyyyyyyyy Ready agent 76s v1.28.9
Een nieuwe naamruimte maken in AKS
Gebruik de volgende opdracht om een nieuwe naamruimte te maken in uw Kubernetes-service voor uw Quarkus-app:
kubectl create namespace ${AKS_NS}
De uitvoer moet eruitzien als in het volgende voorbeeld:
namespace/<your namespace> created
Een geheim maken voor databaseverbinding in AKS
Maak een geheim db-secret
in de AKS-naamruimte om de verbindingsgegevens van de database op te slaan. Gebruik de volgende opdracht om het geheim te maken:
kubectl create secret generic db-secret \
-n ${AKS_NS} \
--from-literal=jdbcurl=jdbc:postgresql://${DB_SERVER_NAME}.postgres.database.azure.com:5432/${DB_NAME}?sslmode=require \
--from-literal=dbusername=${DB_ADMIN} \
--from-literal=dbpassword=${DB_PASSWORD}
De uitvoer moet eruitzien als in het volgende voorbeeld:
secret/db-secret created
De cloudeigen configuratie aanpassen
Quarkus biedt als cloudeigen technologie de mogelijkheid om automatisch resources te configureren voor standaard Kubernetes, Red Hat OpenShift en Knative. Zie de Quarkus Kubernetes-handleiding, Quarkus OpenShift-handleiding en Quarkus Knative Guide voor meer informatie. Ontwikkelaars kunnen de toepassing implementeren in een Kubernetes-doelcluster door de gegenereerde manifesten toe te passen.
Als u de juiste Kubernetes-resources wilt genereren, gebruikt u de volgende opdracht om de quarkus-kubernetes
en container-image-jib
extensies toe te voegen in uw lokale terminal:
quarkus ext add kubernetes container-image-jib
Quarkus wijzigt de POM om ervoor te zorgen dat deze extensies worden vermeld als <dependencies>
. Als u wordt gevraagd iets met de naam JBang
te installeren, antwoordt u ja en staat u toe dat het moet worden geïnstalleerd.
De uitvoer moet eruitzien als in het volgende voorbeeld:
[SUCCESS] ✅ Extension io.quarkus:quarkus-kubernetes has been installed
[SUCCESS] ✅ Extension io.quarkus:quarkus-container-image-jib has been installed
Als u wilt controleren of de extensies zijn toegevoegd, kunt u de uitvoer uitvoeren git diff
en onderzoeken.
Quarkus ondersteunt als cloudeigen technologie het begrip configuratieprofielen. Quarkus heeft de volgende drie ingebouwde profielen:
dev
- Geactiveerd in de ontwikkelmodustest
- Geactiveerd bij het uitvoeren van testsprod
- Het standaardprofiel wanneer het niet wordt uitgevoerd in de ontwikkelings- of testmodus
Quarkus ondersteunt een willekeurig aantal benoemde profielen, indien nodig.
De resterende stappen in deze sectie leiden u naar het verwijderen van opmerkingen en het aanpassen van waarden in het bestand src/main/resources/application.properties . Zorg ervoor dat alle lijnen die beginnen, # %prod.
ongecommenteerd zijn door de voorloop te #
verwijderen.
Het prod.
voorvoegsel geeft aan dat deze eigenschappen actief zijn wanneer ze in het prod
profiel worden uitgevoerd. Zie de Quarkus-documentatie voor meer informatie over configuratieprofielen.
Databaseconfiguratie
Voeg de volgende databaseconfiguratievariabelen toe. De eigenschappen %prod.quarkus.datasource.jdbc.url
van de databaseverbinding, %prod.quarkus.datasource.username
en %prod.quarkus.datasource.password
waarden lezen uit de omgevingsvariabelenDB_JDBC_URL
DB_USERNAME
, respectievelijkDB_PASSWORD
. Deze omgevingsvariabelen worden om veiligheidsredenen toegewezen aan geheime waarden waarin de gegevens van de databaseverbinding worden opgeslagen. Deze worden beschreven in de volgende sectie.
# Database configurations
%prod.quarkus.datasource.db-kind=postgresql
%prod.quarkus.datasource.jdbc.driver=org.postgresql.Driver
%prod.quarkus.datasource.jdbc.url=${DB_JDBC_URL}
%prod.quarkus.datasource.username=${DB_USERNAME}
%prod.quarkus.datasource.password=${DB_PASSWORD}
%prod.quarkus.hibernate-orm.database.generation=drop-and-create
%prod.quarkus.hibernate-orm.sql-load-script=import.sql
Kubernetes-configuratie
Voeg de volgende Kubernetes-configuratievariabelen toe. Zorg ervoor dat deze is ingesteld service-type
op load-balancer
toegang tot de app extern.
# Kubernetes configurations
%prod.quarkus.kubernetes.deployment-target=kubernetes
%prod.quarkus.kubernetes.service-type=load-balancer
%prod.quarkus.kubernetes.env.secrets=db-secret
%prod.quarkus.kubernetes.env.mapping.DB_JDBC_URL.from-secret=db-secret
%prod.quarkus.kubernetes.env.mapping.DB_JDBC_URL.with-key=jdbcurl
%prod.quarkus.kubernetes.env.mapping.DB_USERNAME.from-secret=db-secret
%prod.quarkus.kubernetes.env.mapping.DB_USERNAME.with-key=dbusername
%prod.quarkus.kubernetes.env.mapping.DB_PASSWORD.from-secret=db-secret
%prod.quarkus.kubernetes.env.mapping.DB_PASSWORD.with-key=dbpassword
De andere Kubernetes-configuraties geven de toewijzing van de geheime waarden aan de omgevingsvariabelen in de Quarkus-toepassing op. Het db-secret
geheim bevat de verbindingsgegevens van de database. De jdbcurl
, dbusername
en dbpassword
sleutels in de geheime toewijzing aan respectievelijk de DB_JDBC_URL
, DB_USERNAME
en DB_PASSWORD
omgevingsvariabelen.
Configuratie van containerinstallatiekopieën
Als systeemeigen cloudtechnologie biedt Quarkus ondersteuning voor het genereren van OCI-containerinstallatiekopieën die compatibel zijn met Docker en Podman. Voeg de volgende variabelen voor containerinstallatiekopieën toe. Vervang respectievelijk de waarden van <LOGIN_SERVER_VALUE>
en <USER_NAME_VALUE>
door de waarden van de werkelijke waarden van de ${LOGIN_SERVER}
en ${USER_NAME}
omgevingsvariabelen.
# Container Image Build
%prod.quarkus.container-image.build=true
%prod.quarkus.container-image.registry=<LOGIN_SERVER_VALUE>
%prod.quarkus.container-image.group=<USER_NAME_VALUE>
%prod.quarkus.container-image.name=todo-quarkus-aks
%prod.quarkus.container-image.tag=1.0
Bouw de containerinstallatiekopieën en push deze naar ACR
Gebruik nu de volgende opdracht om de toepassing zelf te bouwen. Met deze opdracht worden de Kubernetes- en Jib-extensies gebruikt om de containerinstallatiekopieën te bouwen.
quarkus build --no-tests
De uitvoer moet eindigen op BUILD SUCCESS
. De Kubernetes-manifestbestanden worden gegenereerd in target/kubernetes, zoals wordt weergegeven in het volgende voorbeeld:
tree target/kubernetes
target/kubernetes
├── kubernetes.json
└── kubernetes.yml
0 directories, 2 files
U kunt controleren of de containerinstallatiekopie ook wordt gegenereerd met behulp van docker
of podman
opdrachtregel (CLI). Uitvoer ziet er ongeveer uit als in het volgende voorbeeld:
docker images | grep todo
<LOGIN_SERVER_VALUE>/<USER_NAME_VALUE>/todo-quarkus-aks 1.0 b13c389896b7 18 minutes ago 424MB
Push de containerinstallatiekopieën naar ACR met behulp van de volgende opdracht:
export TODO_QUARKUS_TAG=$(docker images | grep todo-quarkus-aks | head -n1 | cut -d " " -f1)
echo ${TODO_QUARKUS_TAG}
docker push ${TODO_QUARKUS_TAG}:1.0
De uitvoer moet er als in het volgende voorbeeld uitzien:
The push refers to repository [<LOGIN_SERVER_VALUE>/<USER_NAME_VALUE>/todo-quarkus-aks]
dfd615499b3a: Pushed
56f5cf1aa271: Pushed
4218d39b228e: Pushed
b0538737ed64: Pushed
d13845d85ee5: Pushed
60609ec85f86: Pushed
1.0: digest: sha256:0ffd70d6d5bb3a4621c030df0d22cf1aa13990ca1880664d08967bd5bab1f2b6 size: 1995
Nu u de app naar ACR hebt gepusht, kunt u AKS vertellen de app uit te voeren.
De Quarkus-app implementeren in AKS
In de stappen in deze sectie ziet u hoe u de Quarkus-voorbeeld-app uitvoert op de Azure-resources die u hebt gemaakt.
Kubectl gebruiken om de Quarkus-app te implementeren in AKS
Implementeer de Kubernetes-resources met behulp van kubectl
de opdrachtregel, zoals wordt weergegeven in het volgende voorbeeld:
kubectl apply -f target/kubernetes/kubernetes.yml -n ${AKS_NS}
De uitvoer moet eruitzien als in het volgende voorbeeld:
deployment.apps/quarkus-todo-demo-app-aks created
Controleer of de app wordt uitgevoerd met behulp van de volgende opdracht:
kubectl -n $AKS_NS get pods
Als de waarde van het STATUS
veld iets anders weergeeft dan Running
, lost u het probleem op en lost u het probleem op voordat u doorgaat. Het kan helpen om de podlogboeken te onderzoeken met behulp van de volgende opdracht:
kubectl -n $AKS_NS logs $(kubectl -n $AKS_NS get pods | grep quarkus-todo-demo-app-aks | cut -d " " -f1)
Haal de EXTERNAL-IP
toegang tot de Todo-toepassing op met behulp van de volgende opdracht:
kubectl get svc -n ${AKS_NS}
De uitvoer moet eruitzien als in het volgende voorbeeld:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
quarkus-todo-demo-app-aks LoadBalancer 10.0.236.101 20.12.126.200 80:30963/TCP 37s
U kunt de volgende opdracht gebruiken om de waarde van EXTERNAL-IP
een omgevingsvariabele op te slaan als een volledig gekwalificeerde URL:
export QUARKUS_URL=http://$(kubectl get svc -n ${AKS_NS} | grep quarkus-todo-demo-app-aks | cut -d " " -f10)
echo $QUARKUS_URL
Open een nieuwe webbrowser met de waarde van ${QUARKUS_URL}
. Voeg vervolgens een nieuw taakitem toe met de tekst Deployed the Todo app to AKS
. Selecteer ook het Introduction to Quarkus Todo App
item als voltooid.
Open de RESTful-API (/api
) om alle taken op te halen die zijn opgeslagen in de Azure PostgreSQL-database, zoals wordt weergegeven in het volgende voorbeeld:
curl --verbose ${QUARKUS_URL}/api | jq .
De uitvoer moet eruitzien als in het volgende voorbeeld:
* Connected to 20.237.68.225 (20.237.68.225) port 80 (#0)
> GET /api HTTP/1.1
> Host: 20.237.68.225
> User-Agent: curl/7.88.1
> Accept: */*
>
< HTTP/1.1 200 OK
< content-length: 828
< Content-Type: application/json;charset=UTF-8
<
[
{
"id": 2,
"title": "Quarkus on Azure App Service",
"completed": false,
"order": 1,
"url": "https://learn.microsoft.com/en-us/azure/developer/java/eclipse-microprofile/deploy-microprofile-quarkus-java-app-with-maven-plugin"
},
{
"id": 3,
"title": "Quarkus on Azure Container Apps",
"completed": false,
"order": 2,
"url": "https://learn.microsoft.com/en-us/training/modules/deploy-java-quarkus-azure-container-app-postgres/"
},
{
"id": 4,
"title": "Quarkus on Azure Functions",
"completed": false,
"order": 3,
"url": "https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-first-quarkus"
},
{
"id": 5,
"title": "Deployed the Todo app to AKS",
"completed": false,
"order": 5,
"url": null
},
{
"id": 1,
"title": "Introduction to Quarkus Todo App",
"completed": true,
"order": 0,
"url": null
}
]
Controleer of de database is bijgewerkt met behulp van Azure Cloud Shell
Open Azure Cloud Shell in Azure Portal door het Cloud Shell-pictogram te selecteren, zoals wordt weergegeven in de volgende schermopname:
Voer de volgende opdracht lokaal uit en plak het resultaat in Azure Cloud Shell:
echo psql --host=${DB_SERVER_NAME}.postgres.database.azure.com --port=5432 --username=${DB_ADMIN} --dbname=${DB_NAME}
Wanneer u om het wachtwoord wordt gevraagd, gebruikt u de waarde die u hebt gebruikt bij het maken van de database.
Gebruik de volgende query om alle taken op te halen:
select * from todo;
De uitvoer moet er ongeveer uitzien als in het volgende voorbeeld en moet dezelfde items bevatten in de todo-app-GUI die eerder is weergegeven:
Als u in de uitvoer ziet MORE
, typt u q om de pager af te sluiten.
Voer \q in om het psql
programma af te sluiten en terug te keren naar de Cloud Shell.
Resources opschonen
Om Azure-kosten te vermijden, moet u overbodige resources opschonen. Wanneer het cluster niet meer nodig is, gebruikt u de opdracht az group delete om de resourcegroep, de containerservice, het containerregister en alle gerelateerde resources te verwijderen.
git reset --hard
docker rmi ${TODO_QUARKUS_TAG}:1.0
docker rmi postgres
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait
U kunt ook de docker rmi
containerinstallatiekopieën postgres
verwijderen en testcontainers
gegenereerd door quarkus dev-modus.
Volgende stappen
Azure Kubernetes Service