3 совета по развертыванию APISIX в Kubernetes (Часть 1)

March 14, 2024

Technology

Эра облачных вычислений привела к широкому распространению Kubernetes как платформы для оркестрации контейнеров, а Apache APISIX стал высокопроизводительным, облачным динамическим API-шлюзом. Развертывание Apache APISIX в Kubernetes становится все более распространенным. Однако, несмотря на относительно простой процесс развертывания Apache APISIX в Kubernetes, есть несколько ключевых моментов, которые необходимо учитывать. В этой серии статей мы рассмотрим следующие темы:

  1. Вопросы, связанные с методами развертывания
  2. Проверка работоспособности, логирование и мониторинг
  3. Работа с пользовательскими плагинами и конфигурациями

В этой статье мы сосредоточимся на первом пункте, а именно на вопросах, связанных с методами развертывания Apache APISIX в Kubernetes.

Методы развертывания APISIX в Kubernetes

Для плавного развертывания и управления APISIX в Kubernetes, обеспечивая стабильность и надежность системы, необходимо учитывать несколько факторов в методах развертывания.

1. Разделение плоскости данных и плоскости управления

При развертывании в Kubernetes важно разделить плоскость данных APISIX (узлы, обрабатывающие фактический трафик) и плоскость управления (узлы, управляющие конфигурациями и обрабатывающие вызовы API). Это разделение имеет несколько преимуществ:

  • Эластичное масштабирование: Плоскость данных обрабатывает фактическую обработку запросов, а плоскость управления управляет конфигурацией и распределением политик. При разделении система может независимо масштабировать плоскости данных и управления горизонтально, динамически регулируя систему в зависимости от фактических требований к нагрузке. Это способствует эластичному масштабированию, повышая общую масштабируемость системы.

  • Изоляция сбоев: Разделение плоскостей данных и управления помогает достичь изоляции сбоев. Если плоскость управления выходит из строя, плоскость данных может продолжать обрабатывать запросы, обеспечивая доступность сервиса, и наоборот. Это разделение помогает предотвратить влияние единичных сбоев на всю систему, тем самым повышая отказоустойчивость и стабильность.

  • Повышенная безопасность: Разделение плоскостей данных и управления повышает безопасность системы. Плоскость управления обычно содержит конфиденциальную информацию, такую как политики контроля доступа и конфигурации аутентификации, в то время как плоскость данных обрабатывает фактические запросы. Раздельное развертывание позволяет лучше защитить безопасность плоскости управления, снижая потенциальные риски атак.

Архитектура Apache APISIX

2. Решение для постоянного развертывания etcd

Apache APISIX предлагает различные режимы конфигурации, такие как автономный режим и режим центра конфигурации etcd. Если вы выбираете кластер etcd в качестве центра конфигурации для Apache APISIX, необходимо учитывать несколько моментов:

  • Использование StatefulSet: В Kubernetes StatefulSet обычно используется для развертывания etcd. StatefulSet предоставляет стабильные сетевые идентификаторы и упорядоченное развертывание Pod, что важно для распределенной системы. Каждый узел etcd может иметь уникальный идентификатор и поддерживать постоянное хранилище для обеспечения безопасности данных.

  • Правильные ограничения ресурсов: Установите соответствующие ограничения ресурсов для Pod etcd, чтобы обеспечить их бесперебойную работу в кластере. Настройте в зависимости от размера кластера и нагрузки, чтобы избежать нехватки или избытка ресурсов.

  • Настройка постоянного хранилища: Для обеспечения постоянства и надежности данных рекомендуется хранить данные etcd в постоянном хранилище. Для этого можно использовать Persistent Volumes (PV) и Persistent Volume Claims (PVC) в Kubernetes.

  • Включение шифрования TLS: Включите шифрование TLS в кластере etcd для защиты передачи данных. Используйте сертификаты и закрытые ключи для аутентификации кластера etcd и шифрования связи между узлами. Это можно достичь, создавая и используя самоподписанные сертификаты или сертификаты, выданные доверенными центрами сертификации (CA).

  • Включение аутентификации и авторизации: etcd поддерживает аутентификацию на основе имен пользователей и паролей, а также авторизацию на основе ролей. Рекомендуется включить эти функции в производственной среде, чтобы гарантировать, что только авторизованные пользователи могут получать доступ и изменять данные в etcd. При подключении плоскости управления и плоскости данных Apache APISIX к etcd рекомендуется назначать разные роли, например, предоставляя права на чтение и запись плоскости управления и только на чтение плоскости данных.

  • Регулярное резервное копирование: Регулярно создавайте резервные копии данных etcd, чтобы предотвратить потерю или повреждение данных. Используйте инструменты резервного копирования, предоставляемые etcd, и храните резервные копии в безопасном месте для восстановления при необходимости. Методы резервного копирования включают горячее и холодное резервное копирование. Для безопасности данных рекомендуется использовать метод etcd learner для горячего резервного копирования и сочетать его с методами холодного резервного копирования снимков, чтобы максимизировать возможности восстановления данных.

  • Мониторинг и оповещения: Разверните инструменты мониторинга для отслеживания состояния здоровья кластера etcd в реальном времени. Prometheus — это часто используемый инструмент мониторинга, который можно интегрировать с etcd. Настройте правила оповещения, чтобы своевременно реагировать на возникающие проблемы.

  • Правильная обработка изменений узлов: В кластере etcd могут происходить добавления, удаления или замены узлов. Убедитесь, что изменения узлов обрабатываются правильно, чтобы избежать несогласованности данных и перерывов в обслуживании.

3. Использование APISIX Ingress Controller вместо K8s Ingress Controller

APISIX Ingress Controller — это инструмент, ориентированный на управление API, предлагающий высокую производительность и гибкие варианты конфигурации. Если вам требуются более сложные правила маршрутизации, ограничение скорости, разрыв цепи и другие расширенные функции, APISIX Ingress Controller может быть лучшим выбором. Он предоставляет богатую систему плагинов, позволяя интегрировать плагины через APISIX Ingress CRD с использованием декларативной конфигурации для обработки аутентификации, авторизации, мониторинга, логирования и других функций. Это обогащает возможности APISIX Ingress Controller и упрощает конфигурацию.

APISIX Ingress Controller

Если вам нужен комплексный интерфейс конфигурации и глубокая интеграция с Kubernetes, рассмотрите платформу управления полным жизненным циклом API API7 Enterprise на основе Apache APISIX. API7 Enterprise предоставляет комплексное решение для расширенной автоматизации, мониторинга и устранения неполадок, предлагая более надежную поддержку для бизнеса.

Заключение

При развертывании APISIX в Kubernetes необходимо уделять внимание нескольким аспектам. Во-первых, сосредоточьтесь на разделении плоскости данных и плоскости управления для достижения эластичного масштабирования, изоляции сбоев и повышения безопасности. Во-вторых, используйте схему постоянного развертывания на основе etcd, чтобы обеспечить постоянство и надежность конфигураций. Кроме того, рассмотрите возможность использования более подходящего APISIX Ingress Controller вместо K8s Ingress Controller, чтобы получить более богатые функции и более простую конфигурацию. Только следуя этим лучшим практикам, можно обеспечить стабильность и надежность системы.

Tags: