-
[Udemy] Services Demo with Cluster IP and Load Balancer Services (Declarative)kubernetes/udemy 2025. 2. 14. 09:23
Service Demo
1. User가 http://<SVC-Public-IP>/hello로 접속
2. 해당 요청이 LoadBalancer로 전달 후, Front App(Pod)로 이동
3. Front App에 있는 Nginx 역방향 프록시 응용 프로그램의 프록시 규칙을 통해 Backend App(Pod)으로 요청 전달
4. 해당 요청을 Backend App의 Cluster IP로 전달
5. Backend App(Pod)으로 요청 완료 후 Hello World Service 출력
Backend Rest App 환경 구성 (Deployment / ClusterIP)
# backend-deployment.yaml 파일 작성
apiVersion: apps/v1 kind: Deployment metadata: name: backend-restapp labels: app: backend-restapp tier: backend spec: replicas: 3 selector: matchLabels: app: backend-restapp template: metadata: labels: app: backend-restapp tier: backend spec: containers: - name: backend-restapp image: stacksimplify/kube-helloworld:1.0.0 ports: - containerPort: 8080
# Deployment 생성
kubectl apply -f 01-backend-deployment.yml
# backend-clusterip-service.yaml 파일 작성
apiVersion: v1 kind: Service metadata: name: my-backend-service ## VERY VERY IMPORTANT - NGINX PROXYPASS needs this name labels: app: backend-restapp tier: backend spec: #type: ClusterIP is a default service in k8s selector: app: backend-restapp ports: - name: http port: 8080 # ClusterIP Service Port targetPort: 8080 # Container Port
# Service 생성
kubectl apply -f 02-backend-clusterip-service.yml
# 확인
kubectl get all --- NAME READY STATUS RESTARTS AGE pod/backend-restapp-7865cdf94-5gl9z 1/1 Running 0 3m41s pod/backend-restapp-7865cdf94-m6rch 1/1 Running 0 3m41s pod/backend-restapp-7865cdf94-wsh6k 1/1 Running 0 3m41s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 44h service/my-backend-service ClusterIP 10.0.33.153 <none> 8080/TCP 39s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/backend-restapp 3/3 3 3 3m41s NAME DESIRED CURRENT READY AGE replicaset.apps/backend-restapp-7865cdf94 3 3 3 3m41s
Frontend Rest App 환경 구성 (Deployment / LoadBalancer)
# frontend-deployment.yaml 파일 작성
apiVersion: apps/v1 kind: Deployment metadata: name: frontend-nginxapp labels: app: frontend-nginxapp tier: frontend spec: replicas: 3 selector: matchLabels: app: frontend-nginxapp template: metadata: labels: app: frontend-nginxapp tier: frontend spec: containers: - name: frontend-nginxapp image: stacksimplify/kube-frontend-nginx:1.0.0 ports: - containerPort: 80
# Deployment 생성
kubectl apply -f 03-frontend-deployment.yml
# frontend-LoadBalancer-Service.yaml 파일 작성
apiVersion: v1 kind: Service metadata: name: frontend-nginxapp-loadbalancer-service labels: app: frontend-nginxapp tier: frontend spec: type: LoadBalancer # ClusterIp, # NodePort selector: app: frontend-nginxapp ports: - name: http port: 80 # Service Port targetPort: 80 # Container Port
# Load Balancer 생성
kubectl apply -f 04-frontend-LoadBalancer-service.yml
# 확인
kubectl get all --- NAME READY STATUS RESTARTS AGE pod/backend-restapp-7865cdf94-5gl9z 1/1 Running 0 14m pod/backend-restapp-7865cdf94-m6rch 1/1 Running 0 14m pod/backend-restapp-7865cdf94-wsh6k 1/1 Running 0 14m pod/frontend-nginxapp-5b9f4c95ff-mktvp 1/1 Running 0 3m16s pod/frontend-nginxapp-5b9f4c95ff-slkmr 1/1 Running 0 3m16s pod/frontend-nginxapp-5b9f4c95ff-tth2g 1/1 Running 0 3m16s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/frontend-nginxapp-loadbalancer-service LoadBalancer 10.0.196.214 20.249.169.252 80:30280/TCP 13s service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 44h service/my-backend-service ClusterIP 10.0.33.153 <none> 8080/TCP 11m NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/backend-restapp 3/3 3 3 14m deployment.apps/frontend-nginxapp 3/3 3 3 3m16s NAME DESIRED CURRENT READY AGE replicaset.apps/backend-restapp-7865cdf94 3 3 3 14m replicaset.apps/frontend-nginxapp-5b9f4c95ff 3 3 3 3m16s
# Frontend App의 Service External IP로 접속
# Access REST Application http://<Load-Balancer-Service-IP>/hello
http://<Load-Balancer-Service-IP>/hello로 접근 시,
Load Balancer에 의해 Pod의 부하 분산이 이루어 지는 것을 확인 가능
# 삭제
kubectl delete -f 01-backend-deployment.yml -f 02-backend-clusterip-service.yml -f 03-frontend-deployment.yml -f 04-frontend-LoadBalancer-service.yml kubectl get all
[참고 영상]
Udemy - Azure Kubernetes Service with Azure DevOps and Terraform
섹션 5 : Kubernetes Fundamentals with YAML - Declarative Approach
42. Step-07: Create Backend Application k8s Deployment and Service
43. Step-08: Create frontend application k8s deployment and service and test
[참고 문서]
'kubernetes > udemy' 카테고리의 다른 글
[Udemy] AKS Storage - Azure Disks (2) (0) 2025.02.14 [Udemy] AKS Storage - Azure Disks (0) 2025.02.14 [Udemy] Services Demo with Cluster IP and Load Balancer Services (Imperative) (0) 2025.02.13 [Udemy] Deployments (0) 2025.02.13 [Udemy] ReplicaSet (0) 2025.02.12