-
- はじめに
-
- 簡易Webアプリケーションの作成
-
- docker-composeからの移行
-
- skaffoldの紹介
-
- skaffoldを利用した開発
-
- 片付け
-
- まとめ
Tutorial Part.1 を終えている前提にします。
もし終了した場合は、 1. GKE クラスターの作成
を再度お願いします。
cloudshell launch-tutorial -d tutorial.md
このPart. 1でが終わればと途中でチュートリアルをやめ、このチュートリアルに戻ってきてください。
cloudshell launch-tutorial -d tutorial2.md
Part 1のapp1とほぼ同じアプリケーションを用意しました。 app3ディレクトリにあります。
cd ./app3
docker-compose.yamlの [PROJECT_ID]
をご自身のプロジェクトIDに変更してください
docker-compose up
Cloud Shellのポートフォワーディング機能で 8089
番ポートに変更してみます。
フォアグラウンドで動かしているので Ctrl + c
で終了できます。
docker-compose down
kubernetes/kompose を使用することで、 docker-compose.yaml
から Kubernetes用のマニフェストを生成することができます。
また、今回使用する skaffold についてもインストールを行います。
バイナリをダウンロードしてパスが通っている場所に移動します。
curl -L https://github.com/kubernetes/kompose/releases/download/v1.17.0/kompose-linux-amd64 -o kompose && chmod +x kompose && sudo mv ./kompose /usr/local/bin/kompose
同様に、バイナリをダウンロードしてパスが通っている場所に移動します。
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/v0.21.1/skaffold-linux-amd64 && chmod +x skaffold && sudo mv skaffold /usr/local/bin
skaffold init --compose-file docker-compose.yaml
app-deployment.yaml
と app-service.yaml
というファイルが作られていて、それぞれ、
extensions/v1beta1.Deployment
v1.Service
のマニフェストが作成されています。
また、 skaffold.yaml
というファイルも生成されていますが、これについては後ほど説明します。
kubectl config current-context
もし取得できていない場合は、、、
gcloud container clusters get-credentials my-hands-on-cluster --zone asia-east1-b
念の為確認します
kubectl config current-context
前項 2.3 にて生成された skaffold.yaml
がskaffoldの設定ファイルです。
run を実行することで、イメージのビルド・デプロイを行います。
skaffold run
今回はローカルではなく、GKE上で動いているため kubectl
コマンドを使用して先程作成したサービスにポートフォワードします。
kubectl port-forward svc/app 8089:8089
そして、docker-composeの際と同様にCloud Shellのポートフォワード機能で確認します。 確認が終わったら Ctrl+cで止めます。
今度は dev を試してみましょう
skaffold dev
4.4項と同じ方法で確認を行います。
Watching for changes every 1s...
とコンソールに出ている通り、
devではソースコードの変更を検知して自動ででビルドとデプロイを行ってくれます。
Ctrl+cで終了できますが、devで作成したものをまとめて削除してくれます。
最後にGKEのクラスターを削除します。
gcloud container clusters delete my-hands-on-cluster --zone=asia-east1-b --async
環境起因のトラブルを避けるためすべてGCP上でハンズオンを行いましたが、 最近のDocker CEのKubernetesやminikubeを使うことでローカルでもskaffoldを使用することができます。 また、普段はminikubeを使って開発しつつ、他の人に確認してほしいときにGKEのクラスターに上げるということも可能です。