반응형
사용 예시
Service LoadBalancing
- Pod마다 Service를 연결한 후 path에 따라 트래픽을 연결시켜 줌
Canary Upgrade
- 업그레이드 할 Pod에 별도의 Service를 연결시킨 후 설정한 비율의 트래픽을 업그레이드 할 Pod으로 연결시킬 수 있음
Ingress Controller
- Ingress Controller라고 부르는 Ingress를 구현할 별도의 플러그인을 설치해야 함
- 대표적인 예시로 Nginx, Kong과 같은 플러그인이 존재
- 플러인을 설치하면 namespace가 생성되고 그 위에 Ingress 구현체 역할을 하는 Pod이 생성됨 (Deployment가 생성되어 관리 및 생성)
- 구현체 Pod의 Ingress rule에 따라 Service 및 Pod에 트래픽을 전달시켜 줌
- 외부에서 구현체 Pod에 트래픽을 전달해야 하기 때문에 Nginx Service와 같이 구현체 Pod에 연결되는 Service를 통해 전달
- Ingress rule에 path 없이 host 이름만으로 서비스와 연결할 수 있음
Ingress 구성 요소
- Host: 도메인 이름
- Path: 요청 받을 path
- serviceName: path에 따라 연결할 service의 이름
Ingress 기능
Service LoadBalancing
Pod마다 Service를 매핑시키고 Ingress를 이용해 path에 따라 각각의 Service로 트래픽을 전달시켜 LoadBalancing 역할을 구현할 수 있음
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: service-loadbalancing
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: svc-shopping
servicePort: 8080
- path: /customer
backend:
serviceName: svc-customer
servicePort: 8080
- path: /order
backend:
serviceName: svc-order
servicePort: 8080
Canary Update
- 업데이트 할 Pod와 원래의 Pod를 Ingress와 연결시키고 @weight: 10% 와 같이 트래픽의 특정 비율만 업데이트 Pod으로 보낼 수 있음
- @header 를 이용해 특정 헤더를 갖고 있는 트래픽만 보낼 수 있음
- 이외에 다양한 어노테이션이 존재
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: canary-v2
annotations:
nginx.ingress.kubernetes.io/canary: "true"
nginx.ingress.kubernetes.io/canary-weight: "10"
nginx.ingress.kubernetes.io/canary-by-header: "Accept-Language"
nginx.ingress.kubernetes.io.canary-by-header-value: "kr"
spec:
rules:
- host: www.app.com
http:
paths:
- backend:
serviceName: svc-v2
servicePort: 8080
HTTPS
- Pod 자체에서 인증서를 제공하기 힘들 때 유용
- Ingress Pod의 port 중 443을 오픈하고 Service와 연결
- Ingress의 tls라는 옵션에서 secretName을 Secret 오브젝트와 연결하고 Secret 오브젝트에 인증서를 저장
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: https
spec:
tls:
- hosts:
- www.https.com
secretName: secret-https
rules:
- host: www.https.com
http:
paths:
- backend:
serviceName: svc-https
servicePort: 8080
반응형
'Kubernetes' 카테고리의 다른 글
Controller (0) | 2023.02.08 |
---|---|
AutoScaler (0) | 2023.02.08 |
StatefulSet (0) | 2023.02.08 |
DaemonSet, Job, CronJob (0) | 2023.02.08 |
Deployment (0) | 2023.02.08 |