반응형
쿠버네티스(kubernetes) ingress
인그레스(Ingress)는 일반적으로 외부에서 내부로 향하는 것을 지칭하는 단어
외부 요청을 어떻게 처리할 것인지 네트워크 7계층 레벨에서 정의하는 쿠버네티스 오브젝트
- 외부 요청의 라우팅
- 가상 호스트 기반의 요청 처리
- SSL/TLS 보안 연결 처리
외부 요청에 대한 처리 규칙을 쿠버네티스 자체 기능으로 편리하게 관리할 수 있다는 것이 인그레이스의 핵심
$ kubectl get ing
<ingress-example.yaml>
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: alicek106.example.com
http:
paths:
- path: /echo-hostname
backend:
serviceName: hostname-service
servicePort: 80
- host: 해당 도메인으로 접근하는 요청에 대해서 처리 규칙을 적용
- path: 해당 경로에 들어온 요청을 어느 서비스로 전달할 것인지 정의. 위에서는 backend로 처리함
- serviceName, servicePort: path로 들어온 요청이 전달될 서비스와 포트
인그레이스 생성
$ kubectl apply -f ingress-example.yaml
$ kubectl get ingress
인그레스는 규칙을 적용하는 인그레스 컨트롤러와 함께 사용해야 한다.
Ngnix 웹 서버 인그레이스 컨트롤러 설치
$ kubectl apply -f https:llraw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.0.0/deploy/static/provider/baremetal/deploy.yaml
Nginx 인그레스 컨트롤러를 설치하기 위해 다양한 쿠버네티스 리소스를 한번에 생성함
$ kubectl get pods, deployment -n ingress-nginx
Nginx 웹 서버를 외부에 노출하기 위한 서비스를 생성해야 한다.
<ingress-service-lb.yaml>
kind: Service
apiVersion: v1
metadata:
name: ingress-nglnx
namespace: ingress-nglnx
spec:
type: loadBalancer
selector:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
생성 후 확인
$ kubectl apply -f ingress-service-lb.yaml
$ kubectl get svc -n ingress-nginx
-------------------
대세는 쿠버네티스 강의 실습
쇼핑과 고객서비스를 위한 pod, service 각각 두개 생성
apiVersion: v1
kind: Pod
metadata:
name: pod-shopping
labels:
category: shopping
spec:
containers:
- name: container
image: kubetm/shopping
---
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
서비스로 curl 날려서 응답 확인
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
ingress 생성 후 Port와 path를 통해 응답 확인
References:
http://www.yes24.com/Product/Goods/84927385
https://kubetm.github.io/k8s/08-intermediate-controller/ingress/
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
쿠버네티스(Kubernetes) PV, PVC (0) | 2022.05.20 |
---|---|
[troubleshooting] [ERROR CRI]: container runtime is not running (0) | 2022.05.16 |
쿠버네티스(kubernetes) Namespace, ConfigMap, Secret (0) | 2022.05.14 |
쿠버네티스(kubernetes) Deployment, Service (0) | 2022.05.14 |
[troubleshooting] [kubelet-check] It seems like the kubelet isn't running or healthy. (0) | 2022.05.14 |