728x90
쿠버네티스 (Kubernetes) Ingress
인그레스 컨트롤러 (Ingress Controller)
🔎 OSI 7계층
L1 : cable
L2: MAC Address (LAN)
L3: IP (DIP/SIP)
L4: Port (SPord, Dpord)
.
.
L7: Message (GET)
LoadBalancer
- L4 : Port Number와 IP만 보기떄문에 Path를 못찾음
- L7 : Path를 찾을 수 있음
- Ingress Controller : L4 LoadBalancer를 쓰더라도 Rule을 통해 path를 찾을 수 있게 해줌
서비스 인그레스 (Service Ingress)
: HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출시키는 API
인그레스의 기능
- 외부 URL을 제공
- 트래픽을 로드밸런싱
- virtual hosting을 지정
인그레스 컨트롤러 설치 (Ingress Controller Install)
✔ 쿠버네티스에서 Ingress를 사용하기 위해서는 두 가지가 필요
1️⃣ Yaml 파일에서 Ingress로 정의되는 Ingress 리소스
2️⃣ Ingress 규칙이 적용될 Ingress Controller
✔ Ingress Controller 는 여러개가 있음
- Nginx (BareMetal)
- EKS (AWS ALB)
NGINX Ingress Controller 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.0/deploy/static/provider/baremetal/deploy.yaml
kubectl get svc -n ingress-nginx
인그레스에 Rule 구성
노드 포트와 서비스 생성
- nginx
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
ports:
- name: http-port
port: 9002
targetPort: 80
selector:
app: nginx
type: NodePort
- appjs
apiVersion: apps/v1
kind: Deployment
metadata:
name: deployment-appjs
spec:
replicas: 2
selector:
matchLabels:
app: appjs
template:
metadata:
labels:
app: appjs
spec:
containers:
- name: appjs
image: appjs
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: appjs-service
spec:
ports:
- name: http-port
port: 9003
targetPort: 80
selector:
app: appjs
type: NodePort
인그레스 Rule 구성
- / : nginx에 접속 되도록 rule 구성
- /app : appjs에 접속 되도록 rule 구성
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
namespace: ingress-nginx
name: test-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
defaultBackend:
service:
name: nginx
port:
number: 80
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx-service
port:
number: 80
- path: /app
pathType: Prefix
backend:
service:
name: appjs-service
port:
number: 80
반응형
'🐳 Container > K8S' 카테고리의 다른 글
[K8s] Helm (0) | 2023.06.25 |
---|---|
[K8s] 쿠버네티스(Kubernetes) Volume 관리 (0) | 2023.04.09 |
[K8s] 쿠버네티스(Kubernetes) 서비스 (0) | 2023.03.30 |
[K8s] 쿠버네티스(Kubernetes) 컨트롤러 (2) (0) | 2023.03.28 |
[K8s] 쿠버네티스(Kubernetes) 컨트롤러 (1) (0) | 2023.03.27 |