Создание проектов CNCF с помощью Службы Azure Kubernetes

Служба Azure Kubernetes (AKS)

В этой статье показано, как разработать, спроектировать, собрать и развернуть приложение, использующее проекты из Cloud Native Computing Foundation (CNCF) после развертывания службы Azure Kubernetes (AKS). Архитектура описывает приложение с проектами CNCF на GitHub. Инструкции по установке в репозитории содержат шаги по развертыванию архитектуры.

Архитектура

Architecture diagram that shows the reference architecture for building a CNCF project.

Скачайте файл Visio для этой архитектуры.

Рабочая нагрузка — это простое веб-приложение, которое сотрудники могут использовать для отправки и просмотра отчетов о расходах. Когда сотрудник отправляет отчет о расходах, руководитель сотрудника получает уведомление по электронной почте.

Рабочий процесс

Блок-схема приложения

1. Сотрудник обращается к веб-приложению через входящий трафик NGINX для отправки отчета о расходах.

2. Веб-приложение вызывает приложение API для получения данных о руководителе сотрудника.

3. Веб-приложение отправляет сообщение, созданное для создания отчета о расходах брокеру Knative.

4. Отчет о расходах сохраняется в MySQL.

5. Knative активирует функцию диспетчера электронной почты с сообщением о расходах в качестве полезных данных.

6. Диспетчер электронной почты создает сообщение SendGrid.

7. SendGrid отправляет сообщение руководителю по электронной почте.

Блок-схема DevOps

a. Разработчики пишут или обновляют код в Visual Studio Code.

b. Разработчики отправляют код в GitHub из своей локальной рабочей области в Visual Studio Code.

c. Веб-перехватчик Github активирует конвейеры Tekton, которые клонируют код GitHub.

d. Конвейеры создают и помещают образы контейнеров в реестр Гавани.

д) Tekton развертывает веб-приложение, приложение API и диспетчер электронной почты.

f. Prometheus фиксирует метрики приложений.

ж. Инженеры отслеживают метрики на панели мониторинга Grafana.

h. Инженеры DevOps наблюдают за панелью мониторинга Grafana.

Инфраструктура

i. Кластер AKS на основе инфраструктуры, представленной в базовой базе AKS.

ii. Новичок Ceph, используемый для хранилища кластеров.

iii. Сетка служб Linkerd.

iv. Jaeger для общей трассировки приложений в кластере Kubernetes.

Операции с кластером

Управлять кластерами и их начальной загрузкой также можно с помощью управления GitOps. Flux является популярным оператором GitOps. Его часто используют в сочетании с GitHub Actions для проверки обновленных манифестов и диаграмм Helm.

Компоненты

Azure

ПО с открытым исходным кодом

  • Kubernetes. CNCF. Автоматизирует развертывание, масштабирование приложений-контейнеров и управление ими.
  • Flux. CNCF. Поставщик GitOps для доставки инфраструктуры.
  • Rook. CNCF. Обеспечивает управление хранилищем для кластеров.
  • Harbor. CNCF. Реестр контейнеров для образов.
  • Linkerd. CNCF. Сетка служб, которая интегрируется с OpenFaaS, NGINX, Prometheus и Jaeger.
  • Prometheus. CNCF. Фиксирует метрики приложений.
  • Jaeger. CNCF. Обеспечивает общую трассировку приложений в кластере Kubernetes.
  • Knative. CNCF. Используется для создания бессерверного и управляемого событиями приложения. Развертывает функцию диспетчера электронной почты.
  • MySQL. База данных, в которой хранятся отчеты о расходах.
  • NGINX. Контроллер входящего трафика в Kubernetes, используемый сотрудниками для доступа к веб-приложению для отправки отчетов о расходах.
  • Tekton. Проект Continuous Delivery Foundation, используемый для непрерывной интеграции и непрерывного развертывания (CI/CD). Развертывает веб-приложение, приложение API и диспетчер электронной почты.
  • Grafana. Панель мониторинга для метрик приложений.
  • SendGrid. Внешняя служба электронной почты, которая отправляет руководителю сообщение с отчетом о затратах.
  • GitHub. Репозиторий кода. Конвейеры Tekton используют код GitHub.
  • .NET Core. Используется для веб-интерфейса и веб-API.
  • Flux. Обеспечивает управление GitOps.

