0Pricing
Kubernetes Basics · 강의

외부 액세스를 위한 Ingress

Ingress를 구성하여 서비스에 대한 외부 액세스를 관리하고 HTTP/S 라우팅과 부하 분산을 제공하세요.

외부 액세스를 위한 Ingress은(는) CoddyKit의 무료 Kubernetes Basics 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Kubernetes Basics 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

NodePort 및 LoadBalancer를 넘어서

애플리케이션을 외부에 노출하기 위해 NodePort와 LoadBalancer 같은 다양한 쿠버네티스 서비스 유형을 살펴보았습니다.

이러한 유형은 유용하지만, 외부 액세스 요구 사항이 복잡해지면 관리가 번거로워질 수 있습니다. 특히 하나의 IP 주소에서 여러 애플리케이션이나 API를 특정 라우팅 규칙과 함께 호스팅해야 할 때 그렇습니다.

이때 더 강력하고 유연한 해결책을 제공하는 인그레스를 사용할 수 있습니다.

쿠버네티스 인그레스 소개

인그레스는 클러스터 내 서비스에 대한 외부 액세스를 관리하는 쿠버네티스 API 객체이며, 주로 HTTP 및 HTTPS 트래픽에 사용됩니다.

  • 외부 요청을 위한 단일 진입점 역할을 합니다.
  • 호스트 이름이나 URL 경로를 기준으로 HTTP/S 라우팅을 수행할 수 있습니다.
  • SSL/TLS 종료와 로드 밸런싱 같은 기능도 제공할 수 있습니다.

인그레스를 웹 트래픽을 올바른 내부 서비스로 전달하는 지능형 트래픽 컨트롤러라고 생각해 보세요.

인그레스 컨트롤러

인그레스 리소스 자체는 규칙 모음일 뿐이며 트래픽을 직접 처리하지 않습니다. 인그레스를 실제로 작동시키려면 클러스터에서 실행 중인 인그레스 컨트롤러가 필요합니다.

인그레스 컨트롤러는 인그레스 리소스를 감시하고 정의된 규칙에 따라 외부 로드 밸런서(또는 역방향 프록시)를 구성합니다.

널리 사용되는 인그레스 컨트롤러로는 엔진엑스, 트래픽, 그리고 Google Cloud용 GCE 인그레스나 AWS 로드 밸런서 컨트롤러 같은 클라우드 전용 컨트롤러가 있습니다.

인그레스 규칙 작동 방식

인그레스는 클러스터 내부의 특정 백엔드 서비스로 들어오는 외부 요청을 연결하는 규칙을 정의합니다. 이러한 규칙에는 일반적으로 다음 항목이 포함됩니다.

  • 호스트: 도메인 이름(예: www.my-app.com)입니다.
  • 경로: URL 경로(예: /api, /blog)입니다.
  • 백엔드 서비스: 트래픽을 전달할 쿠버네티스 서비스와 포트입니다.

인그레스 컨트롤러는 들어오는 모든 요청에 대해 이러한 규칙을 평가하여 올바른 대상을 결정합니다.

인그레스 YAML 작성

다른 쿠버네티스 리소스와 마찬가지로 인그레스는 YAML 매니페스트를 사용하여 정의합니다. 다음은 주요 필드를 보여 주는 기본 구조입니다.

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

간단한 경로 기반 인그레스

myapp.example.com의 루트 경로(/)로 들어오는 모든 트래픽을 포트 80의 my-web-service라는 서비스로 라우팅하는 인그레스 리소스를 만들어 보겠습니다.

이 인그레스를 적용하기 전에 클러스터에서 my-web-service라는 이름의 디플로이먼트와 서비스가 실행 중인지 확인하세요.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: basic-app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: my-web-service
            port:
              number: 80

인그레스 배포

인그레스 리소스를 배포하려면 YAML을 파일(예: basic-ingress.yaml)로 저장한 후 kubectl apply를 사용합니다.

kubectl apply -f basic-ingress.yaml

kubectl get ingress를 사용하여 인그레스 상태를 확인할 수 있습니다. 그러면 인그레스 컨트롤러가 이러한 규칙에 따라 외부 로드 밸런서를 구성합니다.

테스트하려면 일반적으로 로컬 /etc/hosts 파일(또는 DNS)을 수정하여 myapp.example.com이 인그레스 컨트롤러의 외부 IP 주소를 가리키도록 해야 합니다.

호스트 기반 라우팅 예시

인그레스는 서로 다른 호스트 이름을 사용하여 하나의 외부 IP 주소에서 여러 애플리케이션을 호스팅하는 데 적합합니다. 여기서는 app1.example.com이 service-app1로 라우팅되고, app2.example.com이 service-app2로 라우팅됩니다.

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

여러 경로, 하나의 호스트

같은 호스트 이름의 서로 다른 URL 경로를 각기 다른 백엔드 서비스로 라우팅할 수도 있습니다. 이는 마이크로서비스 아키텍처나 단일 애플리케이션의 여러 영역에 적합합니다.

예를 들어 api.example.com/users에 대한 요청은 users-service로 전달되고, api.example.com/products에 대한 요청은 products-service로 전달됩니다.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: path-routing-ingress
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /users
        pathType: Prefix
        backend:
          service:
            name: users-service
            port:
              number: 80
      - path: /products
        pathType: Prefix
        backend:
          service:
            name: products-service
            port:
              number: 80

인그레스 목적 확인

다음 중 쿠버네티스 인그레스를 사용하는 주요 이점은 무엇인가요?

복습: 스마트 라우팅을 위한 인그레스

잘하셨습니다! 외부 사용자가 애플리케이션과 상호 작용하는 방식을 관리하는 핵심 구성 요소인 쿠버네티스 인그레스에 대해 배웠습니다.

  • 인그레스는 호스트 이름과 URL 경로를 기준으로 유연한 HTTP/S 라우팅을 제공합니다.
  • 인그레스 규칙을 감시하고 라우팅을 구성하려면 인그레스 컨트롤러(예: 엔진엑스)가 필요합니다.
  • 단일 외부 IP 주소를 통해 여러 서비스를 간편하게 노출하므로 클러스터를 더 효율적이고 관리하기 쉽게 만들 수 있습니다.

인그레스를 능숙하게 활용하는 것은 견고하고 접근성 높은 클라우드 네이티브 애플리케이션을 구축하는 데 중요합니다!

자주 묻는 질문

“외부 액세스를 위한 Ingress” 강의는 무료인가요?

네 — “외부 액세스를 위한 Ingress” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Kubernetes Basics 강의 전체를 잠금 해제할 수 있습니다. Kubernetes Basics 강의에는 총 4개의 강의가 포함되어 있습니다.

“외부 액세스를 위한 Ingress”에서 뭘 배우나요?

Ingress를 구성하여 서비스에 대한 외부 액세스를 관리하고 HTTP/S 라우팅과 부하 분산을 제공하세요. 브라우저에서 직접 실행하는 실습 코드로 Kubernetes Basics을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Kubernetes Basics을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Kubernetes Basics은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“외부 액세스를 위한 Ingress” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Kubernetes Basics 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Kubernetes Basics 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 서비스를 활용한 앱 노출
  2. 서비스 유형: ClusterIP, NodePort, LoadBalancer
  3. 외부 액세스를 위한 Ingress
  4. DNS와 서비스 검색
← Kubernetes Basics(으)로 돌아가기