728x90
[GCP] GKE로 웹 애플리케이션 배포 (2)
1. 웹 애플리케이션 생성2. Docker Image 생성
3. 생성 한 Docker Image로 Deployment 생성
4. NodePort 열어줌
5. Ingress Controller를 사용하여 경로 지정
지난 포스팅에서 1번과 2번 과정까진 완료했다.
https://heywantodo.tistory.com/118
이제 Deployment를 생성하고, Ingress Controller를 사용하는 과정을 해보자
3. Deployment 생성
- web_deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-web
labels:
app: my-web
spec:
replicas: 2
selector:
matchLabels:
app: my-web
template:
metadata:
labels:
app: my-web
spec:
containers:
- name: web-container
image: docker-hub-name/my-web-app:latest
ports:
- containerPort: 5000
protocol: TCP
kubectl create -f web_deployment.yaml
kubectl get deployments
4. NodePort 생성
ingress는 클러스터 외부에서 내부 서비스로의 트래픽을 라우팅하기때문에,
외부에서 접근할 수 있는 포트(NodePort)를 반드시 열어줘야 한다.
- web_nodeport.yaml
apiVersion: v1
kind: Service
metadata:
name: web-nodeport
labels:
app: my-web
spec:
type: NodePort
ports:
- port: 5000
targetPort: 5000
protocol: TCP
selector:
app: my-web
5. Ingress Controller 생성
Ingress는 특정 경로 패턴에 따라 트래픽을 서비스로 전달할 수 있으며,
클러스터 내부의 서비스에 대한 로드 밸런싱을 수행한다. 트래픽을 여러 인스턴스 또는 파드로 분산시켜
성능과 가용성을 향상시킨다.
아래 Document에 GKE의 Ingress에 대해 아주 친절하게 설명이 되어있다.
https://cloud.google.com/kubernetes-engine/docs/concepts/ingress?hl=ko
- web_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: web-nodeport
port:
number: 5000
- path: /test
pathType: Prefix
backend:
service:
name: web-nodeport
port:
number: 5000
kubectl create -f web_ingress.yaml
인그레스가 생성되기까지는 꽤 시간이 걸린다. 콘솔에서 상태를 확인 할 수 있음
성공적으로 생성이 완료되면 상태가 OK로 바뀌면서 엔드포인트가 보인다
gcp 콘솔의 네트워크 서비스의 부하분산 탭에 가보면 로드밸런서가 생성되어있는 모습을 확인 가능
클러스터가 삭제되면 로드밸런서도 같이 삭제된다👍 (AWS는 안됐던거같은데 ...😂)
접속 테스트
Good 😆❤
반응형
'💻 CSP > GCP' 카테고리의 다른 글
[GKE] Some backend services are in UNHEALTHY state (0) | 2023.07.19 |
---|---|
[GCP] Artifact Registry (0) | 2023.07.18 |
[GCP] GKE로 웹 애플리케이션 배포 (1) (0) | 2023.06.18 |
[GCP] GKE 사용해보기 (0) | 2023.06.17 |
[GCP] GKE 클러스터 생성해보기 (0) | 2023.06.16 |