[Kubernetes] Ingress

황시준·2023년 3월 13일
0

Kubernetes

목록 보기
2/12
post-thumbnail

1. Kubernets Ingress란?

  • HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 호출하는 것
    => Layer 7의 동작을 처리할 수 있다.
  • 기능
    • Service에 외부 URL을 제공
    • 트래픽을 로드벨런싱
    • SSL 인증서 처리
    • Virtual Hosting 지정

2. Ingress 동작 방식

다음을 보면 Ingress Controller 가 요청을 컨트롤 하는걸 볼 수 있다.
예를 들어 설명해보면 ghkdtlwns987.com/login 으로 접속하면
Ingress Controller에서 login Pods 에 해당 요청을 전달한다.

3. 실습

3-1. Ingress Controller 설치

Nginx Ingress Controller 설치

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml

3-2. Ingress Controller Port 확인

ingress-nginx-controller serviceNodePort 확인

Test용 Pods 생성

Pod를 생성한다. 이때 생성된 Pod는 다음과 같다.

/ : svc-shopping
/customer : svc-customer
/order : svc-order

apiVersion: v1
kind: Pod
metadata:
  name: pod-shopping
  labels:
    category: shopping
spec:
  containers:
  - name: container
    image: kubetm/shopping:latest
---
apiVersion: v1
kind: Service
metadata:
  name: svc-shopping
spec:
  selector:
    category: shopping
  ports:
  - port: 8080
apiVersion: v1
kind: Pod
metadata:
  name: pod-customer
  labels:
    category: customer
spec:
  containers:
  - name: container
    image: kubetm/customer
---
apiVersion: v1
kind: Service
metadata:
  name: svc-customer
spec:
  selector:
    category: customer
  ports:
  - port: 8080
apiVersion: v1
kind: Pod
metadata:
  name: pod-order
  labels:
    category: order
spec:
  containers:
  - name: container
    image: kubetm/order
---
apiVersion: v1
kind: Service
metadata:
  name: svc-order
spec:
  selector:
    category: order
  ports:
  - port: 8080

3-3. Test용 Ingress 생성

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: service-loadbalancing
spec:
 ingressClassName: nginx
 rules:
 - http:
     paths:
     - path: /
       pathType: Prefix
       backend:
         service:
           name: svc-shopping
           port:
             number: 8080
     - path: /customer
       pathType: Prefix
       backend:
         service:
           name: svc-customer
           port:
             number: 8080
     - path: /order
       pathType: Prefix
       backend:
         service:
           name: svc-order
           port:
             number: 8080

이후 각각 생성한다.

kubectl create ns ingress-test
kubectl apply -f ingress.yaml-n ingress-test
kubectl apply -f customer.yaml -n ingress-test
kubectl apply -f order.yaml -n ingress-test
kubectl apply -f shopping.yaml -n ingress-test

3-4. Service, Ingress, Pods 생성 확인



3-5. 접속 및 테스트

다음 그림을 보면 worker:31927 로 접속해 특정 경로로 이동하면 각자의 페이지가 출력된다.

4. 정리

이번엔 세 종류의 Pods를 생성하고 Ingress를 생성해 해당하는 Rule로 접근하는 실습을 진행했고 이를 Service Loadbalancing 이라 한다.
다음엔 Canary Deployment 에 대해 알아본다.

profile
하고싶은게 많은 newbie

0개의 댓글