Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Kubernetes Service (AKS), kümeleri hızla dağıtmanızı ve yönetmenizi sağlayan yönetilen bir Kubernetes hizmetidir. Bu hızlı başlangıç rehberinde şunları yapacaksınız:
- Terraform kullanarak bir AKS kümesi dağıtın.
- Bir grup mikro hizmet ve web ön uçlarıyla perakende senaryosunu simüle eden örnek bir çoklu kapsayıcı uygulama çalıştırın.
Uyarı
Aks kümesini hızlı bir şekilde sağlamaya başlamak için, bu makale yalnızca değerlendirme amacıyla varsayılan ayarlarla küme dağıtma adımlarını içerir. Üretime hazır bir kümeyi dağıtmadan önce, iş gereksinimlerinizle nasıl uyumlu olduğunu göz önünde bulundurmak için temel başvuru mimarimizi tanımanızı öneririz.
Başlamadan önce
- Bu hızlı başlangıç, Kubernetes kavramlarının temel olarak bilindiğini varsayar. Daha fazla bilgi için bkz . Azure Kubernetes Service (AKS) için Kubernetes temel kavramları.
- Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Hesabınız yoksa ücretsiz bir hesap oluşturun.
- Komut satırı arabiriminize göre yönergeleri izleyin.
- Windows Server düğüm havuzu oluşturma hakkında daha fazla bilgi edinmek için bkz Windows Server kapsayıcılarını destekleyen bir AKS kümesi oluşturma.
Önemli
Azure Kubernetes Service (AKS), 30 Kasım 2025'den itibaren Azure Linux 2.0 için güvenlik güncelleştirmelerini desteklemez veya sağlamaz. Azure Linux 2.0 düğüm görüntüsü 202512.06.0 sürümünde dondurulur. 31 Mart 2026'dan itibaren düğüm görüntüleri kaldırılacak ve düğüm havuzlarınızı ölçeklendiremeyeceksiniz. Düğüm havuzlarınızı desteklenen bir Kubernetes sürümüne yükselterek veya osSku AzureLinux3'e geçerek desteklenen bir Azure Linux sürümüne geçin. Daha fazla bilgi için Bkz. Kullanımdan Kaldırma GitHub sorunu ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusu. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.
- Terraform’u yükleyin ve yapılandırın.
- kubectl dosyasını indirin.
- random_pet kullanarak Azure kaynak grubu adı için rastgele bir değer oluşturun.
- azurerm_resource_group kullanarak bir Azure kaynak grubu oluşturun.
- azurerm_client_config kullanarak Azure Nesne Kimliğini almak için AzureRM sağlayıcısının yapılandırmasına erişin.
- azurerm_kubernetes_cluster kullanarak bir Kubernetes kümesi oluşturun.
- Bir AzAPI kaynağı azapi_resource oluşturun.
- azapi_resource_action kullanarak SSH anahtar çifti oluşturmak için bir AzAPI kaynağı oluşturun.
Azure hesabınızda oturum açın
İlk olarak, Azure hesabınızda oturum açın ve aşağıdaki bölümde açıklanan yöntemlerden birini kullanarak kimlik doğrulaması yapın.
Terraform yalnızca Azure CLI ile Azure'da kimlik doğrulamayı destekler. Azure PowerShell kullanarak kimlik doğrulaması desteklenmez. Bu nedenle Terraform çalışmanızı yaparken Azure PowerShell modülünü kullanabilirsiniz ancak önce Azure'da kimlik doğrulaması yapmanız gerekir.
Terraform kodunu uygulama
Uyarı
Bu makalenin örnek kodu Azure Terraform GitHub deposunda bulunur. Terraform'un geçerli ve önceki sürümlerinden test sonuçlarını içeren günlük dosyasını görüntüleyebilirsiniz.
Azure kaynaklarını yönetmek için Terraform'un nasıl kullanılacağını gösteren diğer makalelere ve örnek koda bakın
Örnek Terraform kodunu test etmek ve geçerli dizininiz yapmak için kullanabileceğiniz bir dizin oluşturun.
providers.tfadlı bir dosya oluşturun ve aşağıdaki kodu ekleyin: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 {} }ssh.tfadlı bir dosya oluşturun ve aşağıdaki kodu ekleyin: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 }main.tfadlı bir dosya oluşturun ve aşağıdaki kodu ekleyin:# 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" } }variables.tfadlı bir dosya oluşturun ve aşağıdaki kodu ekleyin: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" }outputs.tfadlı bir dosya oluşturun ve aşağıdaki kodu ekleyin: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'u başlatma
Terraform dağıtımını başlatmak için terraform init komutunu çalıştırın. Bu komut, Azure kaynaklarınızı yönetmek için gereken Azure sağlayıcısını indirir.
terraform init -upgrade
Önemli noktalar:
-
-upgradeparametresi, gerekli sağlayıcı eklentilerini yapılandırmanın sürüm kısıtlamalarına uygun en yeni sürüme yükseltir.
Terraform için bir yürütme planı oluşturun
Terraform planını çalıştırarak yürütme planı oluşturun.
terraform plan -out main.tfplan
Önemli noktalar:
-
terraform plankomutu bir yürütme planı oluşturur, ancak onu yürütmez. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar. - İsteğe bağlı
-outparametresi, plan için bir çıkış dosyası belirtmenize olanak tanır.-outparametresinin kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
Terraform yürütme planını uygula
Yürütme planını bulut altyapınıza uygulamak için terraform apply komutunu çalıştırın.
terraform apply main.tfplan
Önemli noktalar:
- Örnek
terraform applykomutu, daha önceterraform plan -out main.tfplankomutunu çalıştırmış olduğunuzu varsayar. -
-outparametresi için farklı bir dosya adı belirttiyseniz,terraform applyçağrısında aynı dosya adını kullanın. - parametresini
-outkullanmadıysanız, parametresiz olarak çağırınterraform apply.
Sonuçları doğrulama
Aşağıdaki komutu kullanarak Azure kaynak grubu adını alın.
resource_group_name=$(terraform output -raw resource_group_name)az aks list komutunu kullanarak yeni Kubernetes kümenizin adını görüntüleyin.
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output tableTerraform durumundan Kubernetes yapılandırmasını alın ve
kubectltarafından okunabilir bir dosyaya aşağıdaki komutu kullanarak kaydedin.echo "$(terraform output kube_config)" > ./azurek8sAşağıdaki komutu kullanarak önceki komutun ASCII EOT karakteri eklemediğini doğrulayın.
cat ./azurek8sÖnemli noktalar:
- Eğer başında
<< EOTve sonundaEOTgörüyorsanız, bu karakterleri dosyadan kaldırın. Aksi takdirde aşağıdaki hata iletisini alabilirsiniz:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- Eğer başında
Aşağıdaki komutu kullanarak doğru yapılandırmayı alabilmesi için bir ortam değişkeni
kubectlayarlayın.export KUBECONFIG=./azurek8skomutunu kullanarak
kubectl get nodeskümenin durumunu doğrulayın.kubectl get nodes
Önemli noktalar:
- AKS kümesini oluşturduğunuzda, hem küme düğümleri hem de podlar için sistem durumu ölçümlerini yakalamak için izleme etkinleştirildi. Bu sistem durumu ölçümleri Azure portaldan kullanılabilir. Küme durumu izleme hakkında daha fazla bilgi için bkz. Azure Kubernetes Hizmeti durumunu izleme.
- Terraform yürütme planını uyguladığınızda çıktı olarak sınıflandırılan birkaç temel değer. Örneğin, ana bilgisayar adresi, AKS kümesi kullanıcı adı ve AKS kümesi parolası çıkış olarak verilir.
Uygulamayı dağıt
Uygulamayı dağıtmak için, AKS Store uygulamasını çalıştırmak için gereken tüm nesneleri oluşturmak için bir bildirim dosyası kullanırsınız. Bir Kubernetes manifest dosyası, bir kümenin hangi kapsayıcı görüntülerini çalıştıracağı gibi istenilen durumunu tanımlar. Bildirim aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerir:
- Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
- Ürün hizmeti: Ürün bilgilerini gösterir.
- Sipariş hizmeti: Sipariş verir.
- Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.
Uyarı
Üretim için kalıcı depolama olmadan Rabbit MQ gibi durum bilgisi olan kapsayıcıları çalıştırmanızı önermiyoruz. Bunlar burada kolaylık sağlamak için kullanılır, ancak Azure CosmosDB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.
Adlı
aks-store-quickstart.yamlbir dosya oluşturun ve aşağıdaki bildirimde kopyalayın: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: LoadBalancerYAML manifest dosyalarının detayları için, Dağıtımlar ve YAML manifestleri sayfasına bakın.
YAML dosyasını yerel olarak oluşturur ve kaydederseniz, Dosyaları Karşıya Yükle/İndir düğmesini seçip yerel dosya sisteminizden dosyayı seçerek bildirim dosyasını CloudShell'deki varsayılan dizininize yükleyebilirsiniz.
komutunu kullanarak uygulamayı dağıtın
kubectl applyve YAML bildiriminizin adını belirtin.kubectl apply -f aks-store-quickstart.yamlAşağıdaki örnek çıktı dağıtımları ve hizmetleri gösterir:
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
Uygulamayı test et
Uygulama çalıştığında, bir Kubernetes hizmeti uygulamanın ön yüzünü internete açar. Bu işlemin tamamlanması birkaç dakika sürebilir.
komutunu kullanarak
kubectl get podsdağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podlarınRunningdurumunda olduğundan emin olun.kubectl get podsMağaza ön uygulaması için genel IP adresi olup olmadığını denetleyin.
kubectl get servicekomutunu--watchargümanıyla kullanarak ilerleme durumunu izleyin.kubectl get service store-front --watchHizmetin EXTERNAL-IP çıkışı
store-frontbaşlangıçta beklemede olarak gösterilir:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mEXTERNAL-IP adresi pending'den gerçek bir halka açık IP adresine değiştiğinde,
CTRL-Cizleme işlemini durdurmak içinkubectlkullanın.Aşağıdaki örnek çıktıda hizmete atanmış geçerli bir genel IP adresi gösterilmektedir:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mAzure Store uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.
Kaynakları temizle
AKS kaynaklarını silme
Terraform aracılığıyla oluşturulan kaynaklara artık ihtiyacınız kalmadığında aşağıdaki adımları uygulayın:
terraform plan komutunu çalıştırın ve
destroybayrağını belirleyin.terraform plan -destroy -out main.destroy.tfplanÖnemli noktalar:
-
terraform plankomutu bir yürütme planı oluşturur, ancak onu yürütmez. Bunun yerine, yapılandırma dosyalarınızda belirtilen yapılandırmayı oluşturmak için hangi eylemlerin gerekli olduğunu belirler. Bu düzen, gerçek kaynaklarda değişiklik yapmadan önce yürütme planının beklentilerinizle eşleşip eşleşmediğini doğrulamanızı sağlar. - İsteğe bağlı
-outparametresi, plan için bir çıkış dosyası belirtmenize olanak tanır.-outparametresinin kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
-
Yürütme planını uygulamak için terraform apply komutunu çalıştırın.
terraform apply main.destroy.tfplan
Hizmet sorumlusunu silme
Aşağıdaki komutu kullanarak hizmet sorumlusu kimliğini alın.
sp=$(terraform output -raw sp)az ad sp delete komutunu kullanarak hizmet sorumlusunu silin.
az ad sp delete --id $sp
- Azure Geliştirici CLI'sını (AZD) yükleme
- Terraform’u yükleyin ve yapılandırın.
- Azure-Samples/aks-store-demo deposunda kullanılan uygulama kodunu gözden geçirebilirsiniz.
Azure Geliştirici CLI şablonunu kopyalama
Azure Geliştirici CLI'sı, Azure-Samples deposundan örnekleri hızlı bir şekilde indirmenize olanak tanır. Hızlı başlangıçta aks-store-demo uygulamasını indirirsiniz. Genel kullanım örnekleri hakkında daha fazla bilgi için genel bakışaazd bakın.
parametresiyle komutunu kullanarak Azure-Samples
azd initkopyalayın.azd init --template Azure-Samples/aks-store-demoProjeniz için yalnızca alfasayısal karakterleri ve aks-terraform-1 gibi kısa çizgileri kullanan bir ortam adı girin.
Enter a new environment name: aks-terraform-1
Azure Bulut hesabınızda oturum açın
Şablon, azd hizmetleri oluşturmak için gereken tüm kodu içerir, ancak uygulamayı AKS'de barındırmak için Azure hesabınızda oturum açmanız gerekir.
komutunu kullanarak
azd auth loginhesabınızda oturum açın.azd auth loginÇıkışta görünen cihaz kodunu kopyalayın ve oturum açmak için Enter tuşuna basın.
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...Önemli
Ağ dışı bir sanal makine veya GitHub Codespace kullanıyorsanız, bazı Azure güvenlik ilkeleri ile
azd auth loginoturum açmak için kullanıldığında çakışmalara neden olur. Burada bir sorunla karşılaşırsanız, sağlanan azd kimlik doğrulaması geçici çözümünü izleyebilirsiniz. Bu, çalıştırdıktancurlsonra yeniden yönlendirildiğiniz localhost URL'sine yönelik birazd auth loginistek kullanmayı içerir.Kuruluşunuzun oturum açma sayfasında kimlik bilgilerinizle kimlik doğrulaması.
Azure CLI'dan bağlanmaya çalıştığınızı onaylayın.
"Cihaz kodu kimlik doğrulaması tamamlandı. Azure'da oturum açıldı." ifadesi özgün terminalinizde görünür.
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
azd kimlik doğrulama için geçici çözüm
Bu geçici çözüm, Azure CLI'nin yüklü olmasını gerektirir.
Bir terminal penceresi açın ve Azure CLI'ye
az loginparametresiyle ayarlanmış--scopekomutunu kullanarakhttps://graph.microsoft.com/.defaultile oturum açın.az login --scope https://graph.microsoft.com/.defaultAşağıdaki örnekte gösterildiği gibi tarayıcı erişim belirteci oluşturmak için yeni bir sekmedeki kimlik doğrulama sayfasına yönlendirilmelisiniz:
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.ile
azd auth loginoturum açmayı denedikten sonra aldığınız web sayfasının localhost URL'sini kopyalayın.Yeni bir terminal penceresinde oturum açmak için aşağıdaki
curlisteği kullanın. Yer tutucuyu<localhost>önceki adımda kopyaladığınız localhost URL'si ile değiştirdiğinizden emin olun.curl <localhost>Başarılı bir oturum açma işlemi, aşağıdaki örnekte gösterildiği gibi bir HTML web sayfasının çıkışını verir:
<!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>Geçerli terminali kapatın ve özgün terminali açın. Aboneliklerinizin JSON listesini görmeniz gerekir.
idKullanmak istediğiniz aboneliğin alanını kopyalayın.komutunu kullanarak
az account setaboneliğinizi ayarlayın.az account set --subscription <subscription_id>
Kümeniz için kaynak oluşturma ve dağıtma
Uygulamayı dağıtmak için komutunu kullanarak azd upAKS Mağazası uygulamasını çalıştırmak için gereken tüm nesneleri oluşturursunuz.
- Bir
azure.yamldosyası, kümenin istenen durumunu tanımlar; hangi kapsayıcı görüntülerinin alınacağını ve aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içerdiğini belirtir.
- Mağaza ön: Müşterilerin ürünleri görüntülemesi ve sipariş vermesi için web uygulaması.
- Ürün hizmeti: Ürün bilgilerini gösterir.
- Sipariş hizmeti: Sipariş verir.
- Rabbit MQ: Sipariş kuyruğu için ileti kuyruğu.
Uyarı
Üretim için kalıcı depolama olmadan Rabbit MQ gibi durum bilgisi olan kapsayıcıları çalıştırmanızı önermiyoruz. Bunlar burada kolaylık sağlamak için kullanılır, ancak Azure Cosmos DB veya Azure Service Bus gibi yönetilen hizmetleri kullanmanızı öneririz.
Uygulama kaynaklarını dağıtma
Bu hızlı başlangıcın azd şablonu AKS kümesi ve Azure Key Vault ile yeni bir kaynak grubu oluşturur. Anahtar deposu istemci sırlarını depolar ve hizmetleri pets ad alanında çalıştırır.
komutunu kullanarak
azd uptüm uygulama kaynaklarını oluşturun.azd upazd up, uygulama hizmetlerini önceden kaydetmek, sağlamak ve dağıtmak için klasörünazd-hookstüm kancaları çalıştırır.İş akışı aşamalarına özel kod eklemek için kancaları özelleştirin
azd. Daha fazla bilgi için kancalar referansınaazdbakın.Faturalama kullanımınız için bir Azure aboneliği seçin.
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)Uygulamanızın dağıtılacağı bölgeyi seçin.
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)azduygulamanızın kaynaklarını oluşturmak için ön sağlama ve sağlama sonrası kancalarını otomatik olarak çalıştırır. Bu işlemin tamamlanması birkaç dakika sürebilir. İşlem tamamlandıktan sonra aşağıdaki örneğe benzer bir çıkış görmeniz gerekir:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
Terraform planları oluşturun
Azure Geliştirici şablonunuzun içinde, /infra/terraform klasör Terraform planını oluşturmak için kullanılan tüm kodu içerir.
Terraform, terraform apply'nin sağlama adımının bir parçası olarak azd kullanarak komutları dağıtır ve çalıştırır. İşlem tamamlandıktan sonra aşağıdaki örneğe benzer bir çıkış görmeniz gerekir:
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
Uygulamayı test et
Uygulama çalıştığında, bir Kubernetes hizmeti uygulamanın ön yüzünü internete açar. Bu işlemin tamamlanması birkaç dakika sürebilir.
komutunu kullanarak
petsad alanınızı demo ad alanıkubectl set-contextolarak ayarlayın.kubectl config set-context --current --namespace=petskomutunu kullanarak
kubectl get podsdağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podlarınRunningolduğundan emin olun.kubectl get podsDepo ön uygulaması için genel IP adresi olup olmadığını denetleyin ve bağımsız değişkeniyle komutunu kullanarak ilerleme durumunu
kubectl get service--watchizleyin.kubectl get service store-front --watchHizmetin EXTERNAL-IP çıkışı
store-frontbaşlangıçta beklemede olarak gösterilir:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4mEXTERNAL-IP adresi pending'den gerçek bir halka açık IP adresine değiştiğinde,
CTRL-Cizleme işlemini durdurmak içinkubectlkullanın.Aşağıdaki örnek çıktı hizmete atanmış geçerli bir genel IP adresini gösterir:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5mAzure Store uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.
Kümeyi sil
Hızlı başlangıcı tamamladıktan sonra, Azure ücretlerinden kaçınmak için gereksiz kaynakları temizleyin.
komutunu kullanarak
azd downhızlı başlangıçta oluşturulan tüm kaynakları silin.azd downyazarak
yve tuşuna basarakEntertüm kullanılan kaynakları aboneliğinizden kaldırma kararınızı onaylayın.? Total resources to delete: 14, are you sure you want to continue? (y/N)yazarak
yve tuşuna basarakEntertemizleme işleminin varsa hızlı başlangıç değişkenlerini yeniden kullanmasına izin verin.[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.
Azure'da Terraform sorunlarını giderme
Azure'da Terraform kullanırken karşılaşılan yaygın sorunları giderme.
Sonraki Adımlar
Bu hızlı başlangıçta, önce bir Kubernetes kümesi dağıttınız ve ardından basit bir çoklu kapsayıcılı uygulamayı buna dağıttınız. Bu örnek uygulama yalnızca tanıtım amaçlıdır ve Kubernetes uygulamaları için en iyi yöntemlerin tümünü temsil etmez. Üretim için AKS ile tam çözüm oluşturma yönergeleri için bkz . AKS çözümü kılavuzu.
AKS hakkında daha fazla bilgi edinmek ve eksiksiz bir koddan dağıtım örneğini incelemek için Kubernetes kümesi öğreticisine devam edin.