Особенности Kompose
Вы можете:
- Упростить процесс разработки с помощью Docker Compose, а затем развернуть свои контейнеры в производственном кластере.
- Конвертировать ваш docker-compose.yaml с помощью одной простой команды kompose convert
- Поднять свой кластер с помощью kompose up
- Затушить развертывания с помощью
kompose down
Что нужно, прежде чем мы начнем
Прежде чем мы продолжим работу с руководством, мы предполагаем, что у вас есть кластер Kubernetes и инструмент командной строки kubectl, уже настроенный для взаимодействия с вашим кластером.
Если эти требования не выполняются, вы можете настроить простой кластер Kubernetes с одним узлом, используя minikube, следуя приведенному ниже руководству.
Если вы готовы продолжить, продолжим с установкой kompose.
☸️ Локальные Kubernetes для Linux — MiniKube или MicroK8s
Шаг 1: Установка Kompose на Linux, macOS
Загрузите последний бинарник Kompose.
Вы можете проверить старницу Github на версии выпуска.
--- Linux ---
curl -s https://api.github.com/repos/kubernetes/kompose/releases/latest | grep browser_download_url | grep linux-amd64 | cut -d '"' -f 4 | wget -qi -
mv kompose-linux-amd64 kompose
--- macOS ---
curl -s https://api.github.com/repos/kubernetes/kompose/releases/latest | grep browser_download_url | grep darwin-amd64 | cut -d '"' -f 4 | wget -qi -
mv kompose-darwin-amd64 kompose
chmod +x kompose
sudo mv ./kompose /usr/local/bin/kompose
Проверьте версию после установки:
Шаг 2. Создайте образец образа Dockerfile
Мы собираемся создать обратный прокси Nginx, который передает запросы к контейнеру apache
Создайте файл с именем Dockerfile и добавьте содержимое, показанное ниже:
cat > Dockerfile<<EOF
# Sample Dockerfile for Kompose
FROM nginx:alpine
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 8081
EOF
cat >nginx.conf<<EOF
upstream apache-container {
server 0.0.0.0:80;
}
server {
listen 8081;
location / {
proxy_pass http://apache-container;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
EOF
Шаг 3: Соберем образ контейнера
Откройте терминал в вашем проекте и введите следующую команду, чтобы собрать наш образ с помощью podman
$ podman build -t reverseproxy:v1 .
STEP 1: FROM nginx:alpine
Getting image source signatures
Copying blob cbdbe7a5bc2a done
Copying blob c554c602ff32 done
Copying config 89ec9da682 done
Writing manifest to image destination
Storing signatures
STEP 2: COPY nginx.conf /etc/nginx/conf.d/default.conf
--> d86b4e89749
STEP 3: EXPOSE 8081
STEP 4: COMMIT reverseproxy:v1
--> b00d80e0056
b00d80e00560c205e0580d4b751b1a67da7e77e7fc73803b006ff10389bb4732
-- With Docker ---
$ docker build -t reverseproxy:v1 .
После того, как образ был собран, мы сможем увидеть его следующим образом
$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/reverseproxy v1 b00d80e00560 19 seconds ago 21.2 MB
Шаг 3: Переместим образ контейнера в реестр образов
Вы можете отправить образ в любой из общедоступных реестров или даже в тот, который вы создали / частный.
В этом примере используется реестр образов Docker Hub.
$ podman tag <local-image> docker.io/<username>/reverseproxy:v1
Пример:
$ podman tag localhost/reverseproxy:v1 docker.io/penchant/reverseproxy:v1
$ podman login docker.io
Username: <username>
Password: <password>
Login Succeeded!
$ podman push docker.io/penchant/reverseproxy:v1
Getting image source signatures
Copying blob 113ce2720837 done
Copying blob 3810cc0c140f done
Copying blob 3e207b409db3 done
Copying config b00d80e005 done
Writing manifest to image destination
Storing signatures
Шаг 4: Создадим docker-compose.yaml
Это файл, который Docker Compose будет использовать для создания сервисов и запуска мультиконтейнерной среды для нашего примера проекта.
Обратите внимание, что образ, который мы используем, это тот, что мы только что создали и отправили в DockerHub.
$ vim docker-compose.yaml
version: "3"
services:
reverseproxy:
image: docker.io/penchant/reverseproxy:v1
ports:
- 8081:8081
restart: always
apache:
depends_on:
- reverseproxy
image: httpd:alpine
restart: always
$ kompose convert
INFO Kubernetes file "reverseproxy-service.yaml" created
INFO Kubernetes file "apache-deployment.yaml" created
INFO Kubernetes file "reverseproxy-deployment.yaml" created
Один – сервис, другой – развертывание.
Мы можем приступить к применению этих файлов, используя kubectl, как показано ниже
$ kubectl apply -f reverseproxy-service.yaml,apache-deployment.yaml,reverseproxy-deployment.yaml
service/reverseproxy created
deployment.apps/apache created
deployment.apps/reverseproxy created
Проверим сервис, поды и развертывания
$ kubectl get deployment,svc,pods
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/apache 1/1 1 1 113m
deployment.apps/reverseproxy 1/1 1 1 105m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 122m
service/reverseproxy ClusterIP 10.97.210.141 <none> 8081/TCP 113m
NAME READY STATUS RESTARTS AGE
pod/apache-7945cd6844-5hpf8 1/1 Running 0 113m
pod/reverseproxy-8646fb7c4f-j6742 1/1 Running 0 105m
Вы можете изменить детали в файлах yaml, полученных после того, как kompose воздействует на файлы Docker-Compose в соответствии с вашими конкретными потребностями. Хорошо, что kompose делает большую часть тяжелой работы, и вы можете просто добавить то, что вам нужно.
Заключение
Kompose – это замечательный инструмент.
Испытайте это в своих проектах, чтобы увидеть всю мощь, которой вы можете воспользоваться.
1 comment
Что за бредовый перевод (((