こんにちは。よっしーです(^^)
今日は、Komposeについてご紹介します。Komposeは、Docker ComposeファイルをKubernetesマニフェストに変換するツールです。
背景
Komposeとは
komposeは、Docker ComposeファイルをKubernetesマニフェストに変換するためのツールです。Docker Composeは、複数のDockerコンテナを定義し、それらを簡単に起動・管理するための仕組みです。しかし、KubernetesはDocker Composeとは異なるマニフェスト形式を使用しています。komposeはこのギャップを埋めるために作られ、Docker Composeファイルを解析して、KubernetesのDeploymentやServiceなどのマニフェストファイルを生成します。これにより、既存のDocker ComposeプロジェクトをKubernetes上で簡単に展開・実行することができます。komposeは、Docker ComposeからKubernetesへの移行をスムーズにするための便利なツールです。
Komposeのインストール
下記の手順でKomposeをインストールしました。
asdf plugin list all | grep kompose
asdf plugin add kompose
asdf list-all kompose
asdf install kompose 1.28.0
asdf list kompose
asdf local kompose 1.28.0
asdfコマンドに関しては、下記の記事を御覧ください。
docker composeの環境準備
下記の構造になるようにファイルを用意します。
kompose_sample
├── compose.yml
├── nginx
│ ├── Dockerfile
│ └── default.conf
└── php-fpm
├── Dockerfile
├── info.php
└── www.conf
compose.yml
version: '3'
services:
nginx:
build: ./nginx
container_name: nginx
image: kompose_sample/nginx:0.0.1
labels:
kompose.service.type: LoadBalancer
volumes:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- 8080:80
depends_on:
- php-fpm
networks:
- net
php-fpm:
build: ./php-fpm
container_name: php-fpm
image: kompose_sample/php-fpm:0.0.1
volumes:
- ./php-fpm/info.php:/var/www/html/info.php
ports:
- 9000:9000
networks:
- net
networks:
net:
nginx/default.conf
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
#fastcgi_keep_conn on;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
nginx/Dockerfile
FROM nginx:1.24-alpine
php-fpm/Dockerfile
FROM php:7.4-fpm
WORKDIR /var/www
CMD php-fpm
RUN chown www-data:www-data /var/www/
php-fpm/info.php
<?php
phpinfo();
?>
動作確認
下記のコマンドを実施します。
docker compose build
docker compose up -d
ブラウザで「http://localhost:8080/info.php」にアクセスします。下図のような結果になれば成功です。
上記の確認後、下記のコマンドを実施して、コンテナの起動を停止します。
Kubernetesに移行
下記の構成になるようにディレクトリを追加します。赤字の部分がこの章で追加するディレクトリになります。
├── k8s
└── kompose_sample
├── compose.yml
├── nginx
│ ├── Dockerfile
│ └── default.conf
└── php-fpm
├── Dockerfile
├── info.php
└── www.conf
下記のコマンドを実行します。
mkdir k8s
cd k8s
asdf local kompose 1.28.0
kompose convert -f ../kompose_sample/compose.yml --volumes=hostPath
kubectl apply -f .
ブラウザで「http://localhost:8080/info.php」にアクセスします。下図のような結果になれば成功です。
おわりに
今日は、Komposeで docker compose をベースに Kubernetesに移行する方法についてご紹介しました。次回は、Komposeで作成されたファイルを解説していきたいと思います。
何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント