Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Kubernetes Service (AKS) is een beheerde Kubernetes-service waarmee u snel clusters kunt implementeren en beheren. In deze snelstart, gaat u het volgende doen:
- Implementeer een AKS-cluster met behulp van Terraform.
- Voer een voorbeeldtoepassing met meerdere containers uit met een groep microservices en webfront-ends die een retailscenario simuleren.
Opmerking
Om snel aan de slag te gaan met het snel inrichten van een AKS-cluster, bevat dit artikel stappen voor het implementeren van een cluster met alleen standaardinstellingen voor evaluatiedoeleinden. Voordat u een cluster implementeert dat gereed is voor productie, raden we u aan vertrouwd te raken met de referentiearchitectuur van de basislijn om na te gaan hoe dit overeenkomt met uw bedrijfsvereisten.
Voordat u begint
- In deze snelstart wordt ervan uitgegaan dat u een basisbegrip hebt van Kubernetes-concepten. Zie Kubernetes-kernconcepten voor Azure Kubernetes Service (AKS) voor meer informatie.
- U hebt een Azure-account met een actief abonnement nodig. Als u nog geen account hebt, maakt u gratis een account.
- Volg de instructies op basis van de opdrachtregelinterface.
- Zie Een AKS-cluster maken dat ondersteuning biedt voor Windows Server-containers voor meer informatie over het maken van een Windows Server-knooppuntgroep.
Belangrijk
Vanaf 30 november 2025 biedt Azure Kubernetes Service (AKS) geen ondersteuning meer voor beveiligingsupdates voor Azure Linux 2.0. De installatiekopieën van het Azure Linux 2.0-knooppunt zijn bevroren bij de release 202512.06.0. Vanaf 31 maart 2026 worden node-afbeeldingen verwijderd en kunt u de node-pools niet meer schalen. Migreer naar een ondersteunde Versie van Azure Linux door uw knooppuntgroepen te upgraden naar een ondersteunde Kubernetes-versie of door te migreren naar osSku AzureLinux3. Zie [Buitengebruikstelling] Azure Linux 2.0-knooppuntgroepen in AKS voor meer informatie.
- Terraform installeren en configureren.
- Download kubectl.
- Maak een willekeurige waarde voor de naam van de Azure-resourcegroep met behulp van random_pet.
- Maak een Azure-resourcegroep met behulp van azurerm_resource_group.
- Open de configuratie van de AzureRM-provider om de Azure-object-id op te halen met behulp van azurerm_client_config.
- Maak een Kubernetes-cluster met azurerm_kubernetes_cluster.
- Maak een AzAPI-resource azapi_resource.
- Maak een AzAPI-resource om een SSH-sleutelpaar te genereren met behulp van azapi_resource_action.
Aanmelden bij uw Azure-account
Meld u eerst aan bij uw Azure-account en verifieer met behulp van een van de methoden die in de volgende sectie worden beschreven.
Terraform biedt alleen ondersteuning voor verificatie bij Azure met de Azure CLI. Verificatie met behulp van Azure PowerShell wordt niet ondersteund. Terwijl u de Azure PowerShell-module kunt gebruiken bij het uitvoeren van uw Terraform-werk, moet u zich eerst authenticeren bij Azure.
De Terraform-code implementeren
Opmerking
De voorbeeldcode voor dit artikel bevindt zich in de Azure Terraform GitHub-opslagplaats. U kunt het logboekbestand met de testresultaten van de huidige en vorige versies van Terraform bekijken.
nl-NL: Maak een map die u kunt gebruiken om de Terraform-voorbeeldcode te testen en stel deze in als uw huidige map.
Maak een bestand met de naam
providers.tfen voeg de volgende code in:terraform { required_version = ">=1.0" required_providers { azapi = { source = "azure/azapi" version = "~>1.5" } azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } time = { source = "hashicorp/time" version = "0.9.1" } } } provider "azurerm" { features {} }Maak een bestand met de naam
ssh.tfen voeg de volgende code in:resource "random_pet" "ssh_key_name" { prefix = "ssh" separator = "" } resource "azapi_resource_action" "ssh_public_key_gen" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" resource_id = azapi_resource.ssh_public_key.id action = "generateKeyPair" method = "POST" response_export_values = ["publicKey", "privateKey"] } resource "azapi_resource" "ssh_public_key" { type = "Microsoft.Compute/sshPublicKeys@2022-11-01" name = random_pet.ssh_key_name.id location = azurerm_resource_group.rg.location parent_id = azurerm_resource_group.rg.id } output "key_data" { value = azapi_resource_action.ssh_public_key_gen.output.publicKey }Maak een bestand met de naam
main.tfen voeg de volgende code in:# Generate random resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { location = var.resource_group_location name = random_pet.rg_name.id } resource "random_pet" "azurerm_kubernetes_cluster_name" { prefix = "cluster" } resource "random_pet" "azurerm_kubernetes_cluster_dns_prefix" { prefix = "dns" } resource "azurerm_kubernetes_cluster" "k8s" { location = azurerm_resource_group.rg.location name = random_pet.azurerm_kubernetes_cluster_name.id resource_group_name = azurerm_resource_group.rg.name dns_prefix = random_pet.azurerm_kubernetes_cluster_dns_prefix.id identity { type = "SystemAssigned" } default_node_pool { name = "agentpool" vm_size = "Standard_D2_v2" node_count = var.node_count } linux_profile { admin_username = var.username ssh_key { key_data = azapi_resource_action.ssh_public_key_gen.output.publicKey } } network_profile { network_plugin = "kubenet" load_balancer_sku = "standard" } }Maak een bestand met de naam
variables.tfen voeg de volgende code in:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." } variable "node_count" { type = number description = "The initial quantity of nodes for the node pool." default = 3 } variable "msi_id" { type = string description = "The Managed Service Identity ID. Set this value if you're running this example using Managed Identity as the authentication method." default = null } variable "username" { type = string description = "The admin username for the new cluster." default = "azureadmin" }Maak een bestand met de naam
outputs.tfen voeg de volgende code in:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "kubernetes_cluster_name" { value = azurerm_kubernetes_cluster.k8s.name } output "client_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_certificate sensitive = true } output "client_key" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].client_key sensitive = true } output "cluster_ca_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].cluster_ca_certificate sensitive = true } output "cluster_password" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].password sensitive = true } output "cluster_username" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].username sensitive = true } output "host" { value = azurerm_kubernetes_cluster.k8s.kube_config[0].host sensitive = true } output "kube_config" { value = azurerm_kubernetes_cluster.k8s.kube_config_raw sensitive = true }
Terraform initialiseren
Voer terraform init uit om de Terraform-implementatie te initialiseren. Met deze opdracht wordt de Azure-provider gedownload die is vereist voor het beheren van uw Azure-resources.
terraform init -upgrade
Belangrijkste punten:
- Met
-upgradede parameter worden de benodigde providerinvoegtoepassingen bijgewerkt naar de nieuwste versie die voldoet aan de versiebeperkingen van de configuratie.
Een Terraform-uitvoeringsplan maken
Voer terraform-plan uit om een uitvoeringsplan te maken.
terraform plan -out main.tfplan
Belangrijkste punten:
- De
terraform planopdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-outparameter kunt u een uitvoerbestand voor het plan opgeven. Door de-outparameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
Een Terraform-uitvoeringsplan toepassen
Voer terraform apply uit om het uitvoeringsplan toe te passen op uw cloudinfrastructuur.
terraform apply main.tfplan
Belangrijkste punten:
- In het voorbeeld
terraform applyopdracht wordt ervan uitgegaan dat u eerderterraform plan -out main.tfplanhebt uitgevoerd. - Als u een andere bestandsnaam voor de
-outparameter hebt opgegeven, gebruikt u diezelfde bestandsnaam in de aanroep naarterraform apply. - Als u de
-out-parameter niet hebt gebruikt, roepterraform applydan zonder parameters aan.
De resultaten controleren
Haal de naam van de Azure-resourcegroep op met behulp van de volgende opdracht.
resource_group_name=$(terraform output -raw resource_group_name)Geef de naam van uw nieuwe Kubernetes-cluster weer met behulp van de opdracht az aks list .
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output tableHaal de Kubernetes-configuratie op uit de Terraform-status en sla deze op in een bestand dat
kubectlkan worden gelezen met behulp van de volgende opdracht.echo "$(terraform output kube_config)" > ./azurek8sControleer of de vorige opdracht geen ASCII EOT-teken heeft toegevoegd met behulp van de volgende opdracht.
cat ./azurek8sBelangrijkste punten:
- Als u
<< EOTaan het begin enEOTaan het einde ziet, verwijdert u deze tekens uit het bestand. Anders wordt mogelijk het volgende foutbericht weergegeven:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- Als u
Stel een omgevingsvariabele in zodat
kubectlde juiste configuratie kan worden opgehaald met behulp van de volgende opdracht.export KUBECONFIG=./azurek8sControleer de status van het cluster met behulp van de
kubectl get nodesopdracht.kubectl get nodes
Belangrijkste punten:
- Toen u het AKS-cluster maakte, is bewaking ingeschakeld voor het vastleggen van metrische statusgegevens voor zowel de clusterknooppunten als pods. Deze gezondheidsstatistieken zijn beschikbaar in de Azure portal. Zie Status van Azure Kubernetes Service bewaken voor meer informatie over containerstatuscontrole.
- Verschillende sleutelwaarden die zijn geclassificeerd als uitvoer bij het toepassen van het Terraform-uitvoeringsplan. Het hostadres, de gebruikersnaam van het AKS-cluster en het AKS-clusterwachtwoord worden bijvoorbeeld uitgevoerd.
De toepassing implementeren
Als u de toepassing wilt implementeren, gebruikt u een manifestbestand om alle objecten te maken die nodig zijn om de AKS Store-toepassing uit te voeren. Een Kubernetes-manifestbestand definieert de gewenste status van een cluster, zoals welke containerinstallatiekopieën moeten worden uitgevoerd. Het manifest bevat de volgende Kubernetes-implementaties en -services:
- Webwinkel: Webtoepassing voor klanten om producten te bekijken en bestellingen te plaatsen.
- Productservice: toont productgegevens.
- Orderservice: Orders plaatsen.
- Rabbit MQ: Berichtensysteem voor een bestelwachtrij.
Opmerking
We raden aan om stateful containers, zoals RabbitMQ, niet te gebruiken zonder permanente opslag voor productie. Deze worden hier gebruikt voor het gemak, maar we raden u aan beheerde services te gebruiken, zoals Azure CosmosDB of Azure Service Bus.
Maak een bestand met de naam
aks-store-quickstart.yamlen kopieer dit in het volgende manifest:apiVersion: apps/v1 kind: Deployment metadata: name: rabbitmq spec: replicas: 1 selector: matchLabels: app: rabbitmq template: metadata: labels: app: rabbitmq spec: nodeSelector: "kubernetes.io/os": linux containers: - name: rabbitmq image: mcr.microsoft.com/mirror/docker/library/rabbitmq:3.10-management-alpine ports: - containerPort: 5672 name: rabbitmq-amqp - containerPort: 15672 name: rabbitmq-http env: - name: RABBITMQ_DEFAULT_USER value: "username" - name: RABBITMQ_DEFAULT_PASS value: "password" resources: requests: cpu: 10m memory: 128Mi limits: cpu: 250m memory: 256Mi volumeMounts: - name: rabbitmq-enabled-plugins mountPath: /etc/rabbitmq/enabled_plugins subPath: enabled_plugins volumes: - name: rabbitmq-enabled-plugins configMap: name: rabbitmq-enabled-plugins items: - key: rabbitmq_enabled_plugins path: enabled_plugins --- apiVersion: v1 data: rabbitmq_enabled_plugins: | [rabbitmq_management,rabbitmq_prometheus,rabbitmq_amqp1_0]. kind: ConfigMap metadata: name: rabbitmq-enabled-plugins --- apiVersion: v1 kind: Service metadata: name: rabbitmq spec: selector: app: rabbitmq ports: - name: rabbitmq-amqp port: 5672 targetPort: 5672 - name: rabbitmq-http port: 15672 targetPort: 15672 type: ClusterIP --- apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: ghcr.io/azure-samples/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "rabbitmq" - name: ORDER_QUEUE_PORT value: "5672" - name: ORDER_QUEUE_USERNAME value: "username" - name: ORDER_QUEUE_PASSWORD value: "password" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi initContainers: - name: wait-for-rabbitmq image: busybox command: ['sh', '-c', 'until nc -zv rabbitmq 5672; do echo waiting for rabbitmq; sleep 2; done;'] resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi --- apiVersion: v1 kind: Service metadata: name: order-service spec: type: ClusterIP ports: - name: http port: 3000 targetPort: 3000 selector: app: order-service --- apiVersion: apps/v1 kind: Deployment metadata: name: product-service spec: replicas: 1 selector: matchLabels: app: product-service template: metadata: labels: app: product-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: product-service image: ghcr.io/azure-samples/aks-store-demo/product-service:latest ports: - containerPort: 3002 resources: requests: cpu: 1m memory: 1Mi limits: cpu: 1m memory: 7Mi --- apiVersion: v1 kind: Service metadata: name: product-service spec: type: ClusterIP ports: - name: http port: 3002 targetPort: 3002 selector: app: product-service --- apiVersion: apps/v1 kind: Deployment metadata: name: store-front spec: replicas: 1 selector: matchLabels: app: store-front template: metadata: labels: app: store-front spec: nodeSelector: "kubernetes.io/os": linux containers: - name: store-front image: ghcr.io/azure-samples/aks-store-demo/store-front:latest ports: - containerPort: 8080 name: store-front env: - name: VUE_APP_ORDER_SERVICE_URL value: "http://order-service:3000/" - name: VUE_APP_PRODUCT_SERVICE_URL value: "http://product-service:3002/" resources: requests: cpu: 1m memory: 200Mi limits: cpu: 1000m memory: 512Mi --- apiVersion: v1 kind: Service metadata: name: store-front spec: ports: - port: 80 targetPort: 8080 selector: app: store-front type: LoadBalancerZie Implementaties en YAML-manifestmanifesten voor een uitsplitsing van YAML-manifestbestanden.
Als u het YAML-bestand lokaal maakt en opslaat, kunt u het manifestbestand uploaden naar uw standaardmap in CloudShell door de knop Bestanden uploaden/downloaden te selecteren en het bestand in uw lokale bestandssysteem te selecteren.
Implementeer de toepassing met behulp van de
kubectl applyopdracht en geef de naam van uw YAML-manifest op.kubectl apply -f aks-store-quickstart.yamlIn de volgende voorbeelduitvoer ziet u de implementaties en services:
deployment.apps/rabbitmq created service/rabbitmq created deployment.apps/order-service created service/order-service created deployment.apps/product-service created service/product-service created deployment.apps/store-front created service/store-front created
De toepassing testen
Wanneer de toepassing wordt uitgevoerd, maakt een Kubernetes-service de front-end van de toepassing beschikbaar op internet. Dit proces kan enkele minuten duren.
Controleer de status van de geïmplementeerde pods met behulp van de
kubectl get podsopdracht. Zorg ervoor dat alle podsRunningzijn voordat u doorgaat.kubectl get podsControleer op een openbaar IP-adres voor de store-front-toepassing. Bewaak de voortgang met behulp van de
kubectl get serviceopdracht met het--watchargument.kubectl get service store-front --watchDe uitvoer van het externe IP-adres voor de
store-frontservice wordt in eerste instantie weergegeven als in afwachting:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mZodra het EXTERNAL-IP-adres van in behandeling is gewijzigd in een daadwerkelijk openbaar IP-adres, gebruikt u
CTRL-Com hetkubectlwaakproces te stoppen.In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat aan de service is toegewezen:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mOpen een webbrowser naar het externe IP-adres van uw service om de Azure Store-app in actie te zien.
De hulpbronnen opschonen
AKS-resources verwijderen
Voer de volgende stappen uit wanneer u de resources die zijn gemaakt via Terraform niet meer nodig hebt:
Voer terraform-plan uit en geef de
destroyvlag op.terraform plan -destroy -out main.destroy.tfplanBelangrijkste punten:
- De
terraform planopdracht maakt een uitvoeringsplan, maar voert het niet uit. In plaats daarvan wordt bepaald welke acties nodig zijn om de configuratie te maken die is opgegeven in uw configuratiebestanden. Met dit patroon kunt u controleren of het uitvoeringsplan aan uw verwachtingen voldoet voordat u wijzigingen aanbrengt in de werkelijke resources. - Met de optionele
-outparameter kunt u een uitvoerbestand voor het plan opgeven. Door de-outparameter te gebruiken, zorgt u ervoor dat het plan dat u hebt gecontroleerd precies wordt toegepast.
- De
Voer terraform apply uit om het uitvoeringsplan toe te passen.
terraform apply main.destroy.tfplan
Service-principal verwijderen
Haal de service-principal-id op met behulp van de volgende opdracht.
sp=$(terraform output -raw sp)Verwijder de service-principal met behulp van de opdracht az ad sp delete .
az ad sp delete --id $sp
- De Azure Developer CLI (AZD) installeren
- Terraform installeren en configureren.
- U kunt de toepassingscode controleren die wordt gebruikt in de opslagplaats Azure-Samples/aks-store-demo.
De Azure Developer CLI-sjabloon klonen
Met de Azure Developer CLI kunt u snel voorbeelden downloaden uit de opslagplaats Azure-Samples . In onze quickstart downloadt u de aks-store-demo toepassing. Zie het azd overzicht voor meer informatie over de algemene gebruiksvoorbeelden.
Kloon de AKS store demo-sjabloon uit de Azure-Samples opslagplaats met behulp van de
azd initopdracht met de--templateparameter.azd init --template Azure-Samples/aks-store-demoVoer een omgevingsnaam in voor uw project die alleen alfanumerieke tekens en afbreekstreepjes gebruikt, zoals aks-terraform-1.
Enter a new environment name: aks-terraform-1
Aanmelden bij uw Azure Cloud-account
De azd sjabloon bevat alle code die nodig is om de services te maken, maar u moet zich aanmelden bij uw Azure-account om de toepassing op AKS te hosten.
Meld u aan bij uw account met behulp van de
azd auth loginopdracht.azd auth loginKopieer de apparaatcode die wordt weergegeven in de uitvoer en druk op Enter om u aan te melden.
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...Belangrijk
Als u een buiten-netwerk-VM of GitHub Codespace gebruikt, veroorzaken bepaalde Azure-beveiligingsbeleidsregels conflicten wanneer ze worden gebruikt om u aan te melden.
azd auth loginAls u hier een probleem krijgt, kunt u de tijdelijke oplossing voor azd-authenticatie volgen, wat het gebruik van eencurl-verzoek naar de localhost-URL inhoudt waarnaar u bent omgeleid nadat uazd auth loginhebt uitgevoerd.Authenticeer met uw inloggegevens op de aanmeldingspagina van uw organisatie.
Controleer of u verbinding probeert te maken vanuit de Azure CLI.
Controleer het bericht 'Verificatie van apparaatcode voltooid. Aangemeld bij Azure." wordt weergegeven in de oorspronkelijke terminal.
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
tijdelijke oplossing voor azd-authenticatie
Voor deze tijdelijke oplossing moet de Azure CLI zijn geïnstalleerd.
Open een terminalvenster en meld u aan bij de Azure CLI door de
az loginopdracht te gebruiken waarbij de--scopeparameter is ingesteld ophttps://graph.microsoft.com/.default.az login --scope https://graph.microsoft.com/.defaultU wordt omgeleid naar een verificatiepagina op een nieuw tabblad om een browsertoegangstoken te maken, zoals wordt weergegeven in het volgende voorbeeld:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.Kopieer de localhost-URL van de webpagina die u hebt ontvangen nadat u zich hebt aangemeld.
azd auth loginGebruik in een nieuw terminalvenster de volgende
curlaanvraag om u aan te melden. Zorg ervoor dat u de<localhost>tijdelijke aanduiding vervangt door de localhost-URL die u in de vorige stap hebt gekopieerd.curl <localhost>Een geslaagde aanmelding voert een HTML-webpagina uit, zoals wordt weergegeven in het volgende voorbeeld:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta http-equiv="refresh" content="60;url=https://docs.microsoft.com/cli/azure/"> <title>Login successfully</title> <style> body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } code { font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; display: inline-block; background-color: rgb(242, 242, 242); padding: 12px 16px; margin: 8px 0px; } </style> </head> <body> <h3>You have logged into Microsoft Azure!</h3> <p>You can close this window, or we will redirect you to the <a href="https://docs.microsoft.com/cli/azure/">Azure CLI documentation</a> in 1 minute.</p> <h3>Announcements</h3> <p>[Windows only] Azure CLI is collecting feedback on using the <a href="https://learn.microsoft.com/windows/uwp/security/web-account-manager">Web Account Manager</a> (WAM) broker for the login experience.</p> <p>You may opt-in to use WAM by running the following commands:</p> <code> az config set core.allow_broker=true<br> az account clear<br> az login </code> </body> </html>Sluit de huidige terminal en open de oorspronkelijke terminal. U ziet nu een JSON-lijst met uw abonnementen.
Kopieer het
idveld van het abonnement dat u wilt gebruiken.Stel uw abonnement in met behulp van de
az account setopdracht.az account set --subscription <subscription_id>
Resources voor uw cluster maken en implementeren
Als u de toepassing wilt implementeren, gebruikt u de azd up opdracht om alle objecten te maken die nodig zijn om de AKS Store-toepassing uit te voeren.
- Een
azure.yamlbestand definieert de gewenste status van een cluster, zoals welke containerinstallatiekopieën moeten worden opgehaald en bevat de volgende Kubernetes-implementaties en -services:
- Webwinkel: Webtoepassing voor klanten om producten te bekijken en bestellingen te plaatsen.
- Productservice: toont productgegevens.
- Orderservice: Orders plaatsen.
- Rabbit MQ: Berichtensysteem voor een bestelwachtrij.
Opmerking
We raden aan om stateful containers, zoals RabbitMQ, niet te gebruiken zonder permanente opslag voor productie. Deze worden hier gebruikt voor het gemak, maar we raden u aan beheerde services te gebruiken, zoals Azure Cosmos DB of Azure Service Bus.
Toepassingsmiddelen implementeren
Met azd de sjabloon voor deze quickstart maakt u een nieuwe resourcegroep met een AKS-cluster en een Azure Key Vault. De sleutelkluis slaat clientgeheimen op en voert de services uit in de pets naamruimte.
Maak alle toepassingsbronnen met behulp van de
azd upopdracht.azd upazd upvoert alle hooks in deazd-hooksmap uit om de toepassingsservices vooraf te registreren, in te richten en te implementeren.Pas hooks aan om aangepaste code toe te voegen aan de
azdwerkstroomfasen. Zie deazdnaslaginformatie over hooks voor meer informatie.Selecteer een Azure-abonnement voor uw factureringsgebruik.
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)Selecteer een regio waar u uw toepassing wilt implementeren.
Select an Azure location to use: [Use arrows to move, type to filter] 1. (South America) Brazil Southeast (brazilsoutheast) 2. (US) Central US (centralus) 3. (US) East US (eastus) > 43. (US) East US 2 (eastus2) 4. (US) East US STG (eastusstg) 5. (US) North Central US (northcentralus) 6. (US) South Central US (southcentralus)azdvoert automatisch de preprovision- en postprovision-hooks uit om de resources voor uw toepassing te maken. Dit proces kan enkele minuten duren. Als u klaar bent, ziet u een uitvoer die lijkt op het volgende voorbeeld:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
Terraform-plannen genereren
Binnen uw Azure Developer-sjabloon bevat de /infra/terraform map alle code die wordt gebruikt om het Terraform-plan te genereren.
Terraform implementeert en voert commando's uit met behulp van terraform apply als onderdeel van de inrichtingsstap van azd. Als u klaar bent, ziet u een uitvoer die lijkt op het volgende voorbeeld:
Plan: 5 to add, 0 to change, 0 to destroy.
...
Saved the plan to: /workspaces/aks-store-demo/.azure/aks-terraform-azd/infra/terraform/main.tfplan
De toepassing testen
Wanneer de toepassing wordt uitgevoerd, maakt een Kubernetes-service de front-end van de toepassing beschikbaar op internet. Dit proces kan enkele minuten duren.
Stel uw naamruimte in als de demonaamruimte
petsmet behulp van dekubectl set-contextopdracht.kubectl config set-context --current --namespace=petsControleer de status van de geïmplementeerde pods met behulp van de
kubectl get podsopdracht. Zorg ervoor dat alle pods gereed zijnRunningvoordat u doorgaat.kubectl get podsControleer op een openbaar IP-adres voor de store-front-toepassing en controleer de voortgang met behulp van de
kubectl get serviceopdracht met het--watchargument.kubectl get service store-front --watchDe uitvoer van het externe IP-adres voor de
store-frontservice wordt in eerste instantie weergegeven als in afwachting:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mZodra het EXTERNAL-IP-adres van in behandeling is gewijzigd in een daadwerkelijk openbaar IP-adres, gebruikt u
CTRL-Com hetkubectlwaakproces te stoppen.In de volgende voorbeelduitvoer ziet u een geldig openbaar IP-adres dat is toegewezen aan de service:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mOpen een webbrowser naar het externe IP-adres van uw service om de Azure Store-app in actie te zien.
Het cluster verwijderen
Zodra u klaar bent met de quickstart, schoont u overbodige resources op om Azure-kosten te voorkomen.
Verwijder alle resources die u in de quickstart hebt gemaakt met behulp van de
azd downopdracht.azd downBevestig uw beslissing om alle gebruikte resources uit uw abonnement te verwijderen door te typen
yen op te drukkenEnter.? Total resources to delete: 14, are you sure you want to continue? (y/N)Leegmaken toestaan om de quickstart-variabelen opnieuw te gebruiken, indien van toepassing door te typen
yen op te drukkenEnter.[Warning]: These resources have soft delete enabled allowing them to be recovered for a period or time after deletion. During this period, their names can't be reused. In the future, you can use the argument --purge to skip this confirmation.
Problemen met Terraform in Azure oplossen
Veelvoorkomende problemen bij het gebruik van Terraform in Azure oplossen.
Volgende stappen
In deze quickstart hebt u een Kubernetes-cluster geïmplementeerd en vervolgens een eenvoudige toepassing met meerdere containers erop geïmplementeerd. Deze voorbeeldtoepassing is alleen bedoeld voor demodoeleinden en vertegenwoordigt niet alle aanbevolen procedures voor Kubernetes-toepassingen. Zie de richtlijnen voor AKS-oplossingen voor meer informatie over het maken van volledige oplossingen met AKS voor productie.
Als u meer wilt weten over AKS en een volledig voorbeeld van code-naar-implementatie wilt doorlopen, gaat u verder met de zelfstudie over het Kubernetes-cluster.