概要
kompose は kubernetes 上で docker-compose.yml を実行するためのツールです
既存の docker-compose.yml を使って動作を確認してみました
環境
- macOS 10.13.2
- minikube 0.25.0
- kubectl 1.9.2
- VertualBox 5.1.30r118389
- kompose 1.10.0
インストール
- brew install kompose
その他のプラットフォームのインストール方法はこちら
ちょっとだけ変更する
git clone -b ver_golang_for_vch https://github.com/kakakikikeke/memo.git
- cd memo
- vim docker-compose.yml
version: '2'
services:
web:
image: kakakikikeke/memo:ver_golang_for_vch
ports:
- 80:8080
links:
- redis
environment:
- REDIS_URL=redis://redis:6379/0
labels:
kompose.service.type: LoadBalancer
redis:
image: redis:latest
kompose.service.type: LoadBalancer
の部分だけ追記してあげます
これをやらないとアプリが外部からアクセスすることができません
コンバートする
- kompose convert -f docker-compose.yml
INFO Kubernetes file "redis-service.yaml" created
INFO Kubernetes file "web-service.yaml" created
INFO Kubernetes file "redis-deployment.yaml" created
INFO Kubernetes file "web-deployment.yaml" created
こんな感じでファイルが分割されます
中身を見ると kubernetes 形式の YAML フォーマットに変換されています
起動する
- kompose up -f docker-compose.yml
で OK です
ログは以下の通り
INFO We are going to create Kubernetes Deployments, Services and PersistentVolumeClaims for your Dockerized application. If you need different kind of resources, use the 'kompose convert' and 'kubectl create -f' commands instead.
INFO Deploying application in "default" namespace
INFO Successfully created Service: redis
INFO Successfully created Service: web
INFO Successfully created Deployment: redis
INFO Successfully created Deployment: web
Your application has been deployed to Kubernetes. You can run 'kubectl get deployment,svc,pods,pvc' for details.
指示通り get コマンドで確認してみましょう
コンテナが Running 状態になれば OK です
kubectl get deployment,svc,pods,pvc
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/redis 1 1 1 1 2m
deploy/web 1 1 1 1 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7h
svc/redis ClusterIP None <none> 55555/TCP 2m
svc/web LoadBalancer 10.105.101.184 <pending> 80:30146/TCP 2m
NAME READY STATUS RESTARTS AGE
po/redis-69867bff9f-ztdcj 1/1 Running 0 2m
po/web-bdd7555b4-cfplp 1/1 Running 0 2m
動作確認
アプリにアクセスしてみましょう
- minikube service web
でブラウザが開いてアプリにアクセスできます
もしは今回の場合であれば
curl $(minikube ip):30146
でアクセスすることができます
ダウンさせる
- kompose down
で pods, deployments, services すべて削除してくれます
最後に
kubernetes 上で使える docker-compose 「kompose」を使ってみました
既存の docker-compose.yml をそのまま使えて便利です
コマンドもほぼ docker-compose と同様なので簡単に使えます
stop コマンドはないので kompose コマンド経由で停止する場合は down させるしかなさそうです
基本は up だけやらせてあとは kubectl で deployments と services を操作する感じかなと思います
あと LoadBlancer を追記した部分ですが公式を見ると up 後に services に対してロードバランサを追加してあげても良さそうです
kubectl expose deployment web --type="LoadBalancer"
0 件のコメント:
コメントを投稿