Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба Azure Kubernetes (AKS) — это управляемая служба Kubernetes, которая позволяет быстро развертывать кластеры и управлять ими. В этом кратком руководстве вы:
- Разверните кластер AKS с помощью Terraform.
- Запустите пример мультиконтейнерного приложения с группой микрослужб и веб-интерфейсов с имитацией сценария розничной торговли.
Примечание.
Чтобы приступить к быстрой подготовке кластера AKS, в этой статье содержатся действия по развертыванию кластера с параметрами по умолчанию только для оценки. Прежде чем развертывать готовый к работе кластер, рекомендуется ознакомиться с базовой эталонной архитектурой , чтобы понять, как она соответствует вашим бизнес-требованиям.
Прежде чем начать
- В этом руководстве быстрого старта предполагается, что у вас есть базовое понимание концепций Kubernetes. Дополнительные сведения см. в статье Ключевые концепции Kubernetes для службы Azure Kubernetes (AKS).
- Вам потребуется учетная запись Azure с активной подпиской. Если у вас нет учетной записи, создайте бесплатную учетную запись.
- Следуйте инструкциям на основе интерфейса командной строки.
- Дополнительные сведения о создании пула узлов Windows Server см. в разделе Создание кластера AKS, поддерживающего контейнеры Windows Server.
Примечание.
Пул узлов Linux Azure теперь доступен в общем режиме доступности. Дополнительные сведения о преимуществах и действиях по развертыванию см. в статье "Общие сведения о узле контейнеров Linux Azure для AKS".
- Установите и настройте Terraform.
- Скачайте kubectl.
- Создайте случайное значение для имени группы ресурсов Azure с помощью random_pet.
- Создайте группу ресурсов Azure с помощью azurerm_resource_group.
- Перейдите к конфигурации поставщика AzureRM, чтобы получить идентификатор объекта Azure с помощью azurerm_client_config.
- Создайте кластер Kubernetes с помощью azurerm_kubernetes_cluster.
- Создайте ресурс azapi_resource.
- Создайте ресурс AzAPI для создания пары ключей SSH с помощью azapi_resource_action.
Вход в учетную запись Azure.
Сначала войдите в учетную запись Azure и выполните проверку подлинности с помощью одного из методов, описанных в следующем разделе.
Terraform поддерживает проверку подлинности только в Azure с помощью Azure CLI. Проверка подлинности с помощью Azure PowerShell не поддерживается. Таким образом, хотя при выполнении работы Terraform можно использовать модуль Azure PowerShell, сначала необходимо выполнить проверку подлинности в Azure.
Реализация кода Terraform
Примечание.
Пример кода для этой статьи находится в репозитории Azure Terraform GitHub. Вы можете просмотреть файл журнала, содержащий результаты теста из текущих и предыдущих версий Terraform.
См. другие статьи и примеры кода, в которых показано, как использовать Terraform для управления ресурсами Azure.
Создайте каталог, который можно использовать для тестирования примера кода Terraform и сделать его текущим каталогом.
Создайте файл с именем
providers.tf
и вставьте следующий код: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.tf
и вставьте следующий код: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.tf
и вставьте следующий код:# 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.tf
и вставьте следующий код: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.tf
и вставьте следующий код: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
Запустите terraform init, чтобы инициализировать развертывание Terraform. Эта команда загружает провайдер Azure, необходимый для управления вашими ресурсами Azure.
terraform init -upgrade
Основные моменты:
- Параметр
-upgrade
обновляет необходимые подключаемые модули поставщика до последней версии, которая соответствует ограничениям версии конфигурации.
Создание плана выполнения Terraform
Чтобы создать план выполнения, выполните terraform plan.
terraform plan -out main.tfplan
Основные моменты:
- Команда
terraform plan
создает план выполнения, но не выполняет его. Вместо этого она определяет, какие действия необходимы для создания конфигурации, заданной в файлах конфигурации. Этот шаблон позволяет проверить, соответствует ли план выполнения вашим ожиданиям, прежде чем вы начнете вносить изменения в фактические ресурсы. - Необязательный параметр
-out
позволяет указать выходной файл для плана. Использование параметра-out
гарантирует, что проверяемый план полностью соответствует применяемому.
Применение плана выполнения Terraform
Выполните terraform apply, чтобы применить план выполнения к вашей облачной инфраструктуре.
terraform apply main.tfplan
Основные моменты:
- Пример команды
terraform apply
предполагает, что вы до этого выполнили командуterraform plan -out main.tfplan
. - Если для параметра
-out
указано другое имя файла, используйте то же имя в вызове кterraform apply
. - Если вы не использовали параметр
-out
, вызовитеterraform apply
без параметров.
Проверка результатов
Получите имя группы ресурсов Azure с помощью следующей команды.
resource_group_name=$(terraform output -raw resource_group_name)
Отображение имени нового кластера Kubernetes с помощью команды az aks list .
az aks list \ --resource-group $resource_group_name \ --query "[].{\"K8s cluster name\":name}" \ --output table
Получите конфигурацию Kubernetes из состояния Terraform и сохраните ее в файле, который
kubectl
может прочитать с помощью следующей команды.echo "$(terraform output kube_config)" > ./azurek8s
Убедитесь, что предыдущая команда не добавила символ EOT ASCII, используя следующую команду.
cat ./azurek8s
Основные моменты:
- Если вы видите
<< EOT
в начале иEOT
конце, удалите эти символы из файла. В противном случае может появиться следующее сообщение об ошибке:error: error loading config file "./azurek8s": yaml: line 2: mapping values are not allowed in this context
- Если вы видите
Задайте переменную среды, чтобы
kubectl
мог получить правильную конфигурацию с помощью следующей команды.export KUBECONFIG=./azurek8s
Проверьте работоспособность кластера с помощью
kubectl get nodes
команды.kubectl get nodes
Основные моменты:
- При создании кластера AKS мониторинг был включен для записи метрик состояния узлов кластера и pod. Эти метрики работоспособности доступны на портале Azure. Дополнительные сведения о мониторинге работоспособности контейнеров см. в разделе Мониторинг работоспособности Azure Kubernetes Service.
- Когда вы применили план выполнения Terraform, несколько ключевых значений были классифицированы как выходные данные. Например, адрес хоста, имя пользователя кластера AKS и пароль кластера AKS выводятся.
Развертывание приложения
Чтобы развернуть приложение, используйте файл манифеста для создания всех объектов, необходимых для запуска приложения AKS Store. Файл манифеста Kubernetes используется для определения требуемого состояния кластера, например, какие образы контейнеров запускать. Манифест включает следующие развертывания и службы Kubernetes:
- Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
- Служба продукта: отображает сведения о продукте.
- Служба заказов: помещает заказы.
- Rabbit MQ: очередь сообщений для обработки заказов.
Примечание.
Мы не рекомендуем запускать контейнеры с сохранением состояния, такие как Rabbit MQ, без постоянного хранилища для продуктивной среды. Они используются здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как Azure CosmosDB или Служебная шина Azure.
Создайте файл с именем
aks-store-quickstart.yaml
и скопируйте его в следующем манифесте: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 см. в разделе "Развертывания" и "Манифесты YAML".
Если вы создаете и сохраняете файл YAML локально, вы можете отправить файл манифеста в каталог по умолчанию в CloudShell, нажав кнопку "Отправить и скачать файлы " и выбрав файл из локальной файловой системы.
Разверните приложение с помощью
kubectl apply
команды и укажите имя манифеста YAML.kubectl apply -f aks-store-quickstart.yaml
В следующем примере выходных данных показаны развертывания и службы:
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
Тестирование приложения
При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Процесс может занять несколько минут для завершения.
Проверьте состояние развернутых подов с помощью команды
kubectl get pods
. Убедитесь, что все модули pod находятся в состоянииRunning
прежде чем продолжить.kubectl get pods
Проверьте общедоступный IP-адрес для приложения store-front. Отслеживайте ход выполнения с помощью команды
kubectl get service
с аргументом--watch
.kubectl get service store-front --watch
Выходные данные EXTERNAL-IP для
store-front
службы изначально отображаются как в ожидании:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Когда значение параметра EXTERNAL-IP изменится с pending на фактический общедоступный IP-адрес, выполните
CTRL-C
, чтобы остановить процесс отслеживанияkubectl
.В следующем примере выходных данных показан общедоступный IP-адрес, присвоенный службе.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Откройте веб-браузер и перейдите по внешнему IP-адресу вашей службы, чтобы ознакомиться с работой приложения Магазина Azure.
Очистка ресурсов
Удаление ресурсов AKS
Если вам больше не нужны ресурсы, созданные через Terraform, выполните следующие действия:
Выполните команду terraform plan и укажите флаг
destroy
.terraform plan -destroy -out main.destroy.tfplan
Основные моменты:
- Команда
terraform plan
создает план выполнения, но не выполняет его. Вместо этого она определяет, какие действия необходимы для создания конфигурации, заданной в файлах конфигурации. Этот шаблон позволяет проверить, соответствует ли план выполнения вашим ожиданиям, прежде чем вы начнете вносить изменения в фактические ресурсы. - Необязательный параметр
-out
позволяет указать выходной файл для плана. Использование параметра-out
гарантирует, что проверяемый план полностью соответствует применяемому.
- Команда
Выполните команду terraform apply, чтобы применить план выполнения.
terraform apply main.destroy.tfplan
Удаление учетной записи службы.
Получите идентификатор учетной записи службы с помощью следующей команды.
sp=$(terraform output -raw sp)
Удалите основной объект службы с помощью команды az ad sp delete.
az ad sp delete --id $sp
- Установка интерфейса командной строки разработчика Azure (AZD)
- Установите и настройте Terraform.
- Вы можете просмотреть код приложения, используемый в репозитории Azure-Samples/aks-store-demo.
Клонирование шаблона интерфейса командной строки разработчика Azure
Интерфейс командной строки разработчика Azure позволяет быстро скачать примеры из репозитория Azure-Samples . В нашей быстрой aks-store-demo
инструкции вы скачиваете приложение. Дополнительные сведения об общих вариантах использования см. в обзореazd
.
Клонируйте демонстрационный шаблон хранилища AKS из репозитория Azure-Samples с помощью
azd init
команды с параметром--template
.azd init --template Azure-Samples/aks-store-demo
Введите имя среды для проекта, использующего только буквенно-цифровые символы и дефисы, например aks-terraform-1.
Enter a new environment name: aks-terraform-1
Вход в учетную запись Azure Cloud
Шаблон azd
содержит весь код, необходимый для создания служб, но для размещения приложения в AKS необходимо войти в учетную запись Azure.
Войдите в учетную запись с помощью
azd auth login
команды.azd auth login
Скопируйте код устройства, отображаемый в выходных данных, и нажмите клавишу ВВОД для входа.
Start by copying the next code: XXXXXXXXX Then press enter and continue to log in from your browser...
Внимание
Если вы используете виртуальную машину, не подключенную к сети, или GitHub Codespace, некоторые политики безопасности Azure вызывают конфликты при входе в
azd auth login
систему. При возникновении проблемы вы можете следовать обходному пути с использованием azd auth, который включает использованиеcurl
запроса на URL-адрес localhost, на который вы были перенаправлены после выполнения процессаazd auth login
.Выполните аутентификацию с помощью ваших учетных данных на странице входа вашей организации.
Убедитесь, что вы пытаетесь подключиться из Azure CLI.
Проверьте сообщение "Проверка подлинности кода устройства завершена. Войдите в Azure". Отображается в исходном терминале.
Waiting for you to complete authentication in the browser... Device code authentication completed. Logged in to Azure.
azd auth обходной путь
Для этого обходного решения требуется установить Azure CLI .
Откройте окно терминала и войдите с помощью Azure CLI с помощью
az login
команды с заданным параметром--scope
https://graph.microsoft.com/.default
.az login --scope https://graph.microsoft.com/.default
Чтобы создать маркер доступа к браузеру, вы будете перенаправлены на страницу аутентификации в новой вкладке, как показано в следующем примере.
https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?clientid=<your_client_id>.
Скопируйте URL-адрес localhost той веб-страницы, которую вы получили после попытки войти с
azd auth login
.В новом окне терминала используйте следующий
curl
запрос для входа. Замените заполнитель URL-адресом<localhost>
localhost, скопированным на предыдущем шаге.curl <localhost>
Успешный вход выводит HTML-веб-страницу, как показано в следующем примере:
<!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>
Закройте текущий терминал и откройте исходный терминал. Вы должны увидеть JSON-список своих подписок.
id
Скопируйте поле подписки, которую вы хотите использовать.Настройте подписку, используя команду
az account set
.az account set --subscription <subscription_id>
Создание и развертывание ресурсов для кластера
Чтобы развернуть приложение, используйте azd up
команду для создания всех объектов, необходимых для запуска приложения AKS Store.
- Файл
azure.yaml
определяет желаемое состояние кластера, например, какие образы контейнеров необходимо получить, и включает следующие развертывания и службы Kubernetes:
- Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
- Сервис продукта: отображает сведения о продукте.
- Служба заказов: помещает заказы.
- Rabbit MQ: очередь сообщений для очереди заказов.
Примечание.
Не рекомендуется запускать контейнеры с отслеживанием состояния, такие как Rabbit MQ, без постоянного хранения для рабочей среды. Они используются здесь для простоты, но мы рекомендуем использовать управляемые службы, такие как Azure Cosmos DB или Служебная шина Azure.
Развертывание ресурсов приложения
Шаблон azd
для этого быстрого начала создает группу ресурсов с кластером AKS и хранилищем ключей Azure. Хранилище ключей хранит секреты клиента и запускает службы в pets
пространстве имен.
Создайте все ресурсы приложения с помощью
azd up
команды.azd up
azd up
запускает все хуки внутриazd-hooks
для предварительной регистрации, подготовки и развертывания служб приложений.Настройте перехватчики для добавления пользовательского
azd
кода на этапы рабочего процесса. Дополнительные сведения см. в справочникеazd
перехватчиков.Выберите подписку Azure для целей выставления счетов.
? Select an Azure Subscription to use: [Use arrows to move, type to filter] > 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Выберите регион для развертывания приложения.
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
автоматически запускает крючки предварительной и последующей подготовки для создания ресурсов вашего приложения. Этот процесс может занять несколько минут. После завершения вы увидите выходные данные, аналогичные следующему примеру:SUCCESS: Your workflow to provision and deploy to Azure completed in 9 minutes 40 seconds.
Создание планов Terraform
В шаблоне разработчика Azure папка /infra/terraform
содержит весь код, используемый для создания плана Terraform.
Terraform развертывает и выполняет команды, используя terraform apply
в рамках шага настройки azd
. После завершения вы увидите выходные данные, аналогичные следующему примеру:
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
Тестирование приложения
При запуске приложения Служба Kubernetes предоставляет внешний интерфейс приложения в Интернете. Этот процесс может занять несколько минут.
Задайте пространство имен
pets
как демонстрационное пространство с помощью командыkubectl set-context
.kubectl config set-context --current --namespace=pets
Проверьте состояние развернутых подов с помощью команды
kubectl get pods
. Прежде чем продолжить, убедитесь, что все модули находятся в состоянииRunning
.kubectl get pods
Проверьте общедоступный IP-адрес для приложения на стороне магазина и отслеживайте ход выполнения с помощью
kubectl get service
команды с аргументом--watch
.kubectl get service store-front --watch
Выходной результат EXTERNAL-IP для
store-front
службы изначально отображается как в ожидании:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 <pending> 80:30025/TCP 4h4m
Когда параметр EXTERNAL-IP изменится с pending на общедоступный IP-адрес, выполните команду
CTRL-C
, чтобы остановить процесс отслеживанияkubectl
.В следующем примере выходных данных показан допустимый общедоступный IP-адрес, назначенный службе:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE store-front LoadBalancer 10.0.100.10 20.62.159.19 80:30025/TCP 4h5m
Откройте веб-браузер и перейдите по внешнему IP-адресу вашей службы, чтобы увидеть приложение Azure Store в действии.
Удаление кластера
По завершении быстрого старта очистите ненужные ресурсы, чтобы избежать платежей Azure.
Удалите с помощью команды
azd down
все ресурсы, созданные в кратком руководстве.azd down
Подтвердите решение удалить все используемые ресурсы из подписки, введя
y
и нажав клавишуEnter
.? Total resources to delete: 14, are you sure you want to continue? (y/N)
Разрешите очистке повторно использовать переменные быстрого запуска, если это применимо, введя
y
и нажав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.
Устранение неполадок с Terraform в Azure
Устранение распространенных проблем при использовании Terraform в Azure.
Следующие шаги
В этом кратком руководстве вы развернули кластер Kubernetes, а затем простое многоконтейнерное приложение в этом кластере. Этот пример приложения предназначен только для демонстрационных целей и не представляет все рекомендации для приложений Kubernetes. Рекомендации по созданию полных решений с помощью AKS для рабочей среды см. в руководстве по решению AKS.
Чтобы узнать больше об AKS и ознакомиться с полным примером кода к развертыванию, перейдите к руководству по кластеру Kubernetes.
Azure Kubernetes Service