はじめに
Docker for Macでのkubernetesの記事は多々あるのに、windowsは見当たらなかったので記載しておきます。
Windows版は、まだEdgeでの提供となっています。
stableバージョンでkubernetes使えます!
参考:https://blog.docker.com/2018/07/kubernetes-is-now-available-in-docker-desktop-stable-channel/
いつもは、そのままGKE環境で実行していましたが、今後勉強会等でもっと簡単に試せないかなーと、試しに動かしてみました。
インストール
インストール環境
- Windows 10 ( CPU:Core i7、メモリ:16GB)
- Hyper-V 有効化済み
ダウンロード
下記ページの download.docker.com
のリンクをクリックしてダウンロードします。
https://docs.docker.com/docker-for-windows/install
If you haven’t already downloaded the installer (Docker for Windows Installer.exe), you can get it from download.docker.com. It typically downloads to your Downloads folder, or you can run it from the recent downloads bar at the bottom of your web browser.
インストーラーの実行
windowsコンテナは使う予定は、無いので、下のチェックボックスはオフのまま進みます。
「Docker for Windows」をクリックすると起動します。
kubernetesの実行
kubernetesの有効化
常駐しているdockerアイコンを→クリックして、「Settings」をクリックします。
「Enable Kubernetes」にチェックを入れて、Swarmではなく、kubernetesを選択します。そして「Apply」をクリックします。
「数分時間かかるよ!インターネットに接続できている環境で実行してね!」と出ますが、問題ないので「Install」をクリックします。
2,3分で下記画面が表示されて、インストール完了となります。
Docker for Windowのkubernetesを使う準備
下記説明があります。
https://docs.docker.com/docker-for-windows/#kubernetes
The Kubernetes client command, kubectl, is included and configured to connect to the local Kubernetes server. If you have kubectl already installed and pointing to some other environment, such as minikube or a GKE cluster, be sure to change context so that kubectl is pointing to docker-for-desktop:
kubectl config get-contexts kubectl config use-context docker-for-desktop
私の環境だと、GKEクラスタに接続するための設定が有効となっていますので、上記コマンドを実行してdocker for windowsのcontextに切り替えます。
アプリケーション実行
アプリケーションのビルド
どうせなら、自分で作ったアプリケーショを動かしたいので、適当なサンプルアプリケーション使います。
> git clone -b openjdk11 https://github.com/h-r-k-matsumoto/spring-boot-sample.git
> cd spring-boot-sample
> mvn -Dgcp.project.name=sample-project compile jib:dockerBuild
※registryにpushはしないので、 jib:dockerBuild
とします。
正常に終了すれば、 docker images
でビルド結果を確認できます。
>docker images |findstr spring-boot
gcr.io/sample-project/spring-boot-sample 0.1.0-SNAPSHOT 4cc738f189da 46 seconds ago 997MB
>
アプリケーションのデプロイ
kubernetes/020_deployments.yml
のimages部分を下記のように変更します。
変更前:image: gcr.io/{change-me-gcp-project}/spring-boot-sample:0.1.0-SNAPSHOT
変更後:image: gcr.io/sample-project/spring-boot-sample:0.1.0-SNAPSHOT
docker imageもローカルのimage使うので、reigstryから不要に取得しないようにします。
変更前:imagePullPolicy: Always
変更後:imagePullPolicy: IfNotPresent
applyします。
> kubectl apply -f kubernetes
configmap "spring-boot-config" created
deployment.apps "spring-boot-sample" created
service "spring-boot-sample" created
>
アプリケーション動作確認
NodePortでのアクセス。
下記URLにアクセスすることで正常に動作しているのを確認しました。
http://localhost:30000/sample/hello
おまけ
Ingressも動かしてみる
ingressもできるのかな?1つしかサービス作ってないですけど試しにやってみます。
を見る限りできそうですね。
Ingress Controllerの作成
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/cloud-generic.yaml
Ingress作成
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: samplelb
spec:
backend:
serviceName: spring-boot-sample
servicePort: 30000
rules:
- http:
paths:
- path: /*
backend:
serviceName: spring-boot-sample
servicePort: 30000
applyします。
> kubectl apply -f kubernetes\040_ingress.yaml
ingress.extensions "samplelb" created
>
動作確認
> kubectl get ingress
NAME HOSTS ADDRESS PORTS AGE
samplelb * localhost 80 18m
>
http://localhost:30000/sample/hello
下記URLで問題なく動作しました。
kubernetesも一通り動かす事ができそうです。ロール周りは、あんまり細かい事はできなさそうですが、動かす分には十分かもしれません。
変更履歴
2018/08/12 21:22
Docker for Windows stableバージョンでkubernetes利用可能となっていました!
全体的に記事もstableバージョンでのインストール方法等に変更しています。問題なく、アプリケーション起動、ingressの動作確認まで行えました。
rubytomato@github さん情報ありがとうございます