1.8. 경로 및 수신


경로와 인그레스는 모두 애플리케이션을 외부 트래픽에 노출하는 데 사용됩니다. 그러나 약간 다른 목적을 지원하며 기능이 다릅니다.

1.8.1. 라우트

경로는 외부 클라이언트가 이름으로 서비스에 도달할 수 있도록 호스트 이름에 서비스를 노출하는 OpenShift Container Platform 리소스에 고유합니다.

경로는 호스트 이름을 서비스에 매핑합니다. 경로 이름 매핑을 사용하면 외부 클라이언트가 호스트 이름을 사용하여 서비스에 액세스할 수 있습니다. 경로는 서비스로 전송되는 트래픽에 대한 로드 밸런싱을 제공합니다. 경로에 사용되는 호스트 이름은 라우터의 IP 주소로 확인됩니다. 그런 다음 경로는 트래픽을 적절한 서비스로 전달합니다. 또한 경로는 SSL/TLS를 사용하여 클라이언트와 서비스 간의 트래픽을 암호화할 수도 있습니다.

1.8.2. Ingress

Ingress는 로드 밸런싱, SSL/TLS 종료 및 이름 기반 가상 호스팅을 포함하여 고급 라우팅 기능을 제공하는 리소스입니다. Ingress에 대한 몇 가지 주요 사항은 다음과 같습니다.

  • HTTP/HTTPS 라우팅: Ingress를 사용하여 클러스터 내 서비스에 대한 HTTP 및 HTTPS 트래픽을 라우팅하는 규칙을 정의할 수 있습니다.
  • 로드 밸런싱: NGINX 또는 HAProxy와 같은 Ingress 컨트롤러는 사용자 정의 규칙을 기반으로 트래픽 라우팅 및 로드 밸런싱을 관리합니다.
  • SSL/TLS 종료: SSL/TLS 종료는 백엔드 서비스에 전달하기 전에 수신되는 SSL/TLS 트래픽을 해독하는 프로세스입니다.
  • 다중 도메인 및 경로: Ingress는 여러 도메인 및 경로에 대한 라우팅 트래픽을 지원합니다.

1.8.3. 경로 및 수신 비교

경로는 수신에 비해 유연성 및 고급 기능을 제공합니다. 이렇게 하면 복잡한 라우팅 시나리오에 적합한 경로가 생성됩니다. 특히 기본 외부 액세스 요구 사항을 위해 경로를 설정하고 사용하는 것이 더 쉽습니다. Ingress는 종종 간단하고 간단한 외부 액세스에 사용됩니다. 경로는 고급 라우팅 및 SSL/TLS 종료가 필요한 더 복잡한 시나리오에 사용됩니다.

1.8.4. 예: 웹 애플리케이션을 노출하도록 경로 및 수신 구성

웹 애플리케이션은 OpenShift Container Platform 클러스터에서 실행되고 있습니다. 외부 사용자가 애플리케이션에 액세스할 수 있도록 설정하려고 합니다. 애플리케이션은 특정 도메인 이름을 통해 액세스할 수 있어야 하며 TLS를 사용하여 트래픽을 안전하게 암호화해야 합니다. 다음 예제에서는 웹 애플리케이션을 외부 트래픽에 안전하게 노출하도록 경로와 수신을 모두 구성하는 방법을 보여줍니다.

1.8.4.1. 경로 구성

  1. 새 프로젝트를 생성합니다.

    $ oc new-project webapp-project
    Copy to Clipboard Toggle word wrap
  2. 웹 애플리케이션을 배포합니다.

    $ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git --name=webapp
    Copy to Clipboard Toggle word wrap
  3. 경로를 사용하여 서비스를 노출합니다.

    $ oc expose svc/webapp --hostname=webapp.example.com
    Copy to Clipboard Toggle word wrap
  4. TLS를 사용하여 경로를 보호합니다.

    1. 인증서 및 키를 사용하여 TLS 시크릿을 생성합니다.

      $ oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key
      Copy to Clipboard Toggle word wrap
    2. TLS 시크릿을 사용하도록 경로를 업데이트합니다.

      $ oc patch route/webapp -p '{"spec":{"tls":{"termination":"edge","certificate":"path/to/tls.crt","key":"path/to/tls.key"}}}'
      Copy to Clipboard Toggle word wrap

1.8.4.2. 수신 구성

  1. ingress 리소스를 생성합니다.

    Ingress 컨트롤러가 클러스터에 설치되어 실행 중인지 확인합니다.

  2. 웹 애플리케이션에 대한 서비스를 생성합니다. 아직 생성되지 않은 경우 애플리케이션을 서비스로 노출합니다.

    apiVersion: v1
    kind: Service
    metadata:
      name: webapp-service
      namespace: webapp-project
    spec:
      selector:
        app: webapp
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
    Copy to Clipboard Toggle word wrap
  3. ingress 리소스를 생성합니다.

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: webapp-ingress
      namespace: webapp-project
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
        - host: webapp.example.com
          http:
            paths:
              - path: /
                pathType: Prefix
                backend:
                  service:
                    name: webapp-service
                    port:
                      number: 80
    Copy to Clipboard Toggle word wrap
  4. TLS를 사용하여 수신을 보호합니다.

    1. 인증서 및 키를 사용하여 TLS 시크릿을 생성합니다.

      $ oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key -n webapp-project
      Copy to Clipboard Toggle word wrap
    2. TLS 시크릿을 사용하도록 수신 리소스를 업데이트합니다.

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: webapp-ingress
        namespace: webapp-project
      spec:
        tls: 
      1
      
          - hosts:
              - webapp.example.com
            secretName: webapp-tls 
      2
      
        rules:
          - host: webapp.example.com
            http:
              paths:
                - path: /
                  pathType: Prefix
                  backend:
                    service:
                      name: webapp-service
                      port:
                        number: 80
      Copy to Clipboard Toggle word wrap
      1
      TLS 섹션에서는 TLS 설정을 지정합니다.
      2
      secretName 필드는 TLS 인증서 및 키가 포함된 Kubernetes 시크릿의 이름입니다.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat