Упражнение. Развертывание приложения в кластере Службы 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