728x90
반응형
# 쿠버네티스에서 MSA를 구현하기 위해서는 API 게이트웨이 역할을 해주는 ALB와 Ingress가 존재 하는데, 어떤 방식과 구조로 분기를 해주는지 정리 한다.
예시) 아래와 같은 정보를 조회 했을때, Ingress는 ALB에서 받는 트래픽이라고 볼 수 있다.
보통 ALB는 퍼블릭 서브넷에 존재 하므로 사용자들의 트래픽을 받는 최초의 통로라고 볼 수 있을 것이다.
그렇다면 어떻게 ALB가 80으로만 트래픽을 받는데 포트별로 나누어진 서비스를 호출할 수 있을까?
$ kubectl get ingress -n new-app
NAME CLASS HOSTS ADDRESS PORTS AGE
new-app <none> * 12345.elb.amazonaws.com 80 47h
$ kubectl get svc -n new-app
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
new-app-elb LoadBalancer 172.20.114.83 12345.ap-northeast-2.elb.amazonaws.com 7778:31917/TCP 46h
new-app NodePort 172.20.149.155 <none> 3000:30548/TCP 47h
그것은 EKS에서 pod를 생성할때 deplotment.yaml에 정의하는 port를 기준으로 해당 서비스를 호출하게 된다.
예시로 아래의 deplotment.yaml 파일을 eks에서 실행 한다고 가정한다.
아래의 파일 내용 하단에 존재하는 container port를 기준으로 해당 서비스가 실행 된다고 볼 수 있다.
- Deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: new-app
labels:
app: new-app
namespace: new-app
spec:
replicas: 2
selector:
matchLabels:
app: new-app
template:
metadata:
labels:
app: new-app
spec:
containers:
- image: image_address
imagePullPolicy: Always
name: new-app
ports:
- containerPort: 3000
protocol: TCP
- Service.yaml
apiVersion: v1
kind: Service
metadata:
name: new-app
annotations:
alb.ingress.kubernetes.io/healthcheck-path: "/healthy"
namespace: new-app
spec:
selector:
app: new-app
type: NodePort
ports:
- port: 3000
protocol: TCP
targetPort: 3000
- Ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: new-app
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
namespace: new-app
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: "new-app"
port:
number: 3000
그렇다면 간단하게 구성 절차와 flow를 보면서 정리를 하면 아래와 같다.
- 구성절차 : 1. Pod 생성 / Deployment.yaml 정의 → 2. Service 생성 / Service.yaml → 3. Ingress 생성 / Ingress.yaml
- Workflow
※ Ingress 서비스 확인하기
Ingress 서비스 적용 후 정리 예정...!
끝.
728x90
반응형
'✋ 개념이해 > 인프라 관련' 카테고리의 다른 글
EKS port 번호와 target port의 개념 이해 (0) | 2022.06.27 |
---|---|
EKS Architecture WorkFlow Organization (EKS 아키텍처 정리) (0) | 2022.06.17 |