Ingress of Kubernetes

SquidEngineer·2024년 4월 26일

Kubernetes

목록 보기
7/12

Overview

Ingress란 클러스터 밖에서 클러스터 내의 서비스로 네트워크 트래픽을 어떻게 라우팅할지 관리하는 API 객체이다.
Ingress를 이용하면 HTTP와 HTTPS 경로를 통해 클러스터 내부의 서비스에 외부 접근을 제어할 수 있다. 기본적으로 Ingress는 url, 호스트 이름, http(s) 헤더 등을 기반으로 트래픽을 특정 서비스로 라우팅하는 규칙을 정의한다.

기능

  1. 호스트 기반 라우팅: URL의 호스트 이름을 기준으로 트래픽을 라우팅한다. 예를 들어, example.com과 api.example.com으로 요청이 오면 각각 다른 서비스로 라우팅할 수 있다.
  2. 경로 기반 라우팅: URL의 경로 부분(example.com/app1과 example.com/app2)을 기반으로 트래픽을 다른 서비스로 라우팅할 수 있다.
  3. TLS/SSL 지원: Ingress는 특정 호스트에 대해 TLS를 종료하는 기능을 제공하여 HTTPS 트래픽을 관리한다. 이를 위해 TLS 비밀키와 인증서를 Ingress 객체에 연결해야 한다.

작동 방식

  1. client가 'example.com/app1'에 요청을 보냄.
  2. DNS resolution은 이 요청을 Ingress 컨트롤러의 IP 주소로 redirection함.
  3. Ingress Controller는 요청을 받고 Ingress 규칙에 따라 적절한 서비스로 트래픽을 라우팅함.
  4. 서비스는 요청을 처리하고 응답을 client로 반환함.

예시

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /app1
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              number: 80
      - path: /app2
        pathType: Prefix
        backend:
          service:
            name: app2-service
            port:
              number: 80
  tls:
  - hosts:
    - example.com
    secretName: example-tls

위 파일은 'example.com/app1'과 'example.com/app2' 경로로 들어오는 요청을 각각 'app1-service'와 'app2-service'로 라우팅하도록 설정하며, TLS를 사용해 HTTPS를 지원함.

profile
유연한 사고의 데이터 엔지니어입니다

0개의 댓글