💻 CSP/GCP

[GCP] GKE로 웹 애플리케이션 배포 (2)

heywantodo 2023. 6. 19. 10:13
728x90
반응형

[GCP] GKE로 웹 애플리케이션 배포 (2)

1. 웹 애플리케이션 생성
2. Docker Image 생성
3. 생성 한 Docker Image로 Deployment 생성
4. NodePort 열어줌 
5. Ingress Controller를 사용하여 경로 지정

지난 포스팅에서 1번과 2번 과정까진 완료했다.

https://heywantodo.tistory.com/118

 

[GCP] GKE로 웹 애플리케이션 배포 (1)

[GCP] GKE로 웹 애플리케이션 배포 (1) GKE로 웹 애플리케이션을 배포하는 과정은 다음과 같다. 1. 웹 애플리케이션 생성 2. Docker Image 생성 3. 생성 한 Docker Image로 Deployment 생성 4. NodePort 열어줌 5. Ingres

heywantodo.tistory.com

 

이제 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 

 

외부 HTTP(S) 부하 분산기용 GKE 인그레스  |  Google Kubernetes Engine(GKE)  |  Google Cloud

이 페이지에서는 HTTP(S) 부하 분산용 인그레스가 무엇인지와 Google Kubernetes Engine(GKE)에서 어떻게 작동하는지 설명합니다.

cloud.google.com

  • 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 😆❤

 

728x90
반응형