Guestbook アプリケーションを TKG クラスタにデプロイし、Kubernetes の詳細を把握します。
Guestbook アプリケーションをデプロイすることは、Kubernetes の詳細を把握するために役立つ手段です。アプリケーションは、Deployment オブジェクトと ReplicaSet オブジェクトを使用してデフォルトの名前空間にポッドをデプロイし、サービスを使用してこれらのポッドを公開します。Guestbook データは静的であるため、アプリケーションが停止してもデータは残ります。このチュートリアルでは、動的なパーシステント ボリューム要求 (PVC) を使用して、パーシステント ストレージ リソースを要求します。その際、基盤となるストレージの詳細を把握する必要はありません。PVC に使用されるストレージは、vSphere 名前空間 用のストレージ割り当てから割り当てられます。コンテナはデフォルトで短期、かつステートレスです。ステートフル ワークロードの場合、一般的な方法は、パーシステント ボリューム要求 (PVC) を作成することです。PVC を使用してパーシステント ボリュームをマウントし、ストレージにアクセスできます。この要求により、パーシステント ボリューム オブジェクトとそれに対応する仮想ディスクが動的にプロビジョニングされます。要求はパーシステント ボリュームにバインドされています。この要求を削除すると、対応するパーシステント ボリューム オブジェクトおよびプロビジョニングされた仮想ディスクも削除されます。
手順
- TKG クラスタにログインします。
- Guestbook 名前空間を作成します。
kubectl create namespace guestbook
- デフォルトの特権 PSP を使用して、ロールベースのアクセス制御を作成します。
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
注: セキュリティを強化する必要がある場合は、Guestbook 名前空間に RoleBinding を適用します。
- ストレージ クラスを検証するか、作成します。
既存のストレージ クラスを検証するには、次の手順を実行します。
kubectl describe namespace
または、vSphere 管理者権限がある場合は、次の手順を実行します。
kubectl get storageclass
- ストレージ クラスを参照する動的パーシステント ボリューム要求 (PVC) の YAML ファイルを作成します。
次の YAML ファイルを使用します。各ファイルをストレージ クラスの名前で更新します。
- クラスタに Guestbook PVC を適用します。
kubectl apply -f redis-leader-pvc.yaml -n guestbook
kubectl apply -f redis-follower-pvc.yaml -n guestbook
- PVC のステータスを確認します。
kubectl get pvc,pv -n guestbook
PVC とパーシステント ボリューム (PV) が一覧表示され、使用できるようになります。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/redis-follower-pvc Bound pvc-37b72f35-3de2-4f84-be7d-50d5dd968f62 2Gi RWO tkgs-storage-class 66s
persistentvolumeclaim/redis-leader-pvc Bound pvc-2ef51f31-dd4b-4fe2-bf4c-f0149cb4f3da 2Gi RWO tkgs-storage-class 66s
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS
persistentvolume/pvc-2ef51f31-dd4b-4fe2-bf4c 2Gi RWO Delete Bound guestbook/redis-leader-pvc tkgs-storage-class
persistentvolume/pvc-37b72f35-3de2-4f84-be7d 2Gi RWO Delete Bound guestbook/redis-follower-pvc tkgs-storage-class
- Guestbook YAML ファイルを作成します。
- 名前空間に Guestbook アプリケーションをデプロイします。
kubectl apply -f . --namespace guestbook
- Guestbook リソースの作成を確認します。
kubectl get all -n guestbook
NAME READY STATUS RESTARTS AGE
pod/guestbook-frontend-deployment-56fc5b6b47-cd58r 1/1 Running 0 65s
pod/guestbook-frontend-deployment-56fc5b6b47-fh6dp 1/1 Running 0 65s
pod/guestbook-frontend-deployment-56fc5b6b47-hgd2b 1/1 Running 0 65s
pod/redis-follower-deployment-6fc9cf5759-99fgw 1/1 Running 0 65s
pod/redis-follower-deployment-6fc9cf5759-rhxf7 1/1 Running 0 65s
pod/redis-leader-deployment-7d89bbdbcf-flt4q 1/1 Running 0 65s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/guestbook-frontend LoadBalancer 10.10.89.59 10.19.15.99 80:31513/TCP 65s
service/redis-follower ClusterIP 10.111.163.189 <none> 6379/TCP 65s
service/redis-leader ClusterIP 10.111.70.189 <none> 6379/TCP 65s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/guestbook-frontend-deployment 3/3 3 3 65s
deployment.apps/redis-follower-deployment 1/2 2 1 65s
deployment.apps/redis-leader-deployment 1/1 1 1 65s
NAME DESIRED CURRENT READY AGE
replicaset.apps/guestbook-frontend-deployment-56fc5b6b47 3 3 3 65s
replicaset.apps/redis-follower-deployment-6fc9cf5759 2 2 1 65s
replicaset.apps/redis-leader-deployment-7d89bbdbcf 1 1 1 65s
-
service/guestbook-frontend
ロード バランサの External-IP
アドレス(この例では 10.19.15.99
)を使用して Guestbook Web ページにアクセスします。
Guestbook Web インターフェイスが表示され、Guestbook データベースに値を入力できます。アプリケーションを再起動すると、データは保持されます。