GCP GKE Kubernetes 인그레스(Ingress), 노드포트(Nodeport) 접속

2023. 10. 27. 16:40·Cloud & Architecture/Kubernetes
728x90

MSA (Micro Service Architecture) 로 개발되어 서비스간의 라우팅이 필요한 구조에서는 Ingress 를 사용
 Service의 NodePort : 온프레미스 환경에서 사용
Service의 LoadBalancer: 퍼블릭 클라우드 환경에서 사용
Servic는 클러스터 외부로 PORT를 노출하는 기능과 부하분산기능을 수행합니다. 그리고 이점은 Ingress 도 동일합니다. 차이점은 Ingress는 L7이고 Service는 L4라는 점입니다.

 

1. 노드 포트

 

2. 파드 생성 (디플로이먼트)

vi web-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: default
spec:
  selector:
    matchLabels:
      run: web
  template:
    metadata:
      labels:
        run: web
    spec:
      containers:
      - image: gcr.io/google-samples/hello-app:1.0
        imagePullPolicy: IfNotPresent
        name: web
        ports:
        - containerPort: 8080
          protocol: TCP

 

kubectl apply -f web-deployment.yaml

 

kubectl get deploy

 

 

3. 서비스 생성

vi web-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: default
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    run: web
  type: NodePort

 

kubectl apply -f web-service.yaml

 

kubectl get svc

 

 

4. 인그레스 생성

vi basic-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: basic-ingress
spec:
  rules:
  - http:
      paths:
      backend:
         service: 
            name : web
            port: 
              number: 8080
      path: /
      pathType: Prefix

 

kubectl apply -f basic-ingress.yaml

 

kubectl get ingress

 

작업부하 > web > 개요 > 노출중인 서비스

 

5. 접속

 

1) 노드포트 [노드IP]:[노드포트]

GKE에서 쿠버네티스를 사용하는 경우 각 노드의 랜덤한 포트에 접근하기 위해 별도로 방화벽 설정을 추가해야 합니다. AWS에서도 마찬가지로 Security Group의 별도의 Inbound 규칙을 추가해야 합니다.
gcloud compute firewall-rules create sun-nodeport-svc --allow=tcp:30650

 

 


실제 운영 환경에서 NodePort로 서비스를 외부에 제공하는 경우는 많지 않습니다.
 SSL 인증서 적용 라우팅과 같은 복잡한 설정을 서비스에 적용하는 것은 어렵기 때문입니다.

 

2) 인그레스 [인그레스IP]/[url]


LoadBalancer 타입의 서비스는 서비스를 생성함과 동시에 로드 밸런서를 새롭게 생성해 pod와 연결합니다. Nodeport는 각 노드의 IP를 알아야 pod에 접근할 수 있지만, LoadBalancer 타입의 서비스는 클라우드 플랫폼으로부터 도메인 이름과 IP를 할당받기 때문에 Nodeport보다 쉽게 pod에 접근할 수 있습니다.
 
단, 로드 밸런서를 동적으로 생성하는 기능을 제공하는 환경에서만 사용할 수 있습니다. AWS, GCP 등과 같은 클라우드 플랫폼 환경에서만 LoadBalancer 타입을 사용할 수 있으며, 가상 환경이나 온프레미스 환경에서는 사용이 어려울 수 있습니다.
온프레미스 환경에서 LoadBalancer 타입의 서비스를 사용하기 위해서는 MetalLB나 오픈스택과 같은 특수한 환경을 직접 구축해야 합니다. 

 

 

 

728x90
'Cloud & Architecture/Kubernetes' 카테고리의 다른 글
  • Kubernetes 인그레스(Ingress), 로드밸런서 LoadBalancer, metallb
  • 쿠버네티스(Kubernetes) 배포 업데이트, 롤백
  • GCP Kubernetes GKE Pod 레플리카셋, Deployment
  • GCP Kubernetes GKE Pod 생성, 배포, 접속
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    트리
    다익스트라
    조합
    구현
    자료구조
    Algorithm
    그래프
    DFS
    스택
    최소신장트리
    정렬
    월간코드챌린지
    덱
    파이썬
    최대공약수
    이분탐색
    동적계획법
    재귀
    플로이드워셜
    힙
    LIS
    DP
    구간합
    그리디
    알고리즘
    최단거리
    프로그래머스
    BFS
    큐
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
GCP GKE Kubernetes 인그레스(Ingress), 노드포트(Nodeport) 접속
상단으로

티스토리툴바