Альтернативные варианты

В этом проекте используются проекты, разработанные в CNCF. Возможно использовать различные службы. Альтернативные варианты см. на веб-сайте CNCF. Ниже приведены материалы, которые описывают некоторые из них.

В качестве альтернативы можно использовать различные службы Azure. Например, маршрутизация веб-приложений, Реестр контейнеров Azure, контейнер Azure служба хранилища, Azure Monitor, управляемая служба Azure Monitor для Prometheus, управляемая Grafana Azure.

Корпорация Майкрософт также поддерживает проекты OSS в качестве управляемых надстроек и производных проектов в AKS, включая Nginx, Istio, Prometheus, Grafana и OpenEBS.

Подробности сценария

Эту архитектуру можно развернуть в любом кластере Kubernetes, а не только в AKS. Это один из примеров гибкости платформы AKS. AKS упрощает развертывание управляемого кластера Kubernetes в Azure.

После изучения этой статьи вы получите представление о том, как развернуть типичное приложение, которое в основном включает проекты CNCF.

Потенциальные варианты использования

Следующие варианты использования имеют похожие шаблоны проектирования.

  • Создание конвейера CI/CD для рабочих нагрузок на основе контейнера
  • Использование GitOps для AKS

Рекомендации

Эти рекомендации реализуют основные принципы платформы Azure Well-Architected Framework, которая является набором руководящих принципов, которые можно использовать для улучшения качества рабочей нагрузки. Дополнительные сведения см. в статье Microsoft Azure Well-Architected Framework.

  • Для кластера Kubernetes требуется пул узлов по крайней мере с тремя узлами и номером SKU виртуальной машины DS2_v2 или выше.
  • Тома, использующие управляемые диски Azure, не могут быть соединены между зонами. Они должны находиться в одной зоне.
  • Установка Rook может занять от 20 до 25 минут. Прежде чем перейти к следующему шагу, убедитесь, что кластер Ceph полностью подготовлен.
  • Установка Jaeger занимает около 5 минут.
  • Для отображения Linkerd на панели мониторинга потребуется около 12 минут.

Оптимизация затрат

Оптимизация затрат заключается в поиске способов уменьшения ненужных расходов и повышения эффективности работы. Дополнительные сведения см. в разделе Обзор критерия "Оптимизация затрат".

Для оценки затрат можно использовать калькулятор цен Azure. Ниже приведены рекомендации по ценам для запуска этого проекта в Azure. Применяется незначительная оплата пропускной способности.

Масштабируемые наборы виртуальных машин

Взимается плата за виртуальные машины, используемые в масштабируемых наборах виртуальных машин Microsoft Azure для кластера AKS. Дополнительные сведения см. в статье Цены на масштабируемые наборы виртуальных машин Microsoft Azure.

Хранилище

Оплата хранения применяется к каждому диску данных, который необходим для установки Rook. Для этого кластера AKS с тремя узлами конфигурация Rook использует два диска данных на каждом узле: диски емкостью 1 ГБ и 200 ГБ. Дополнительные сведения см. в статье Стоимость хранения: цены.

Подсистема балансировки нагрузки

Взимается плата за подсистему балансировки нагрузки, связанную с этим кластером AKS. Дополнительные сведения см. в статье Цены на Load Balancer.

Виртуальная сеть

Взимается плата за использование виртуальной сети кластером AKS. Дополнительные сведения см. в статье Цены на виртуальную сеть Microsoft Azure.

Развертывание этого сценария

Разверните этот сценарий из репозитория GitHub Azure или ориентированного на облако приложения. Следуйте инструкциям по установке, чтобы развернуть приложение с проектами CNCF в вашей среде.

Этот репозиторий является проектом сообщества. Он принимает и утверждает запросы на вытягивание (PR) для улучшений и модификаций со стороны сообщества.

Следующие шаги