Certified Kubernetes Administration - 75
2024-06-22
- Kubernetes
- Cloud
Kubernetes Ingress 정리
Ingress 개요
Ingress는 Kubernetes 클러스터 내의 여러 서비스에 대한 외부 접근을 관리하는 역할을 합니다. Ingress를 통해 URL 경로 기반의 라우팅, SSL/TLS 설정, 호스트 기반의 라우팅 등을 구성할 수 있습니다.
Ingress와 서비스의 차이
-
서비스: 클러스터 내부에서 파드 간의 통신을 관리합니다.
ClusterIP
,NodePort
,LoadBalancer
등의 타입이 있으며, 외부 접근을 위해NodePort
나LoadBalancer
를 사용합니다. -
Ingress: 단일 진입점을 통해 여러 서비스로의 라우팅을 관리합니다. 일반적으로 L7 (애플리케이션 레벨) 로드 밸런서를 사용하여 URL 경로 기반의 라우팅을 지원합니다.
Ingress 컨트롤러
Ingress 컨트롤러는 Ingress 리소스를 해석하고 적절한 라우팅 규칙을 설정하는 역할을 합니다. Kubernetes에는 기본적으로 Ingress 컨트롤러가 포함되어 있지 않으므로, 직접 배포해야 합니다. 대표적인 Ingress 컨트롤러는 다음과 같습니다:
-
Nginx: 가장 널리 사용되는 Ingress 컨트롤러 중 하나로, Kubernetes 프로젝트에서 공식 지원합니다.
-
GCE: Google Cloud Platform에서 제공하는 L7 HTTP 로드 밸런서입니다.
-
Contour, HAProxy, Traefik, Istio: 다양한 기능과 설정을 지원하는 다른 Ingress 컨트롤러들입니다.
Ingress 설정 예시
-
단일 백엔드 설정
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-wear spec: rules: - host: myonlinestore.com http: paths: - path: /wear pathType: Prefix backend: service: name: wear-service port: number: 80
-
여러 경로 설정
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-multiple spec: rules: - host: myonlinestore.com http: paths: - path: /wear pathType: Prefix backend: service: name: wear-service port: number: 80 - path: /watch pathType: Prefix backend: service: name: watch-service port: number: 80
-
호스트 기반 라우팅
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-host-based spec: rules: - host: wear.myonlinestore.com http: paths: - path: / pathType: Prefix backend: service: name: wear-service port: number: 80 - host: watch.myonlinestore.com http: paths: - path: / pathType: Prefix backend: service: name: watch-service port: number: 80
Ingress 리소스 생성 명령
- 명령어 사용 예시
kubectl create ingress ingress-test --rule="wear.myonlinestore.com/wear*=wear-service:80"
Ingress 리소스와 URL 리라이트
- URL 리라이트 옵션을 통해 사용자 요청 URL을 백엔드 서비스에 맞게 변환할 수 있습니다.
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: test-ingress namespace: critical-space annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - http: paths: - path: /pay pathType: Prefix backend: service: name: pay-service port: number: 8282
이러한 설정을 통해 Ingress를 사용하여 클러스터 내 다양한 서비스로의 접근을 효율적으로 관리할 수 있습니다. Ingress는 특히 대규모 애플리케이션에서 서비스 라우팅, SSL/TLS 설정, 로드 밸런싱 등을 단순화하는 데 유용합니다.
Certified ...
Certified ...