Rövid útmutató: Azure Kubernetes Service-fürt üzembe helyezése a Terraform használatával
Az Azure Kubernetes Service (AKS) egy felügyelt Kubernetes-szolgáltatás, amely lehetővé teszi a fürtök gyors üzembe helyezését és kezelését. Ebben a rövid útmutatóban a következőket hajtja végre:
- AKS-fürt üzembe helyezése a Terraform használatával.
- Többtárolós mintaalkalmazás futtatása mikroszolgáltatások és webes kezelőfelületek egy kiskereskedelmi forgatókönyvet szimuláló csoportjával.
Feljegyzés
Az AKS-fürtök gyors üzembe helyezésének megkezdéséhez ez a cikk a csak kiértékelési célokra alapértelmezett beállításokkal rendelkező fürtök üzembe helyezésének lépéseit tartalmazza. Az éles üzemre kész fürtök üzembe helyezése előtt javasoljuk, hogy ismerkedjen meg az alapszintű referenciaarchitektúrával, és gondolja át, hogyan igazodik az üzleti követelményekhez.
Mielőtt elkezdené
- A rövid útmutató feltételezi, hogy rendelkezik a Kubernetes használatára vonatkozó alapvető ismeretekkel. További információkért tekintse meg az Azure Kubernetes Service (AKS) Kubernetes alapfogalmait.
- Aktív előfizetéssel rendelkező Azure-fiókra van szüksége. Ha nem rendelkezik ilyen fiókkal, hozzon létre ingyenes fiókot.
- Kövesse az utasításokat a parancssori felület alapján.
- A Windows Server-csomópontkészletek létrehozásáról további információt a Windows Server-tárolókat támogató AKS-fürt létrehozása című témakörben talál.
Feljegyzés
Az Azure Linux-csomópontkészlet mostantól általánosan elérhető (GA). Az előnyökről és az üzembe helyezés lépéseiről az AKS-hez készült Azure Linux Container Host bemutatása című témakörben olvashat.
- A Terraform telepítése és konfigurálása.
- Töltse le a kubectl fájlt.
- Hozzon létre egy véletlenszerű értéket az Azure-erőforráscsoport nevének random_pet használatával.
- Azure-erőforráscsoport létrehozása azurerm_resource_group használatával.
- Az AzureRM-szolgáltató konfigurációjának elérése az Azure Object ID azurerm_client_config használatával történő lekéréséhez.
- Kubernetes-fürt létrehozása azurerm_kubernetes_cluster használatával.
- Hozzon létre egy AzAPI-erőforrást azapi_resource.
- Hozzon létre egy AzAPI-erőforrást egy SSH-kulcspár létrehozásához azapi_resource_action használatával.
Bejelentkezés az Azure-fiókjába
Először jelentkezzen be az Azure-fiókjába, és hitelesítse magát a következő szakaszban ismertetett módszerek egyikével.
A Terraform csak az Azure CLI-vel támogatja az Azure-ba történő hitelesítést. Az Azure PowerShell használatával történő hitelesítés nem támogatott. Ezért bár használhatja az Azure PowerShell-modult a Terraform-munka során, először hitelesítenie kell magát az Azure-ban.
A Terraform-kód implementálása
Feljegyzés
A cikk mintakódja az Azure Terraform GitHub-adattárban található. Megtekintheti a Terraform aktuális és korábbi verzióinak teszteredményeit tartalmazó naplófájlt.
Hozzon létre egy könyvtárat, amellyel tesztelheti a Terraform-mintakódot, és az aktuális könyvtárként használhatja.
Hozzon létre egy elnevezett
providers.tf
fájlt, és szúrja be a következő kódot: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 {} }
Hozzon létre egy elnevezett
ssh.tf
fájlt, és szúrja be a következő kódot: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 }
Hozzon létre egy elnevezett
main.tf
fájlt, és szúrja be a következő kódot:# 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" } }
Hozzon létre egy elnevezett
variables.tf
fájlt, és szúrja be a következő kódot: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" }
Hozzon létre egy elnevezett
outputs.tf
fájlt, és szúrja be a következő kódot: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 }
A Terraform inicializálása
Futtassa a Terraform init parancsot a Terraform üzembe helyezésének inicializálásához. Ez a parancs letölti az Azure-erőforrások kezeléséhez szükséges Azure-szolgáltatót.
terraform init -upgrade
Főbb pontok:
- A
-upgrade
paraméter frissíti a szükséges szolgáltatói beépülő modulokat a legújabb verzióra, amely megfelel a konfiguráció verziókorlátozásainak.
Terraform végrehajtási terv létrehozása
Végrehajtási terv létrehozásához futtassa a Terraform-tervet .
terraform plan -out main.tfplan
Főbb pontok:
- A
terraform plan
parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-out
paraméter lehetővé teszi a terv kimeneti fájljának megadását.-out
A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.
Terraform végrehajtási terv alkalmazása
A terraform futtatásával alkalmazza a végrehajtási tervet a felhőinfrastruktúrára.
terraform apply main.tfplan
Főbb pontok:
- A példaparancs
terraform apply
feltételezi, hogy korábban futtatottterraform plan -out main.tfplan
. - Ha másik fájlnevet adott meg a
-out
paraméterhez, használja ugyanazt a fájlnevet a hívásbanterraform apply
. - Ha nem használta a paramétert
-out
, hívjonterraform apply
paraméterek nélkül.
Az eredmények ellenőrzése
Kérje le az Azure-erőforráscsoport nevét az alábbi paranccsal.
resource_group_name=$(terraform output -raw resource_group_name)
Az új Kubernetes-fürt nevének megjelenítése az az aks list paranccsal.
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output table
Kérje le a Kubernetes-konfigurációt a Terraform állapotából, és tárolja egy olyan fájlban, amely
kubectl
az alábbi paranccsal olvasható.echo "$(terraform output kube_config)" > ./azurek8s
Ellenőrizze, hogy az előző parancs nem adott hozzá ASCII EOT-karaktert az alábbi paranccsal.
cat ./azurek8s
Főbb pontok:
- Ha az elején és
EOT
végén látható<< EOT
, távolítsa el ezeket a karaktereket a fájlból. Ellenkező esetben a következő hibaüzenet jelenhet meg:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- Ha az elején és
Állítson be egy környezeti változót, hogy
kubectl
az alábbi paranccsal a megfelelő konfigurációt vegye fel.export KUBECONFIG=./azurek8s
A parancs használatával
kubectl get nodes
ellenőrizze a fürt állapotát.kubectl get nodes
Főbb pontok:
- Az AKS-fürt létrehozásakor a figyelés lehetővé tette a fürtcsomópontok és podok állapotmetrikáinak rögzítését. Ezek az állapotmetrikák elérhetők az Azure Portalon. A tároló állapotának monitorozásával kapcsolatos további információ az Azure Kubernetes Service állapotmonitorozásáról szóló témakörben érhető el.
- A Terraform végrehajtási terv alkalmazásakor több kulcsérték is kimenetként van besorolva. A gazdagép címe, az AKS-fürt felhasználóneve és az AKS-fürt jelszava például kimenet.
Az alkalmazás üzembe helyezése
Az alkalmazás üzembe helyezéséhez egy jegyzékfájl használatával hozza létre az AKS Store-alkalmazás futtatásához szükséges összes objektumot. A Kubernetes-jegyzékfájl meghatározza a fürt kívánt állapotát, például hogy mely tárolólemezképeket kell futtatni. A jegyzék a következő Kubernetes-üzemelő példányokat és szolgáltatásokat tartalmazza:
- Áruházi előtér: Webalkalmazás az ügyfelek számára termékek megtekintésére és megrendelések leadására.
- Termékszolgáltatás: A termékinformációkat jeleníti meg.
- Rendelési szolgáltatás: Rendeléseket rendel.
- Nyúl MQ: Üzenetsor rendelési üzenetsorhoz.
Feljegyzés
Nem javasoljuk az állapotalapú tárolók( például a Rabbit MQ) futtatását az éles környezetben tartós tárolás nélkül. Ezeket itt az egyszerűség kedvéért használjuk, de olyan felügyelt szolgáltatások használatát javasoljuk, mint az Azure CosmosDB vagy az Azure Service Bus.
Hozzon létre egy fájlt,
aks-store-quickstart.yaml
és másolja a következő jegyzékbe: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
A YAML-jegyzékfájlok lebontásához tekintse meg az üzembe helyezéseket és a YAML-jegyzékeket.
Ha helyileg hozza létre és menti a YAML-fájlt, feltöltheti a jegyzékfájlt az alapértelmezett könyvtárba a CloudShellben a Fájlok feltöltése/letöltése gombra kattintva, majd kiválasztva a fájlt a helyi fájlrendszerből.
Telepítse az alkalmazást a
kubectl apply
paranccsal, és adja meg a YAML-jegyzék nevét.kubectl apply -f aks-store-quickstart.yaml
Az alábbi példakimenet az üzemelő példányokat és szolgáltatásokat mutatja be:
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
Az alkalmazás tesztelése
Az alkalmazás futtatásakor egy Kubernetes-szolgáltatás elérhetővé teszi az alkalmazás előtérét az interneten. A folyamat eltarthat pár percig.
Ellenőrizze az üzembe helyezett podok állapotát a
kubectl get pods
paranccsal. Az összes podot a folytatás előtt készítseRunning
el.kubectl get pods
Ellenőrizze, hogy van-e nyilvános IP-cím az áruházi előtéralkalmazáshoz. A folyamat figyelése az
kubectl get service
argumentumot tartalmazó paranccsal--watch
.kubectl get service store-front --watch
A szolgáltatás KÜLSŐ-IP-kimenete
store-front
kezdetben függőben lévőként jelenik meg:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Ha a külső IP-cím függőben lévőről tényleges nyilvános IP-címre változik, állítsa
CTRL-C
le akubectl
figyelés folyamatát.Az alábbi példakimenet a szolgáltatáshoz rendelt érvényes nyilvános IP-címet jeleníti meg:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére az Azure Store-alkalmazás működés közbeni megtekintéséhez.
Az erőforrások eltávolítása
AKS-erőforrások törlése
Ha már nincs szüksége a Terraformon keresztül létrehozott erőforrásokra, hajtsa végre az alábbi lépéseket:
Futtassa a Terraform-tervet , és adja meg a jelölőt
destroy
.terraform plan -destroy -out main.destroy.tfplan
Főbb pontok:
- A
terraform plan
parancs létrehoz egy végrehajtási tervet, de nem hajtja végre. Ehelyett meghatározza, hogy milyen műveletek szükségesek a konfigurációs fájlokban megadott konfiguráció létrehozásához. Ez a minta lehetővé teszi annak ellenőrzését, hogy a végrehajtási terv megfelel-e az elvárásainak, mielőtt módosítanák a tényleges erőforrásokat. - Az opcionális
-out
paraméter lehetővé teszi a terv kimeneti fájljának megadását.-out
A paraméter használatával biztosítható, hogy a vizsgált terv pontosan az alkalmazott legyen.
- A
A végrehajtási terv alkalmazásához futtassa a terraformát .
terraform apply main.destroy.tfplan
Szolgáltatásnév törlése
Kérje le a szolgáltatásnév azonosítóját az alábbi paranccsal.
sp=$(terraform output -raw sp)
Törölje a szolgáltatásnevet az az ad sp delete paranccsal.
az ad sp delete --id $sp
- Az Azure Developer CLI (AZD) telepítése
- A Terraform telepítése és konfigurálása.
- Az Azure-Samples/aks-store-demo adattárban használt alkalmazáskódot áttekintheti.
Az Azure Developer CLI-sablon klónozása
Az Azure Developer CLI lehetővé teszi a minták gyors letöltését az Azure-Samples adattárból. Rövid útmutatónkban letölti az aks-store-demo
alkalmazást. Az általános használati esetekről további információt az áttekintésben azd
talál.
Klónozza az AKS-tároló demósablonját az Azure-Samples adattárból a
azd init
paraméterrel rendelkező--template
paranccsal.azd init --template Azure-Samples/aks-store-demo
Adjon meg egy olyan környezetnevet a projektnek, amely csak alfanumerikus karaktereket és kötőjeleket használ, például aks-terraform-1.
Enter a new environment name: aks-terraform-1
Bejelentkezés az Azure Cloud-fiókjába
A azd
sablon tartalmazza a szolgáltatások létrehozásához szükséges összes kódot, de be kell jelentkeznie az Azure-fiókjába az alkalmazás AKS-en való üzemeltetéséhez.
Jelentkezzen be a fiókjába a
azd auth login
paranccsal.azd auth login
Másolja ki a kimenetben megjelenő eszközkódot, és nyomja le az Enter billentyűt a bejelentkezéshez.
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...
Fontos
Ha hálózaton kívüli virtuális gépet vagy GitHub Codespace-t használ, bizonyos Azure-biztonsági szabályzatok ütközéseket okoznak a bejelentkezéshez
azd auth login
. Ha itt problémát tapasztal, kövesse a megadott azd hitelesítési áthidaló megoldást, amely magában foglalja acurl
localhost URL-címre irányuló kérés használatát, amelyre a futtatásazd auth login
után átirányított.Hitelesítés a szervezet bejelentkezési lapján található hitelesítő adataival.
Győződjön meg arról, hogy az Azure CLI-ből próbál csatlakozni.
Ellenőrizze az "Eszközkód hitelesítése befejeződött. Be van jelentkezve az Azure-ba." ekkor megjelenik az eredeti terminálban.
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
azd auth kerülő megoldás
Ehhez a kerülő megoldáshoz telepítenie kell az Azure CLI-t .
Nyisson meg egy terminálablakot, és jelentkezzen be az Azure CLI-vel a
az login
paraméter beállításával--scope
https://graph.microsoft.com/.default
.az login --scope https://graph.microsoft.com/.default
A böngésző hozzáférési jogkivonatának létrehozásához egy új lapon lévő hitelesítési lapra kell átirányítani, ahogyan az alábbi példában látható:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
Másolja ki annak a weblapnak a localhost URL-címét, amely a bejelentkezés
azd auth login
után érkezett.Egy új terminálablakban a következő
curl
kéréssel jelentkezzen be. Ügyeljen arra, hogy a helyőrzőt<localhost>
cserélje le az előző lépésben másolt localhost URL-címre.curl <localhost>
A sikeres bejelentkezés egy HTML-weblapot ad ki, ahogy az a következő példában is látható:
<!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>
Zárja be az aktuális terminált, és nyissa meg az eredeti terminált. Meg kell jelennie az előfizetések JSON-listájának.
Másolja ki a
id
használni kívánt előfizetés mezőjét.Állítsa be az előfizetést a
az account set
paranccsal.az account set --subscription <subscription_id>
Erőforrások létrehozása és üzembe helyezése a fürthöz
Az alkalmazás üzembe helyezéséhez a azd up
paranccsal hozza létre az AKS Store-alkalmazás futtatásához szükséges összes objektumot.
- A
azure.yaml
fájlok meghatározzák a fürt kívánt állapotát, például hogy mely tárolólemezképeket kell lekérni, és az alábbi Kubernetes-telepítéseket és -szolgáltatásokat tartalmazzák:
- Áruházi előtér: Webalkalmazás az ügyfelek számára termékek megtekintésére és megrendelések leadására.
- Termékszolgáltatás: A termékinformációkat jeleníti meg.
- Rendelési szolgáltatás: Rendeléseket rendel.
- Nyúl MQ: Üzenetsor rendelési üzenetsorhoz.
Feljegyzés
Nem javasoljuk az állapotalapú tárolók( például a Rabbit MQ) futtatását az éles környezetben tartós tárolás nélkül. Ezeket itt az egyszerűség kedvéért használjuk, de ajánlott felügyelt szolgáltatásokat használni, például az Azure Cosmos DB-t vagy az Azure Service Bust.
Alkalmazáserőforrások üzembe helyezése
A azd
rövid útmutató sablonja létrehoz egy új erőforráscsoportot egy AKS-fürttel és egy Azure Key Vaulttal. A kulcstartó tárolja az ügyfél titkos kulcsait, és futtatja a szolgáltatásokat a pets
névtérben.
Hozza létre az összes alkalmazás-erőforrást a
azd up
paranccsal.azd up
azd up
Futtatja a mappa összes horgát azazd-hooks
alkalmazásszolgáltatások előregisztrációjához, kiépítéséhez és üzembe helyezéséhez.A horgok testreszabásával egyéni kódot adhat hozzá a
azd
munkafolyamat szakaszaihoz. További információ: aazd
horgok referenciája .Válasszon ki egy Azure-előfizetést a számlázási használathoz.
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Válasszon ki egy régiót, amelyben üzembe szeretné helyezni az alkalmazást.
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
automatikusan futtatja az elő- és a postprovision-horgokat az alkalmazás erőforrásainak létrehozásához. A folyamat eltarthat pár percig. Ha elkészült, az alábbi példához hasonló kimenetnek kell megjelennie:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
Terraform-tervek létrehozása
Az Azure Developer-sablonban a /infra/terraform
mappa tartalmazza a Terraform-csomag létrehozásához használt összes kódot.
A Terraform üzembe helyezi és futtatja a parancsokat terraform apply
a kiépítési azd
lépés részeként. Ha elkészült, az alábbi példához hasonló kimenetnek kell megjelennie:
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
Az alkalmazás tesztelése
Az alkalmazás futtatásakor egy Kubernetes-szolgáltatás elérhetővé teszi az alkalmazás előtérét az interneten. A folyamat eltarthat pár percig.
Állítsa be a névteret bemutató névtérként
pets
akubectl set-context
parancs használatával.kubectl config set-context --current --namespace=pets
Ellenőrizze az üzembe helyezett podok állapotát a
kubectl get pods
paranccsal. Győződjön meg arról, hogy az összes pod a folytatás előtt vanRunning
.kubectl get pods
Ellenőrizze, hogy van-e nyilvános IP-cím az áruházi előtéralkalmazáshoz, és figyelje az előrehaladást az
kubectl get service
--watch
argumentumot tartalmazó paranccsal.kubectl get service store-front --watch
A szolgáltatás KÜLSŐ-IP-kimenete
store-front
kezdetben függőben lévőként jelenik meg:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Ha a külső IP-cím függőben lévőről tényleges nyilvános IP-címre változik, állítsa
CTRL-C
le akubectl
figyelés folyamatát.Az alábbi mintakimenet a szolgáltatáshoz rendelt érvényes nyilvános IP-címet jeleníti meg:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Nyisson meg egy webböngészőt a szolgáltatás külső IP-címére az Azure Store-alkalmazás működés közbeni megtekintéséhez.
A fürt törlése
Ha végzett a gyorsútmutatóval, törölje a felesleges erőforrásokat, hogy elkerülje az Azure-díjakat.
Törölje a rövid útmutatóban létrehozott összes erőforrást a
azd down
paranccsal.azd down
Erősítse meg, hogy az összes használt erőforrást el szeretné távolítani az előfizetésből a gépeléssel
y
és a billentyű lenyomásávalEnter
.? Total resources to delete: 14, are you sure you want to continue? (y/N)
Ha lehetséges, a törlés lehetővé teszi a gyorsindítási változók újbóli felhasználását a beírással
y
és a lenyomássalEnter
.[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.
A Terraform hibaelhárítása az Azure-ban
A Terraform Azure-beli használatakor felmerülő gyakori problémák elhárítása.
Következő lépések
Ebben a rövid útmutatóban üzembe helyezett egy Kubernetes-fürtöt, majd üzembe helyezett egy egyszerű többtárolós alkalmazást. Ez a mintaalkalmazás csak bemutató célokra készült, és nem képviseli a Kubernetes-alkalmazások ajánlott eljárásait. Az éles AKS-sel való teljes megoldások létrehozásáról az AKS-megoldásokkal kapcsolatos útmutatást talál.
Ha többet szeretne megtudni az AKS-ről, és végig szeretne járni egy teljes kód–üzembe helyezési példán, folytassa a Kubernetes-fürt oktatóanyagával.
Azure Kubernetes Service
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: