Snabbstart: Distribuera ett AKS-kluster (Azure Kubernetes Service) med Terraform
Azure Kubernetes Service (AKS) är en hanterad Kubernetes-tjänst som gör att du snabbt kan distribuera och hantera kluster. I den här snabbstarten kommer du att göra följande:
- Distribuera ett AKS-kluster med Terraform.
- Kör ett exempelprogram med flera containrar med en grupp mikrotjänster och webbklientdelar som simulerar ett detaljhandelsscenario.
Kommentar
För att komma igång med att snabbt etablera ett AKS-kluster innehåller den här artikeln steg för att distribuera ett kluster med standardinställningar endast i utvärderingssyfte. Innan du distribuerar ett produktionsklart kluster rekommenderar vi att du bekantar dig med vår referensarkitektur för baslinje för att överväga hur det överensstämmer med dina affärskrav.
Innan du börjar
- Den här snabbstarten förutsätter grundläggande kunskaper om Kubernetes-begrepp. Mer information finns i Viktiga koncept för Azure Kubernetes Service (AKS).
- Du behöver ett Azure-konto med en aktiv prenumeration. Om du inte har något skapar du ett konto kostnadsfritt.
- Följ anvisningarna baserat på kommandoradsgränssnittet.
- Mer information om hur du skapar en Windows Server-nodpool finns i Skapa ett AKS-kluster som stöder Windows Server-containrar.
Kommentar
Azure Linux-nodpoolen är nu allmänt tillgänglig (GA). Mer information om fördelarna och distributionsstegen finns i Introduktion till Azure Linux Container Host for AKS.
- Installera och konfigurera Terraform.
- Ladda ned kubectl.
- Skapa ett slumpmässigt värde för Azure-resursgruppens namn med hjälp av random_pet.
- Skapa en Azure-resursgrupp med hjälp av azurerm_resource_group.
- Få åtkomst till konfigurationen av AzureRM-providern för att hämta Azure Object ID med hjälp av azurerm_client_config.
- Skapa ett Kubernetes-kluster med azurerm_kubernetes_cluster.
- Skapa en AzAPI-resurs azapi_resource.
- Skapa en AzAPI-resurs för att generera ett SSH-nyckelpar med hjälp av azapi_resource_action.
Logga in på ditt Azure-konto
Logga först in på ditt Azure-konto och autentisera med någon av metoderna som beskrivs i följande avsnitt.
Terraform stöder endast autentisering till Azure med Azure CLI. Autentisering med Azure PowerShell stöds inte. Även om du kan använda Azure PowerShell-modulen när du utför ditt Terraform-arbete måste du därför först autentisera till Azure.
Implementera Terraform-koden
Kommentar
Exempelkoden för den här artikeln finns på Azure Terraform GitHub-lagringsplatsen. Du kan visa loggfilen som innehåller testresultaten från aktuella och tidigare versioner av Terraform.
Se fler artiklar och exempelkod som visar hur du använder Terraform för att hantera Azure-resurser
Skapa en katalog som du kan använda för att testa Terraform-exempelkoden och göra den till din aktuella katalog.
Skapa en fil med namnet
providers.tf
och infoga följande kod: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 {} }
Skapa en fil med namnet
ssh.tf
och infoga följande kod: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 }
Skapa en fil med namnet
main.tf
och infoga följande kod:# 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" } }
Skapa en fil med namnet
variables.tf
och infoga följande kod: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" }
Skapa en fil med namnet
outputs.tf
och infoga följande kod: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 }
Initiera Terraform
Kör terraform init för att initiera Terraform-distributionen. Det här kommandot laddar ned den Azure-provider som krävs för att hantera dina Azure-resurser.
terraform init -upgrade
Viktiga punkter:
- Parametern
-upgrade
uppgraderar nödvändiga provider-plugin-program till den senaste versionen som uppfyller konfigurationens versionsbegränsningar.
Skapa en Terraform-körningsplan
Kör terraform-planen för att skapa en körningsplan.
terraform plan -out main.tfplan
Viktiga punkter:
- Kommandot
terraform plan
skapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser. - Med den valfria
-out
parametern kan du ange en utdatafil för planen. Med hjälp av parametern-out
ser du till att planen du granskade är exakt vad som tillämpas.
Tillämpa en Terraform-körningsplan
Kör terraform gäller för att tillämpa körningsplanen på din molninfrastruktur.
terraform apply main.tfplan
Viktiga punkter:
terraform apply
Exempelkommandot förutsätter att du tidigare kördeterraform plan -out main.tfplan
.- Om du har angett ett annat filnamn för parametern
-out
använder du samma filnamn i anropet tillterraform apply
. - Om du inte använde parametern
-out
anroparterraform apply
du utan några parametrar.
Verifiera resultatet
Hämta namnet på Azure-resursgruppen med hjälp av följande kommando.
resource_group_name=$(terraform output -raw resource_group_name)
Visa namnet på ditt nya Kubernetes-kluster med kommandot az aks list .
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output table
Hämta Kubernetes-konfigurationen från Terraform-tillståndet och lagra den i en fil som
kubectl
kan läsas med hjälp av följande kommando.echo "$(terraform output kube_config)" > ./azurek8s
Kontrollera att föregående kommando inte lade till ett ASCII EOT-tecken med hjälp av följande kommando.
cat ./azurek8s
Viktiga punkter:
- Om du ser
<< EOT
i början ochEOT
i slutet tar du bort dessa tecken från filen. Annars kan du få följande felmeddelande:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- Om du ser
Ange en miljövariabel så
kubectl
att du kan hämta rätt konfiguration med hjälp av följande kommando.export KUBECONFIG=./azurek8s
Kontrollera hälsotillståndet för klustret med hjälp av
kubectl get nodes
kommandot .kubectl get nodes
Viktiga punkter:
- När du skapade AKS-klustret aktiverades övervakning för att samla in hälsomått för både klusternoderna och poddarna. De här hälsomåtten är tillgängliga i Azure-portalen. Mer information om övervakning av hälsotillstånd för containrar finns i Övervaka hälsotillstånd för Azure Kubernets Service.
- Flera nyckelvärden klassificerade som utdata när du tillämpade Terraform-körningsplanen. Till exempel är värdadressen, AKS-klustrets användarnamn och AKS-klusterlösenordet utdata.
Distribuera programmet
För att distribuera programmet använder du en manifestfil för att skapa alla objekt som krävs för att köra AKS Store-programmet. En Kubernetes-manifestfil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska köras. Manifestet innehåller följande Kubernetes-distributioner och -tjänster:
- Butiksfront: Webbprogram där kunder kan visa produkter och göra beställningar.
- Produkttjänst: Visar produktinformation.
- Ordertjänst: Gör beställningar.
- Rabbit MQ: Meddelandekö för en orderkö.
Kommentar
Vi rekommenderar inte att du kör tillståndskänsliga containrar, till exempel Rabbit MQ, utan beständig lagring för produktion. Dessa används här för enkelhetens skull, men vi rekommenderar att du använder hanterade tjänster, till exempel Azure CosmosDB eller Azure Service Bus.
Skapa en fil med namnet
aks-store-quickstart.yaml
och kopiera i följande 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: LoadBalancer
En uppdelning av YAML-manifestfiler finns i Distributioner och YAML-manifest.
Om du skapar och sparar YAML-filen lokalt kan du ladda upp manifestfilen till standardkatalogen i CloudShell genom att välja knappen Ladda upp/ladda ned filer och välja filen från det lokala filsystemet.
Distribuera programmet med kommandot
kubectl apply
och ange namnet på ditt YAML-manifest.kubectl apply -f aks-store-quickstart.yaml
Följande exempelutdata visar distributioner och tjänster:
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
Testa programmet
När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra.
Kontrollera statusen för de distribuerade poddarna med kommandot
kubectl get pods
. Gör så att alla poddar ärRunning
innan du fortsätter.kubectl get pods
Sök efter en offentlig IP-adress för programmet store-front. Övervaka förloppet med kommandot
kubectl get service
med--watch
argumentet .kubectl get service store-front --watch
EXTERNA IP-utdata för
store-front
tjänsten visas inledningsvis som väntande:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
När DEN EXTERNA IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du
CTRL-C
för att stoppakubectl
bevakningsprocessen.Följande exempelutdata visar en giltig offentlig IP-adress som har tilldelats tjänsten:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Öppna en webbläsare till tjänstens externa IP-adress för att se hur Azure Store-appen fungerar.
Rensa resurser
Ta bort AKS-resurser
Gör följande när du inte längre behöver de resurser som skapats via Terraform:
Kör terraform-plan och ange
destroy
flaggan.terraform plan -destroy -out main.destroy.tfplan
Viktiga punkter:
- Kommandot
terraform plan
skapar en körningsplan, men kör den inte. I stället avgör den vilka åtgärder som krävs för att skapa den konfiguration som anges i konfigurationsfilerna. Med det här mönstret kan du kontrollera om körningsplanen matchar dina förväntningar innan du gör några ändringar i faktiska resurser. - Med den valfria
-out
parametern kan du ange en utdatafil för planen. Med hjälp av parametern-out
ser du till att planen du granskade är exakt vad som tillämpas.
- Kommandot
Kör terraform tillämpa för att tillämpa körningsplanen.
terraform apply main.destroy.tfplan
Ta bort tjänstens huvudnamn
Hämta tjänstens huvudnamns-ID med hjälp av följande kommando.
sp=$(terraform output -raw sp)
Ta bort tjänstens huvudnamn med kommandot az ad sp delete .
az ad sp delete --id $sp
- Installera Azure Developer CLI (AZD)
- Installera och konfigurera Terraform.
- Du kan granska programkoden som används i lagringsplatsen Azure-Samples/aks-store-demo.
Klona CLI-mallen för Azure Developer
Med Azure Developer CLI kan du snabbt ladda ned exempel från Azure-Samples-lagringsplatsen . I vår snabbstart laddar du ned programmet aks-store-demo
. Mer information om de allmänna användningsfallen finns i översiktenazd
.
Klona AKS Store-demomallen från Azure-Samples-lagringsplatsen med hjälp av
azd init
kommandot med parametern--template
.azd init --template Azure-Samples/aks-store-demo
Ange ett miljönamn för projektet som endast använder alfanumeriska tecken och bindestreck, till exempel aks-terraform-1.
Enter a new environment name: aks-terraform-1
Logga in på ditt Azure Cloud-konto
Mallen azd
innehåller all kod som behövs för att skapa tjänsterna, men du måste logga in på ditt Azure-konto för att vara värd för programmet på AKS.
Logga in på ditt konto med kommandot
azd auth login
.azd auth login
Kopiera enhetskoden som visas i utdata och tryck på Retur för att logga in.
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...
Viktigt!
Om du använder en virtuell dator utan nätverk eller GitHub Codespace orsakar vissa Azure-säkerhetsprinciper konflikter när de används för att logga in med
azd auth login
. Om du stöter på ett problem här kan du följa auth-lösningen azd som tillhandahålls, vilket innebär att du använder encurl
begäran till den localhost-URL som du omdirigerades till efter att ha körtazd auth login
.Autentisera med dina autentiseringsuppgifter på organisationens inloggningssida.
Bekräfta att du försöker ansluta från Azure CLI.
Kontrollera meddelandet "Enhetskodautentiseringen har slutförts. Inloggad i Azure." visas i den ursprungliga terminalen.
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
azd auth workaround
Den här lösningen kräver att du har Azure CLI installerat.
Öppna ett terminalfönster och logga in med Azure CLI med
az login
kommandot med parametern--scope
inställd påhttps://graph.microsoft.com/.default
.az login --scope https://graph.microsoft.com/.default
Du bör omdirigeras till en autentiseringssida på en ny flik för att skapa en webbläsaråtkomsttoken, som du ser i följande exempel:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
Kopiera localhost-URL:en för webbsidan som du fick när du försökte logga in med
azd auth login
.I ett nytt terminalfönster använder du följande
curl
begäran för att logga in. Se till att du ersätter<localhost>
platshållaren med den localhost-URL som du kopierade i föregående steg.curl <localhost>
En lyckad inloggning matar ut en HTML-webbsida, som du ser i följande exempel:
<!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>
Stäng den aktuella terminalen och öppna den ursprungliga terminalen. Du bör se en JSON-lista över dina prenumerationer.
Kopiera fältet för
id
den prenumeration som du vill använda.Ange din prenumeration med hjälp av
az account set
kommandot .az account set --subscription <subscription_id>
Skapa och distribuera resurser för klustret
Om du vill distribuera programmet använder azd up
du kommandot för att skapa alla objekt som krävs för att köra AKS Store-programmet.
- En
azure.yaml
fil definierar ett klusters önskade tillstånd, till exempel vilka containeravbildningar som ska hämtas och innehåller följande Kubernetes-distributioner och -tjänster:
- Butiksfront: Webbprogram där kunder kan visa produkter och göra beställningar.
- Produkttjänst: Visar produktinformation.
- Ordertjänst: Gör beställningar.
- Rabbit MQ: Meddelandekö för en orderkö.
Kommentar
Vi rekommenderar inte att du kör tillståndskänsliga containrar, till exempel Rabbit MQ, utan beständig lagring för produktion. Dessa används här för enkelhetens skull, men vi rekommenderar att du använder hanterade tjänster, till exempel Azure Cosmos DB eller Azure Service Bus.
Distribuera programresurser
Mallen azd
för den här snabbstarten skapar en ny resursgrupp med ett AKS-kluster och ett Azure Key Vault. Nyckelvalvet lagrar klienthemligheter och kör tjänsterna i pets
namnområdet.
Skapa alla programresurser med kommandot
azd up
.azd up
azd up
kör alla krokar iazd-hooks
mappen för att förregistrera, etablera och distribuera programtjänsterna.Anpassa krokar för att lägga till anpassad kod i arbetsflödesstegen
azd
. Mer information finns i referensen förazd
krokar .Välj en Azure-prenumeration för din faktureringsanvändning.
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Välj en region som programmet ska distribueras till.
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)
azd
kör automatiskt företablerings- och postprovision-krokarna för att skapa resurserna för ditt program. Den här processen kan ta ett par minuter att slutföra. När du är klar bör du se utdata som liknar följande exempel:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
Generera Terraform-planer
I din Azure Developer-mall /infra/terraform
innehåller mappen all kod som används för att generera Terraform-planen.
Terraform distribuerar och kör kommandon med hjälp terraform apply
av som en del av azd
etableringssteget. När du är klar bör du se utdata som liknar följande exempel:
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
Testa programmet
När programmet körs så exponerar en Kubernetes-tjänst programmets klientdel mot Internet. Den här processen kan ta ett par minuter att slutföra.
Ange ditt namnområde som demonamnområdet
pets
med hjälp avkubectl set-context
kommandot .kubectl config set-context --current --namespace=pets
Kontrollera statusen för de distribuerade poddarna med kommandot
kubectl get pods
. Kontrollera att alla poddar ärRunning
innan du fortsätter.kubectl get pods
Sök efter en offentlig IP-adress för store-front-programmet och övervaka förloppet med hjälp av
kubectl get service
kommandot med--watch
argumentet .kubectl get service store-front --watch
EXTERNA IP-utdata för
store-front
tjänsten visas inledningsvis som väntande:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
När DEN EXTERNA IP-adressen ändras från väntande till en faktisk offentlig IP-adress använder du
CTRL-C
för att stoppakubectl
bevakningsprocessen.Följande exempelutdata visar en giltig offentlig IP-adress som tilldelats tjänsten:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Öppna en webbläsare till tjänstens externa IP-adress för att se hur Azure Store-appen fungerar.
Ta bort klustret
När du är klar med snabbstarten rensar du onödiga resurser för att undvika Azure-avgifter.
Ta bort alla resurser som skapades i snabbstarten
azd down
med kommandot .azd down
Bekräfta ditt beslut att ta bort alla använda resurser från din prenumeration genom att
y
skriva och trycka påEnter
.? Total resources to delete: 14, are you sure you want to continue? (y/N)
Tillåt att rensning återanvänder snabbstartsvariablerna om det är tillämpligt genom att
y
skriva och trycka påEnter
.[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.
Felsöka Terraform i Azure
Felsöka vanliga problem när du använder Terraform i Azure.
Nästa steg
I den här snabbstarten distribuerade du ett Kubernetes-kluster och distribuerade sedan ett enkelt program med flera containrar till det. Det här exempelprogrammet är endast i demosyfte och representerar inte alla metodtips för Kubernetes-program. Vägledning om hur du skapar fullständiga lösningar med AKS för produktion finns i AKS-lösningsvägledning.
Om du vill veta mer om AKS och gå igenom ett komplett exempel på kod-till-distribution fortsätter du till självstudiekursen för Kubernetes-klustret.
Azure Kubernetes Service