Guestbook アプリケーションを TKG クラスタにデプロイし、Kubernetes の詳細を把握します。

Guestbook アプリケーションをデプロイすることは、Kubernetes の詳細を把握するために役立つ手段です。アプリケーションは、Deployment オブジェクトと ReplicaSet オブジェクトを使用してデフォルトの名前空間にポッドをデプロイし、サービスを使用してこれらのポッドを公開します。Guestbook データは静的であるため、アプリケーションが停止してもデータは残ります。このチュートリアルでは、動的なパーシステント ボリューム要求 (PVC) を使用して、パーシステント ストレージ リソースを要求します。その際、基盤となるストレージの詳細を把握する必要はありません。PVC に使用されるストレージは、vSphere 名前空間 用のストレージ割り当てから割り当てられます。コンテナはデフォルトで短期、かつステートレスです。ステートフル ワークロードの場合、一般的な方法は、パーシステント ボリューム要求 (PVC) を作成することです。PVC を使用してパーシステント ボリュームをマウントし、ストレージにアクセスできます。この要求により、パーシステント ボリューム オブジェクトとそれに対応する仮想ディスクが動的にプロビジョニングされます。要求はパーシステント ボリュームにバインドされています。この要求を削除すると、対応するパーシステント ボリューム オブジェクトおよびプロビジョニングされた仮想ディスクも削除されます。

前提条件

次のトピックを参照してください。

手順

  1. TKG クラスタにログインします。
  2. Guestbook 名前空間を作成します。
    kubectl create namespace guestbook
    以下を確認します。
    kubectl get ns
  3. デフォルトの特権 PSP を使用して、ロールベースのアクセス制御を作成します。
    kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
    注: セキュリティを強化する必要がある場合は、Guestbook 名前空間に RoleBinding を適用します。
  4. ストレージ クラスを検証するか、作成します。
    既存のストレージ クラスを検証するには、次の手順を実行します。
    kubectl describe namespace
    または、vSphere 管理者権限がある場合は、次の手順を実行します。
    kubectl get storageclass
  5. ストレージ クラスを参照する動的パーシステント ボリューム要求 (PVC) の YAML ファイルを作成します。
    次の YAML ファイルを使用します。各ファイルをストレージ クラスの名前で更新します。
  6. クラスタに Guestbook PVC を適用します。
    kubectl apply -f redis-leader-pvc.yaml -n guestbook
    kubectl apply -f redis-follower-pvc.yaml -n guestbook
  7. 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
  8. Guestbook YAML ファイルを作成します。
  9. 名前空間に Guestbook アプリケーションをデプロイします。
    kubectl apply -f . --namespace guestbook
  10. 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
  11. service/guestbook-frontend ロード バランサの External-IP アドレス(この例では 10.19.15.99)を使用して Guestbook Web ページにアクセスします。
    Guestbook Web インターフェイスが表示され、Guestbook データベースに値を入力できます。アプリケーションを再起動すると、データは保持されます。