본문 바로가기
문서 목차
QKS · Networking

Ingresses

Ingress 는 클러스터 외부에서 내부 Service로 들어오는 HTTP/HTTPS 트래픽을 라우팅하는 Kubernetes 오브젝트입니다. 호스트 이름(도메인)이나 URL 경로를 기준으로 여러 Service에 트래픽을 분산할 수 있으며, TLS 인증서를 적용하여 HTTPS를 손쉽게 설정할 수 있습니다.

QUANTUM C&S

개요

Ingress는 클러스터 외부에서 내부 Service로 들어오는 HTTP/HTTPS 트래픽을 라우팅하는 Kubernetes 오브젝트입니다. 호스트 이름(도메인)이나 URL 경로를 기준으로 여러 Service에 트래픽을 분산할 수 있으며, TLS 인증서를 적용하여 HTTPS를 손쉽게 설정할 수 있습니다.

QKS 클러스터에는 Ingress Controller가 기본으로 설치되어 있습니다.


QKS 콘솔에서 Ingress 확인

  1. 왼쪽 메뉴에서 Networking > Ingresses를 선택합니다.
  2. 네임스페이스를 선택하면 Ingress 목록이 표시됩니다.

목록에서 확인할 수 있는 정보:

  • 이름: Ingress 이름
  • 호스트: 라우팅할 도메인 이름
  • 경로: URL 경로 규칙
  • 백엔드: 트래픽이 전달되는 Service
  • TLS: HTTPS 설정 여부
  • Address: 외부에서 접근 가능한 IP 또는 도메인

기본 Ingress 설정

경로 기반 라우팅

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  namespace: production
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /api
            pathType: Prefix
            backend:
              service:
                name: api-service
                port:
                  number: 80
          - path: /
            pathType: Prefix
            backend:
              service:
                name: frontend-service
                port:
                  number: 80

호스트 기반 라우팅 (여러 도메인)

spec:
  rules:
    - host: app1.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app1-service
                port:
                  number: 80
    - host: app2.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: app2-service
                port:
                  number: 80

HTTPS(TLS) 설정

1단계: TLS Secret 생성

kubectl create secret tls my-tls-secret \
  --cert=tls.crt \
  --key=tls.key \
  -n production

2단계: Ingress에 TLS 적용

spec:
  tls:
    - hosts:
        - myapp.example.com
      secretName: my-tls-secret
  rules:
    - host: myapp.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: my-service
                port:
                  number: 80

pathType 옵션

pathType 설명 예시
Prefix 해당 경로로 시작하는 모든 요청 매칭 /api/api/v1, /api/users
Exact 정확히 일치하는 경로만 매칭 /api/api만 매칭
ImplementationSpecific Ingress Controller 구현에 따라 다름

kubectl로 관리

# Ingress 목록
kubectl get ingresses -n <namespace>

# Ingress 상세 정보
kubectl describe ingress <name> -n <namespace>

# Ingress 적용
kubectl apply -f ingress.yaml

# Ingress 삭제
kubectl delete ingress <name> -n <namespace>