Как перенести рабочий процесс Docker Compose в Kubernetes

Вступление

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

  • Извлечение необходимой информации о конфигурации из вашего кода.

  • Разгрузка состояния вашего приложения.

  • Упаковка вашей заявки для многократного использования.

У вас также будут письменные определения сервисов, которые определяют, как должны работать изображения вашего контейнера.

Чтобы запустить ваши сервисы на распределенной платформе, такой как Kubernetes, вам нужно будет перевести определения ваших сервисов Compose в объекты Kubernetes. Это позволит вам scale вашего приложения с упругостью. Одним из инструментов, который может ускорить процесс перевода в Kubernetes, является kompose, инструмент преобразования, который помогает разработчикам перемещать рабочие процессы Compose в оркестровщики контейнеров, такие как Kubernetes или https://www.openshift.com/ [ OpenShift].

В этом руководстве вы будете переводить службы Compose в Kubernetes objects с помощью kompose. Вы будете использовать определения объектов, которые предоставляет kompose, в качестве отправной точки и внести коррективы, чтобы гарантировать, что ваша установка будет использовать Secrets, https://kubernetes.io / docs / concepts / services-network / service / [Services] и PersistentVolumeClaims так, как этого ожидает Кубернетес. К концу учебника у вас будет приложение для одного экземпляра Node.js с базой данных MongoDB, работающее в кластере Kubernetes. Эта настройка будет отражать функциональность кода, описанного в Containerizing для Node.js. Приложение с Docker Compose и станет хорошей отправной точкой для создания готового к использованию решения, которое будет соответствовать вашим потребностям.

Предпосылки

  • Кластер Kubernetes 1.10+ с включенным управлением доступом на основе ролей (RBAC). Эта установка будет использовать DigitalOcean Kubernetes cluster, но вы можете свободно заходить на https://www.digitalocean.com/community/tutorials/how-to-create- a-kubernetes-1-11-cluster-using-kubeadm-on-ubuntu-18-04 [создать кластер, используя другой метод].

  • Инструмент командной строки + kubectl + установлен на вашем локальном компьютере или на сервере разработки и настроен для подключения к вашему кластеру. Вы можете прочитать больше об установке + kubectl + в official документация.

  • Docker установленный на вашем локальном компьютере или сервере разработки. Если вы работаете с Ubuntu 18.04, выполните шаги 1 и 2 How To Установите и используйте Docker в Ubuntu 18.04; в противном случае, следуйте official документациям для получения информации об установке в других операционных системах. Обязательно добавьте своего пользователя без полномочий root в группу + docker +, как описано в шаге 2 связанного руководства.

  • Https://hub.docker.com/[Docker Hub] аккаунт. Чтобы узнать, как это настроить, обратитесь к this вводная информация в Docker Hub.

Шаг 1 - Установка компоса

Чтобы начать использовать kompose, перейдите на страницу GitHub * Releases * на project и скопируйте ссылку на текущий выпуск (версия на момент написания статьи). Вставьте эту ссылку в следующую команду + curl +, чтобы загрузить последнюю версию kompose:

curl -L https://github.com/kubernetes/kompose/releases/download/v/kompose-linux-amd64 -o kompose

Подробнее об установке в системах, отличных от Linux, см. В инструкциях installlation.

Сделайте двоичный исполняемый файл:

chmod +x kompose

Переместите его в + PATH:

sudo mv ./kompose /usr/local/bin/kompose

Чтобы убедиться, что он был установлен правильно, вы можете проверить версию:

kompose version

Если установка прошла успешно, вы увидите вывод, подобный следующему:

Output

С + kompose +, установленным и готовым к использованию, теперь вы можете клонировать код проекта Node.js, который вы будете переводить в Kubernetes.

Шаг 2 - Клонирование и упаковка приложения

Чтобы использовать наше приложение с Kubernetes, нам нужно будет клонировать код проекта и упаковать приложение, чтобы служба + kubelet + могла получить изображение.

Нашим первым шагом будет клонирование node-mongo-docker-dev репозитория из https://github.com/do -community [аккаунт GitHub сообщества DigitalOcean]. Этот репозиторий содержит код из установки, описанной в Containerizing приложения Node.js. для разработки с Docker Compose, которая использует демонстрационное приложение Node.js, чтобы продемонстрировать, как настроить среду разработки с помощью Docker Compose. Вы можете найти больше информации о самом приложении в серии From Контейнеры в Куберне с Node.js.

Клонируйте репозиторий в каталог с именем ++:

git clone https://github.com/do-community/node-mongo-docker-dev.git

Перейдите в каталог ++:

cd

Каталог ++ содержит файлы и каталоги для приложения с информацией об акулах, которое работает с пользовательским вводом. Он был модернизирован для работы с контейнерами: конфиденциальная и конкретная информация о конфигурации была удалена из кода приложения и реорганизована для внедрения во время выполнения, а состояние приложения было выгружено в базу данных MongoDB.

Для получения дополнительной информации о разработке современных приложений без сохранения состояния см. Https://www.digitalocean.com/community/tutorials/architecting-applications-for-kubernetes[Architecting Applications for Kubernetes] и https://www.digitalocean.com/ сообщество / учебные пособия / модернизация приложений для Kubernetes.

Каталог проекта включает в себя + Dockerfile + с инструкциями по созданию образа приложения. Давайте создадим образ сейчас, чтобы вы могли перенести его в свою учетную запись Docker Hub и использовать в настройках Kubernetes.

Используя команду +docker build + `, создайте изображение с флагом

Related