Kubernetes(k8s)を学ぼう! Microservices編~Volumes~

こんにちは。KOUKIです。k8s学習中のWebエンジニアです。

KubernetesでMicroservicesについて学びましょう。

本記事では、Volumesについて記事にしました。

尚、今回もMinikubeを使いますので、以下の記事でインストール&起動してください。
※ MacおよびChromeで検証します。

参考

Udemyの「Kubernetes Hands-On – Deploy Microservices to the AWS Cloud」コースを参考にしています。

解釈は私が勝手に付けているので、本物をみたい場合は受講してみてください。

API OVERVIEWも参考になります。

前回

https://selfnote.work/20211109/programming/kubernetes-microservices-architecture/

現在の状況は、以下のようになってます。

シチュエーション

新しいバージョン(V1->V2)をリリースするとします。

applyします。

ブラウザから「http://192.168.99.103:30080/」にアクセスします。

Version 2(R2)になりましたね。

ダウンタイムなしで変更してくれます。

現在のダイアグラムは以下のようになっています。

Position Trackerで画面上に表示されるデータを取得していますが、現状だとDBに保存していないので、アプリを消すとデータも消えます。

そのため、DBを追加しましょう。

Mongo DB

下記のダイアグラムのように、Mongo DBを追加しましょう。

Deploymentの追加

まずは、ファイルを作成します。

このファイルに、MongoのDeploymentを配置します。

mongo:3.6.5-jessie」イメージは、Dobker Hubに公式されている公式のものです。

また、アプリケーションの仕様上、MongoDBを参照するのはバージョン3からなので、position-trackerのバージョンを2->3にします。

これらをapplyします。

ログを見たい場合は、以下のコマンドで確認できます。

Mongo Serviceの追加

続いて、先ほど作成した「mongo-stack.yml」にMongo Serviceを追加しましょう。

変更をapplyします。

OKですね。

VolumeのMount

続いて、VolumeのMount方法を学びましょう。

DockerコンテナのようにローカルのVolumeとマウントすることができます。

そのために、containersと同じ階層にvolumes(#1)を定義します。これはローカル(virutalbox)のVolumeを指定しています。

続いて、Pod内のマウント先をvolumeMounts(#2)に定義しています。

applyしましょう。

minikubeにログインします。

login: docker
Password: tcuser

/mnt/some/directory/structure」のフォルダが作成されているか確認しましょう。

mntフォルダ自体は「/」にあるので、一旦そこまで戻る必要があります。

上記の出力を見る限りでは、問題なく作成できたようですね。

ファイルも確認できます。

PersistentVolume

PersistentVolume設定しましょう。

KubernetesにはPersistentVolumeというシステムがあり、PersistentVolume及びPersistentVolumeClaimのAPIリソースを提供しています。

これは、ストレージが何から提供されているか、どのように消費されているかをユーザーと管理者から抽象化するものです。

applyします。

Clean Up

次回

次回は、検討中です。

記事まとめ

参考

コード

services.yml

workloads.yml

mongo-stack.yml

storage.yml

コメントを残す