티스토리 뷰
사전준비할 것
- MetalLB 설치
- Nginx Ingress Controller 설치
구조
인그레스 생성
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-example
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myservice.com
http:
paths:
- path: /
pathType: Prefix
backend:
service
name: myservice
port:
number: 80
- host: 해당 도메인 이름으로 접근하는 요청에 대해서 인그레스 규칙 적용
- path: path 는 여러개의 경로로 있을 수 있다. 해당 경로에 들어온 요청을 어느 서비스 및 포트로 전달할 것인지 정의
- pathType
-
Prefix /abc
/abc//abc, /abc/ 둘다가능 Exact /abc /abc /abc/ /abc/
-
인그레스 컨트롤러 확인
kubectl get svc -n nginx-ingress
외부에서 Nginx 인그레스 컨트롤러에 접근하기 위한 서비스가 생성되었는지 확인한다.
Deployment 생성
apiVersion: apps/v1
kind: Deployment
metadata:
name: hostname-deployment
spec:
replicas: 3
selector:
matchLabels:
app: webserver
template:
metadata:
name: my-webserver
labels:
app: webserver
spec:
containers:
- name: my-webserver
image: alicek106/ingress-annotation-test:0.0
ports:
- containerPort: 5000
name: flask-port
- .spec.selector.matchLabels: 디플로이먼트가 관리할 파드를 찾는 방법을 정의
- .spec.template.metadata.labels: 파드는 이를 사용해서 app: webserver 라는 레이블을 붙인다
Service 생성
apiVersion: v1
kind: Service
metadata:
name: hostname-service
spec:
ports:
- name: web-port
port: 80
targetPort: flask-port
selector:
app: webserver
type: LoadBalancer
참고: 도커/쿠버네티스(용찬호 저)