1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

komposeを用いて、簡単にwebサービスをKubernetesに移行する

Last updated at Posted at 2023-01-30

概要

既にdocker-compose.yamlが用意されているようなプロジェクトであれば、komposeというツールを用いることで割と簡単にkubernetesにサービスを移行することができます。業務でAWSからGCPのGKEへの移行を最近頻繁に経験したので、簡単に手順をここにメモしておきます。

初めに

以下のものをインストール

komposeを用いた移行

サンプルアプリ

リンクはこちら
以下のコマンドで動くことを確認します

  • cd sample-web
  • docker-compose up
  • GET http://localhost/itemでレスポンスが見れる

kubernetes用の設定ファイル作成

sample-webディレクトリで、以下のコマンドを叩き、docker-compose.yamlをkubernetes用の設定ファイルに変換します。

kompose convert

sample-api-deployment.yamlsample-api-service.yamlというファイルができると思います。前者が、podの状態を宣言的に記述するための設定ファイルで、後者がネットワークサービスとして動くkubernetes内のアプリケーションの設定ファイルです。

もし本サンプルのように外部からのアクセスを受け付けるapiのようなものでなく、単独で動くジョブのようなものであれば、komposeは前者のみを作り後者は作られないはずです。

ローカルのminikubeへのデプロイ

まずは最初に、minikubeを起動します。

minikube start

そして、minikube上へdockerアプリをデプロイできるよう設定をします。(いろいろなやり方があるのですが、これはそのうちの一つです。興味ある方はこちらを見てください

eval $(minikube docker-env)

dockerイメージのビルドをします。dockerコマンドでなくminikubeコマンドでビルドすることで、minikubeでも見れる場所にビルドされます。

minikube image build -f Dockerfile

上でkomposeで作成した設定ファイルから、minikube上へデプロイをします。minikubeをローカルで起動していれば、kubectlコマンドは自動でminikubeを見ます。

kubectl apply -f ./sample-api-deployment.yaml -f ./sample-api-service.yaml

デプロイがちゃんとできていれば、以下のコマンドで動作確認ができます。

minikube service sample-api

開いたページの/itemにアクセスすれば、正常なレスポンスが出たはずです。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?