Как создать полнофункциональное приложение Kubernetes на кластере Pi

Эта статья является первой в серии, посвященной моему путешествию по разработке и развертыванию Kubernetes и примера приложения в стиле микросервисов в кластере Raspberry Pi.

Части этой серии предназначены для использования в качестве метаресурсов по разработке и развертыванию приложений Kubernetes в кластере Raspberry Pi. Общие задачи, такие как развертывание ОС на Raspberry Pi, легко доступны в других ресурсах. Я не буду повторять информацию из этой серии. В этой серии будут представлены подробности в областях, которых нет в других источниках.

Задачи из этой серии, которые не выполнялись на Raspberry Pi (например, первоначальная настройка и различные административные задачи), выполнялись на MacBook Pro под управлением Catalina.

Почему я это делаю?

Я искал интересный проект для работы. Моя повседневная работа включает именно это, разработку и развертывание приложений в кластерах Kubernetes. Однако я всего лишь часть большой команды. Хотя команда знакома со всеми технологиями, используемыми в приложении, каждый из нас, как правило, берет на себя более специализированные роли. В частности, моя роль сосредоточена на приложении. Я чувствовал, что могу «управлять» Kubernetes в том смысле, что я знаю, как выполнять определенные операции, связанные с управлением приложением и устранением неполадок. Тем не менее, у меня определенно не было того, что я бы назвал глубокими знаниями Kubernetes.

Чтобы ближе познакомиться с Kubernetes, я решил создать кластер Kubernetes с нуля. Поскольку у меня нет доступа к большему кластеру компьютеров и у меня есть побочный интерес к Raspberry Pis, я решил создать свой кластер с помощью Raspberry Pis.

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

Статьи в серии

В настоящее время доступны следующие статьи:

  • Настройка кластера Raspberry Pi: описывает, как создать и настроить группу Raspberry Pi в кластер. Это включает определение сети внутри кластера и с внешней сетью.
  • Я устанавливаю Kubernetes в кластере Raspberry Pi: это включает в себя установку и настройку Kubernetes, а также создание и развертывание простой службы. Этот последний шаг включает в себя минимальное приложение, которое можно использовать для тестирования кластера Kubernetes, а также простой внешний сетевой доступ к приложению.
  • Установить Kubernetes Ingress на кластер Raspberry Pi: Ingress - это полезный способ поддержки внешнего доступа к сервисам внутри кластера. В этой статье я расскажу, как установить, настроить и протестировать Traefik как Ingress Controller. Эта статья также включает установку и настройку Helm. Helm будет использоваться для развертывания Traefik. Шлем также будет использоваться в следующих статьях серии.
  • Мониторинг приложений Kubernetes в кластере Raspberry Pi - установите Prometheus, Grafana и EFK (Elasticsearch / Fluentd / Kibana) в качестве стека мониторинга. В нем также описывается установка Telegraf в кластере для мониторинга метрик машинного уровня для хостов в кластере. Например, загрузка и температура процессора, использование диска.
  • Как установить MariaDB на Raspberry Pi - название говорит само за себя. Следует отметить, что MariaDB - это прямая замена MySQL.

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

  • Разработайте приложение. Кульминация сериала. Это позволит воспользоваться всеми подготовительными шагами, описанными выше, но также представит полную картину того, как такое приложение может быть установлено, обновлено и управляться. Это приложение можно развернуть в кластере Raspberry Pi, который мы будем строить в этой серии, но его можно развернуть в любом кластере Kubernetes. В настоящее время доступно на GitHub.

Еще немного подробностей

Хотя основное внимание в этой серии уделяется Kubernetes на кластере Raspberry Pi, многое из того, что связано с приложением, можно применить к любой среде Kubernetes. Например:

  • Мониторинг кластера с помощью Телеграфа.
  • Визуализация метрик с помощью Grafana.
  • Кластер Ingress с использованием Traefik.
  • Развертывание и обновление приложений с помощью Helm.
  • Инструментирование приложений с помощью Прометей.
  • Поддержка базы данных приложения с использованием MySQL.
  • Регистрация, поиск и визуализация журналов с использованием стека ELK (фактически EFK).
  • Лучшие практики разработки приложений.

В заключение

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

Надеюсь, ты останешься со мной в этом путешествии. Комментарии, предложения и вопросы приветствуются. Мы все можем учиться вместе.