Hızlı Başlangıç: Terraform kullanarak Azure Kubernetes Service (AKS) kümesi dağıtma
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ıçta:
- Terraform kullanarak AKS kümesi dağıtma.
- Bir grup mikro hizmet ve web ön ucuyla perakende senaryosu simülasyonu yaparak örnek bir çok kapsayıcılı uygulama çalıştırın.
Not
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 aks kümesi oluşturma.
Not
Azure Linux düğüm havuzu artık genel kullanılabilirlik (GA) aşamasındadır. Avantajlar ve dağıtım adımları hakkında bilgi edinmek için bkz . AKS için Azure Linux Container Host'a giriş.
- 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.
- AzAPI kaynak 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
Not
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.
adlı
providers.tf
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 {} }
adlı
ssh.tf
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 }
adlı
main.tf
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" } }
adlı
variables.tf
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" }
adlı
outputs.tf
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:
-upgrade
parametresi, 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 yürütme planı oluşturma
Terraform planını çalıştırarak yürütme planı oluşturun.
terraform plan -out main.tfplan
Önemli noktalar:
- komutu
terraform plan
bir yürütme planı oluşturur ancak 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ı
-out
parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin-out
kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
Terraform yürütme planı uygulama
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 apply
komut, daha önce komutunu çalıştırdığınızıterraform plan -out main.tfplan
varsayar. - parametresi için
-out
farklı bir dosya adı belirttiyseniz, çağrısındaterraform apply
aynı dosya adını kullanın. - parametresini
-out
kullanmadı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 table
Terraform durumundan Kubernetes yapılandırmasını alın ve aşağıdaki komutu kullanarak okuyabilen
kubectl
bir dosyada depolayın.echo "$(terraform output kube_config)" > ./azurek8s
Aşağıdaki komutu kullanarak önceki komutun ASCII EOT karakteri eklemediğini doğrulayın.
cat ./azurek8s
Önemli noktalar:
- Başında ve
EOT
sonunda görüyorsanız<< EOT
, 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
- Başında ve
Aşağıdaki komutu kullanarak doğru yapılandırmayı alabilmesi için bir ortam değişkeni
kubectl
ayarlayın.export KUBECONFIG=./azurek8s
komutunu kullanarak
kubectl get nodes
kü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 çıkış olarak sınıflandırılan birkaç anahtar değeri. Örneğin, ana bilgisayar adresi, AKS kümesi kullanıcı adı ve AKS kümesi parolası çıkıştır.
Uygulamayı dağıtma
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. Kubernetes bildirim dosyası, hangi kapsayıcı görüntülerinin çalıştırıldığı gibi kümenin istenen 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.
Not
Ü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.yaml
bir 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: LoadBalancer
YAML bildirim dosyalarının dökümü için bkz . Dağıtımlar ve YAML bildirimleri.
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 apply
ve YAML bildiriminizin adını belirtin.kubectl apply -f aks-store-quickstart.yaml
Aş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 etme
Uygulama çalıştırıldığında Kubernetes hizmeti, uygulamanın ön ucunu İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir.
komutunu kullanarak
kubectl get pods
dağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podların olmasınıRunning
sağlayın.kubectl get pods
Mağaza ön uygulaması için genel IP adresi olup olmadığını denetleyin. bağımsız değişkeniyle komutunu
kubectl get service
kullanarak ilerleme durumunu--watch
izleyin.kubectl get service store-front --watch
Hizmetin EXTERNAL-IP çıkışı
store-front
baş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 4h4m
EXTERNAL-IP adresi bekleme durumundan gerçek bir genel IP adresine geçtikten
kubectl
sonra izleme işlemini durdurmak için kullanınCTRL-C
.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 4h5m
Azure Store uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.
Kaynakları temizleme
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ını çalıştırın ve bayrağını
destroy
belirtin.terraform plan -destroy -out main.destroy.tfplan
Önemli noktalar:
- komutu
terraform plan
bir yürütme planı oluşturur ancak 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ı
-out
parametresi, plan için bir çıkış dosyası belirtmenize olanak tanır. parametresinin-out
kullanılması, gözden geçirdiğiniz planın tam olarak uygulanan plan olmasını sağlar.
- komutu
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ıcımızda uygulamayı indireceksiniz aks-store-demo
. Genel kullanım örnekleri hakkında daha fazla bilgi için genel bakışa azd
bakın.
parametresiyle
--template
komutunu kullanarak Azure-Samples deposundanazd init
AKS deposu tanıtım şablonunu kopyalayın.azd init --template Azure-Samples/aks-store-demo
Projeniz 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 login
hesabı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 login
oturum 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ıktanazd auth login
sonra yeniden yönlendirildiğiniz localhost URL'sine yönelik bircurl
istek 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 auth geçici çözümü
Bu geçici çözüm, Azure CLI'nin yüklü olmasını gerektirir.
Bir terminal penceresi açın ve parametresi olarak ayarlanmış
https://graph.microsoft.com/.default
komutunu kullanarakaz login
Azure CLI ile--scope
oturum açın.az login --scope https://graph.microsoft.com/.default
Aş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 login
oturum 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
curl
isteğ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.
id
Kullanmak istediğiniz aboneliğin alanını kopyalayın.komutunu kullanarak
az account set
aboneliğ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 up
AKS Mağazası uygulamasını çalıştırmak için gereken tüm nesneleri oluşturursunuz.
- Dosya
azure.yaml
, aşağıdaki Kubernetes dağıtımlarını ve hizmetlerini içeren kapsayıcı görüntülerinin getirildiği gibi kümenin istenen durumunu tanımlar:
- 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.
Not
Ü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 kasası istemci gizli dizilerini depolar ve hizmetleri ad alanında pets
çalıştırır.
komutunu kullanarak
azd up
tüm uygulama kaynaklarını oluşturun.azd up
azd up
, uygulama hizmetlerini önceden kaydetmek, sağlamak ve dağıtmak için klasörün içindekiazd-hooks
tüm kancaları çalıştırır.İş akışı aşamalarına özel kod eklemek için kancaları özelleştirin
azd
. Daha fazla bilgi için kanca başvurusunaazd
bakı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)
azd
uygulamanı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şturma
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, 'nin sağlama adımının azd
bir parçası olarak kullanarak terraform apply
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 etme
Uygulama çalıştırıldığında Kubernetes hizmeti, uygulamanın ön ucunu İnternet'te kullanıma sunar. Bu işlemin tamamlanması birkaç dakika sürebilir.
komutunu kullanarak
kubectl set-context
ad alanınızı demo ad alanıpets
olarak ayarlayın.kubectl config set-context --current --namespace=pets
komutunu kullanarak
kubectl get pods
dağıtılan podların durumunu denetleyin. Devam etmeden önce tüm podların olduğundanRunning
emin olun.kubectl get pods
Depo ö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
--watch
izleyin.kubectl get service store-front --watch
Hizmetin EXTERNAL-IP çıkışı
store-front
baş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 4h4m
EXTERNAL-IP adresi bekleme durumundan gerçek bir genel IP adresine geçtikten
kubectl
sonra izleme işlemini durdurmak için kullanınCTRL-C
.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 4h5m
Azure Store uygulamasının çalıştığını görmek için hizmetinizin dış IP adresine bir web tarayıcısı açın.
Küme silme
Hızlı başlangıcı tamamladıktan sonra, Azure ücretlerinden kaçınmak için gereksiz kaynakları temizleyin.
komutunu kullanarak
azd down
hızlı başlangıçta oluşturulan tüm kaynakları silin.azd down
yazarak
y
ve tuşuna basarakEnter
tü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
y
ve tuşuna basarakEnter
temizleme 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 bir Kubernetes kümesi dağıttınız ve ardından basit bir çok kapsayıcılı uygulama 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ğine gitmek için Kubernetes kümesi öğreticisine geçin.
Azure Kubernetes Service