방명록 애플리케이션을 TKG 클러스터에 배포하고 Kubernetes를 살펴봅니다.

방명록 애플리케이션을 배포하는 것은 Kubernetes를 살펴보기에 유용한 방법입니다. 애플리케이션은 배포 및 ReplicaSet 개체를 사용하여 기본 네임스페이스에 포드를 배포하고 서비스를 사용하여 이러한 포드를 노출합니다. 방명록 데이터는 지속되므로 애플리케이션이 다운되더라도 데이터는 그대로 유지됩니다. 이 자습서에서는 기본 스토리지의 세부 정보를 모르는 상태에서 동적 PVC(영구 볼륨 할당)를 사용하여 영구 스토리지 리소스를 요청합니다. PVC에 사용되는 스토리지는 vSphere 네임스페이스에 대한 스토리지 할당량 에서 할당됩니다. 컨테이너는 기본적으로 사용 후 삭제 및 상태 비저장입니다. 상태 저장 워크로드의 경우 일반적인 방식은 PVC(영구 볼륨 할당)를 생성하는 것입니다. PVC를 사용하여 영구 볼륨을 마운트하고 스토리지에 액세스할 수 있습니다. 이 요청은 영구 볼륨 개체와 일치하는 가상 디스크를 동적으로 프로비저닝합니다. 할당은 영구 볼륨에 바인딩됩니다. 할당을 삭제하면 해당하는 영구 볼륨 개체와 프로비저닝된 가상 디스크도 삭제됩니다.

사전 요구 사항

다음 항목을 검토하십시오.

프로시저

  1. TKG 클러스터에 로그인합니다.
  2. 방명록 네임스페이스를 생성합니다.
    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
    참고: 더 많은 보안이 필요한 경우 방명록 네임스페이스에 RoleBinding을 적용합니다.
  4. 스토리지 클래스를 확인하거나 새로 생성합니다.
    기존 스토리지 클래스를 확인하려면:
    kubectl describe namespace
    또는 vSphere 관리자 권한이 있는 경우:
    kubectl get storageclass
  5. 스토리지 클래스를 참조하는 동적 PVC(영구 볼륨 할당) YAML 파일을 생성합니다.
    다음 YAML 파일을 사용합니다. 각각을 스토리지 클래스의 이름으로 업데이트합니다.
  6. 방명록 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. 방명록 YAML 파일을 생성합니다.
  9. 네임스페이스에 방명록 애플리케이션을 배포합니다.
    kubectl apply -f . --namespace guestbook
  10. 방명록 리소스의 생성을 확인합니다.
    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)를 사용하여 방명록 웹 페이지에 액세스합니다.
    방명록 웹 인터페이스가 표시되고 방명록 데이터베이스에 값을 입력할 수 있습니다. 애플리케이션을 다시 시작하면 데이터가 유지됩니다.