2023. 10. 24. 15:01ㆍk8s
Ingress
Kubernetes에서 "Ingress"는 HTTP 및 HTTPS 트래픽을 클러스터 내의 서비스로 라우팅하기 위한 리소스를 정의하는 API 오브젝트다. Ingress는 클러스터 외부에서 애플리케이션에 접근할 때 유용한 방법을 제공하며, 서비스 디스커버리 및 로드 밸런싱 기능을 포함하고 있다. Ingress 리소스는 HTTP 및 HTTPS 라우팅 규칙을 정의하고 이를 클러스터 내의 서비스로 연결한다.
Ingress 주요 기능
- HTTP 및 HTTPS 경로 기반 라우팅 : Ingress 리소스를 사용하여 특정 URL 경로(예: /app)를 특정 서비스(예: 웹 애플리케이션)로 연결할 수 있다. 이는 여러 서비스를 동일한 도메인에서 호스팅하거나 다른 경로로 분기하는 데 유용하다.
- 가상 호스트 기반 라우팅 : Ingress 리소스를 사용하여 서로 다른 도메인(가상 호스트)에 대해 다른 서비스로 라우팅할 수 있다. 이를 통해 여러 도메인을 동일한 클러스터에서 호스팅할 수 있다.
- TLS(Transport Layer Security) 암호화 : Ingress 리소스를 사용하여 HTTPS 트래픽을 처리하고 TLS 암호화를 설정할 수 있다. 이것은 보안 및 개인 정보 보호를 위해 중요하다.
- 로드 밸런싱 : Ingress 컨트롤러는 여러 Pod 인스턴스 사이에서 트래픽을 분산시키는 로드 밸런서 역할을 수행한다. 이로써 애플리케이션의 가용성과 확장성을 향상시킬 수 있다.
실습 파일
실습
ubuntu@ubuntu:~/test$ minikube addons enable ingress
- echo-v1.yml 내용
3-6-1.txt
- echo-v2.yml 내용
3-6-2.txt
- replica:3 확인
문제
작업 명세 [다음을 만족하는 ingress를 만드시오]
Deployment 이름 nginx
Deployment Lable app:nginx
Deployment 복제수 3
container 이름 nginx
container 이미지 nginx:latest
Igress 도메인 nginx.192.168.49.2.sslip.io
- nginx.yml 파일 내용
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
spec:
rules:
- host: nginx.192.168.49.2.sslip.io
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
livenessProbe:
httpGet:
path: /
port: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
app: nginx
- 제거 작업
kubectl delete all --all
kubectl delete ing <name>