Kubernetes入門:Komposeを使用したDocker Composeからの移行

スポンサーリンク
Kubernetes入門:Komposeを使用したDocker Composeからの移行 初期設定
Kubernetes入門:Komposeを使用したDocker Composeからの移行
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、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で作成されたファイルを解説していきたいと思います。

よっしー
よっしー

何か質問や相談があれば、遠慮なくコメントしてください。また、エンジニア案件についても、いつでも相談にのっていますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました