방명록 애플리케이션을 TKG 클러스터에 배포하고 Kubernetes를 살펴봅니다.
방명록 애플리케이션을 배포하는 것은 Kubernetes를 살펴보기에 유용한 방법입니다. 애플리케이션은 배포 및 ReplicaSet 개체를 사용하여 기본 네임스페이스에 포드를 배포하고 서비스를 사용하여 이러한 포드를 노출합니다. 방명록 데이터는 지속되므로 애플리케이션이 다운되더라도 데이터는 그대로 유지됩니다. 이 자습서에서는 기본 스토리지의 세부 정보를 모르는 상태에서 동적 PVC(영구 볼륨 할당)를 사용하여 영구 스토리지 리소스를 요청합니다. PVC에 사용되는 스토리지는 vSphere 네임스페이스에 대한 스토리지 할당량 에서 할당됩니다. 컨테이너는 기본적으로 사용 후 삭제 및 상태 비저장입니다. 상태 저장 워크로드의 경우 일반적인 방식은 PVC(영구 볼륨 할당)를 생성하는 것입니다. PVC를 사용하여 영구 볼륨을 마운트하고 스토리지에 액세스할 수 있습니다. 이 요청은 영구 볼륨 개체와 일치하는 가상 디스크를 동적으로 프로비저닝합니다. 할당은 영구 볼륨에 바인딩됩니다. 할당을 삭제하면 해당하는 영구 볼륨 개체와 프로비저닝된 가상 디스크도 삭제됩니다.
프로시저
- TKG 클러스터에 로그인합니다.
- 방명록 네임스페이스를 생성합니다.
kubectl create namespace guestbook
- 기본 권한이 있는 PSP를 사용하여 역할 기반 액세스 제어를 생성합니다.
kubectl create clusterrolebinding default-tkg-admin-privileged-binding --clusterrole=psp:vmware-system-privileged --group=system:authenticated
참고: 더 많은 보안이 필요한 경우 방명록 네임스페이스에 RoleBinding을 적용합니다.
- 스토리지 클래스를 확인하거나 새로 생성합니다.
기존 스토리지 클래스를 확인하려면:
kubectl describe namespace
또는 vSphere 관리자 권한이 있는 경우:
kubectl get storageclass
- 스토리지 클래스를 참조하는 동적 PVC(영구 볼륨 할당) YAML 파일을 생성합니다.
다음 YAML 파일을 사용합니다. 각각을 스토리지 클래스의 이름으로 업데이트합니다.
- 방명록 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
- 방명록 YAML 파일을 생성합니다.
- 네임스페이스에 방명록 애플리케이션을 배포합니다.
kubectl apply -f . --namespace 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
)를 사용하여 방명록 웹 페이지에 액세스합니다.
방명록 웹 인터페이스가 표시되고 방명록 데이터베이스에 값을 입력할 수 있습니다. 애플리케이션을 다시 시작하면 데이터가 유지됩니다.