Docker Compose в кластер Kubernetes: как преобразовать

Часто в процессе разработки используется Docker Compose, который предназначен для управления многоконтейнерными приложениями в одном узле.

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

1. Подготовка Docker Compose файла

Допустим, у вас уже есть файл docker-compose.yml для вашего приложения. Пример простого Docker Compose файла:

version: '3'
services:
  app:
    image: myapp:latest
    ports:
      - "8080:80"
    environment:
      - APP_ENV=production
  db:
    image: postgres:alpine
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password

2. Использование Kompose для преобразования

Для упрощения процесса преобразования конфигурации Docker Compose в Kubernetes, можно использовать инструмент Kompose.

Он автоматически конвертирует ваш docker-compose.yml файл в манифесты Kubernetes.

Как и любой быстроразвивающийся проект kompose лучше ставить напрямую от разработчиков:

sudo curl -L https://github.com/kubernetes/kompose/releases/download/v1.27.0/kompose-linux-amd64 -o /usr/local/bin/kompose
sudo chmod +x /usr/local/bin/kompose

После установки Kompose, выполните следующую команду для конвертации:

kompose convert -f docker-compose.yml

Kompose создаст несколько файлов YAML для Kubernetes, например:

• app-deployment.yaml — для деплоймента приложения.

• app-service.yaml — для создания Kubernetes-сервиса.

• db-deployment.yaml — для деплоймента базы данных.

• db-service.yaml — для сервиса базы данных.

3. Деплой на Kubernetes

Теперь, когда у вас есть манифесты Kubernetes, вы можете развернуть приложение в кластере.

Применение манифестов:

kubectl apply -f app-deployment.yaml
kubectl apply -f app-service.yaml
kubectl apply -f db-deployment.yaml
kubectl apply -f db-service.yaml

Если все прошло успешно, ваше приложение будет развернуто в Kubernetes.