본문 바로가기

반응형

⭐ Kubernetes & EKS/Ingress (잉그레스)

(7)
Ingress와 ALB 사용시 한개의 ALB에 여러 서비스 맵핑하기 # Ingress와 ALB를 연동하여 사용 시 한개의 ALB에 여러 서비스를 맵핑하는 방법을 알아본다. 1. 문제점 Ingress는 특성상 Namespace별로 리소스를 구분하여 생성한다. 그리고 ingress-alb 사용시 인그레스를 개별로 생성할때마다 alb가 생성이 되므로 비용관리나 리소스 관리 측면에서 매우 비효율적이다. 2. 대안 - 해결방법 1개의 alb 주소로 여러개의 서비스를 Namespace 구분없이 설정할 수 있다면 매우 효율적으로 운영이 가능하다. 3. 적용전 확인사항 - 아래는 AWS LoadBalancer를 적용 시 사용할 수 있는 다양한 옵션들을 제공한다. https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/g..
Ingress 잉그레스 관련 사이트 모음 # 잉그레스 관련 사이트 모음 - ALB 로드밸런서 컨트롤러 공식사이트 https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.4/guide/targetgroupbinding/targetgroupbinding/ TargetGroupBinding - AWS Load Balancer Controller TargetGroupBinding TargetGroupBinding is a custom resource (CR) that can expose your pods using an existing ALB TargetGroup or NLB TargetGroup. This will allow you to provision the load balancer ..
Ingress Annotation을 활용한 ssl 적용하기 # 해당 작업이 필요한 이유? - AWS EKS는 AWS 영역과 K8s 영역이 나누어져 있다. 한마디로 이야기 하자면, 서로 다른 영역을 연결을 해놓았다 라고 이해하면 쉽다. 그 연결고리가 바로 Application LoadBalancer 즉 ALB 라고 생각한다. # Ingress에 SSL을 적용하게된 이유는? Ingress에 SSL을 적용하게 된 이유는 간단하다. EKS의 노드의 숫자를 수동으로 조정하거나 어떤 정보를 변경 했을때 로드 밸런서의 리스너 정보가 초기화가 되는 현상이 발생 했다. 여러번 반복되다 보니 해결책을 찾아야 했다. # 그렇다면, 왜 노드그룹 정보를 변경하거나 인스턴스의 갯수를 수동으로 조정 등 했을 뿐인데 ALB의 리스너가 초기화가 되었을까? ALB에서는 CORS에 대해 지원을 ..
Ingress에 대한 이해가 안되는 내용 # Ingress 설정에서 이해가 안가는 내용이 존재한다. 일단 port number 설정에 대한 이해가 안간다. 아래의 예시를 보면, 아래의 # 값으로 주석처리 된 내용을 보면 port number는 80으로 서비스가 되도록 설정 되어 있다. 그런데 18808 번이나 45000번 50000번등으로 설정을 변경 후 배포를 해도 서비스는 정상적으로 수행이 된다. spec: rules: - http: paths: - path: /articles pathType: Prefix backend: service: name: "test-service" port: number: 80 #해당 포트 번호를 45000번이나 50000번으로 변경 후 서비스해도 전혀 이상이 없다... - path: / pathType: Pre..
Ingress와 api의 관계에 대한 설명 # Ingress와 api의 관계데 대한 정리 (그림) - 잉그레스의 사전적 정의 : 입장, 권리, 입장권 - 간단하게 설명하면 아래와 같다. Ingress에 설정된 path 주소화 백엔드 api의 주소의 정보가 일치해야 한다. 즉, RESTful API주소로 정의된 서비스를 제공해주는 연결 통로라고 볼 수 있다. (프론트 엔드 및 백엔드에 정의된 /api가 개별로 서비스 가능 하게끔 구성이 가능하다.) 예를 들어 설명하면, 스프링부트의 BoardController가 존재하고, 해당 컨트롤러의 api 주소를 아래와 같이 @GetMapping으로 /articles라는 api주소를 설정 했을때, ingress에서 해당 api주소로 아래와 같이 설정을 하면 ALB의 리스너 정책에 해당 정보를 참고하여 맵핑 후..
Ingress를 활용한 ALB 추가하기 # Ingress는 서비스 이름만 바꿔서 동일한 pod를 실행 시킬수 있다. 아래는 예시이다. NAME CLASS HOSTS ADDRESS PORTS AGE api-ingress * k8s-.ap-northeast-2.elb.amazonaws.com 80 3d23h web-ingress * k8s-.ap-northeast-2.elb.amazonaws.com 80 5d23h web-ingress-test-alb * k8s-.ap-northeast-2.elb.amazonaws.com 80 5m11s 위의 내용을 보면 web-ingress,api-ingress와 web-ingress-test-alb는 같은 서비스를 실행한 것이다. web-ingress-test-alb는 2개의 api와 2개의 컨테이너를 맵핑한..
Ingress의 동작구조 살펴보기 # AWS가 제공하는 잉그레스의 개념도 (가장 심플하게 잘 되어 있는거 같다.) 그렇다면 잉그레스란 무엇인가? 인그레스(ingress)는 클러스터 외부에서 내부 서비스로 접근하는 HTTP, HTTPS 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음을 말한다. 클러스터 외부에서 접근가능한 URL을 사용할 수 있게 하며, 트래픽을 로드밸런싱도 해주고, SSL 인증서 처리를 해주고, 도메인 기반으로 가상 호스팅을 제공한다. 인그레스(ingress)는 전제조건으로 인그레스 컨트롤러가 있어야 인그레스를 충족할 수 있는데 대표적으로 AWS에서 제공하는 AWS Load Balancer Controller가 있다. 실제 환경에서의 Ingress 구성내역을 확인하기 - 여기서 중요한것은 EKS에서 ALB의 포트를 자동으..

728x90
반응형