Упражнение. Развертывание приложения в кластере службы Azure Kubernetes
В этом упражнении вы развернете серверную службу обмена сообщениями вашей компании в качестве тестового приложения в службе Azure Kubernetes (AKS). Служба подключается к службе Redis PaaS, созданной в предыдущем упражнении.
Заметка
Код сервиса доступен в репозитории GitHub.
Создание списка в Redis
Необходимо создать список в Redis и заполнить его случайными элементами, чтобы имитировать очередь, получающую данные. Каждый элемент в очереди представляет то, что микрослужба будет обрабатывать. В этом упражнении вы добавите статическое число элементов. Далее в упражнении вы будете масштабировать микрослужбу до количества элементов в очереди.
Убедитесь, что Docker работает на компьютере.
Создайте контейнер Redis локально для подключения к кэшу Azure для Redis с помощью команды
docker run
:docker run -it --rm redis redis-cli -h $REDIS_HOST -a $REDIS_KEY
Выходные данные должны выглядеть примерно так:
redis-contoso-video.redis.cache.windows.net:6379>
Создайте список и заполните его случайными элементами с помощью команды
lpush keda
:lpush keda Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eget interdum felis, ac ultricies nulla. Fusce vehicula mattis laoreet. Quisque facilisis bibendum dui, at scelerisque nulla hendrerit sed. Sed rutrum augue arcu, id maximus felis sollicitudin eget. Curabitur non libero rhoncus, pellentesque orci a, tincidunt sapien. Suspendisse laoreet vulputate sagittis. Vivamus ac magna lacus. Etiam sagittis facilisis dictum. Phasellus faucibus sagittis libero, ac semper lorem commodo in. Quisque tortor lorem, sollicitudin non odio sit amet, finibus molestie eros. Proin aliquam laoreet eros, sed dapibus tortor euismod quis. Maecenas sed viverra sem, at porta sapien. Sed sollicitudin arcu leo, vitae elementum
Проверьте длину списка с помощью команды
llen keda
:llen keda
Закройте консоль Redis, введя
exit
.
Создание манифеста развертывания
Вы создаете файл манифеста развертывания для развертывания приложения. Файл манифеста позволяет определить тип ресурса, который требуется развернуть, и сведения, связанные с рабочей нагрузкой.
Kubernetes группирует контейнеры в логические структуры, называемые pod, которые не имеют аналитики. Развертывания добавляют недостающий интеллект для создания вашего приложения.
В Cloud Shell создайте файл манифеста для развертывания Kubernetes с именем
deployment.yaml
с помощью командыtouch
:touch deployment.yaml
Откройте интегрированный редактор в Cloud Shell, введя
code .
Откройте файл
deployment.yaml
и вставьте следующий код манифеста. Обязательно замените переменные среды Redis собственными значениями.apiVersion: apps/v1 kind: Deployment metadata: name: contoso-microservice spec: replicas: 1 # Tells K8S the number of containers to process the Redis list items selector: # Define the wrapping strategy matchLabels: # Match all pods with the defined labels app: contoso-microservice # Labels follow the `name: value` template template: # Template of the pod inside the Deployment metadata: labels: app: contoso-microservice spec: containers: - image: mcr.microsoft.com/mslearn/samples/redis-client:latest name: contoso-microservice resources: requests: cpu: 100m memory: 128Mi limits: cpu: 100m memory: 128Mi env: - name: REDIS_HOST value: "redis-contoso-video.redis.cache.windows.net" # *** REPLACE with your value *** - name: REDIS_PORT value: "6379" # *** REPLACE with your value *** - name: REDIS_LIST value: "keda" # *** REPLACE with your value *** - name: REDIS_KEY value: "******************************************" # *** REPLACE with your value ***
Сохраните файл манифеста (CTRL+S) и закройте редактор(CTRL+Q).
Применение манифеста
Разверните манифест в кластере с помощью команды
kubectl apply
:kubectl apply -f ./deployment.yaml
Выходные данные должны выглядеть примерно так:
deployment.apps/contoso-microservice created
Убедитесь, что развертывание выполнено успешно с помощью команды
kubectl get deployment
:kubectl get deployment contoso-microservice
Выходные данные должны выглядеть примерно так:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-microservice 1/1 1 0 16s
Убедитесь, что pod запущен с помощью команды
kubectl get pods
.kubectl get pods
Выходные данные должны выглядеть примерно так:
NAME READY STATUS RESTARTS AGE contoso-microservice-7c58c5f699-r79mv 1/1 Running 0 63s