1장. 라우트


1.1. 기본 경로 생성

암호화되지 않은 HTTP를 사용하는 경우, 라우트 객체를 사용하여 기본적인 경로를 생성할 수 있습니다.

1.1.1. HTTP 기반 경로 생성

다음 절차에 따라 hello-openshift 애플리케이션을 예시로 사용하여 웹 애플리케이션에 대한 간단한 HTTP 기반 경로를 생성할 수 있습니다.

공개 URL에서 애플리케이션을 호스팅할 수 있도록 경로를 생성할 수 있습니다. 해당 경로는 애플리케이션의 네트워크 보안 구성에 따라 보안될 수도 있고 보안되지 않을 수도 있습니다. HTTP 기반 경로는 기본 HTTP 라우팅 프로토콜을 사용하고 보안되지 않은 애플리케이션 포트에서 서비스를 노출하는 보안되지 않은 경로입니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • 관리자로 로그인했습니다.
  • 포트와 해당 포트의 트래픽을 수신하는 TCP 엔드포인트를 노출하는 웹 애플리케이션이 있습니다.

프로세스

  1. 다음 명령을 실행하여 hello-openshift 라는 프로젝트를 만듭니다.

    $ oc new-project hello-openshift
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 프로젝트에 포드를 만듭니다.

    $ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 hello-openshift 라는 서비스를 만듭니다.

    $ oc expose pod/hello-openshift
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 실행하여 hello-openshift 애플리케이션에 대한 보안되지 않은 경로를 만듭니다.

    $ oc expose svc hello-openshift
    Copy to Clipboard Toggle word wrap

검증

  • 생성한 경로 리소스를 확인하려면 다음 명령을 실행하세요.

    $ oc get routes -o yaml hello-openshift
    Copy to Clipboard Toggle word wrap

    생성된 보안되지 않은 경로의 YAML 정의 예시

    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      name: hello-openshift
    spec:
      host: www.example.com
      port:
        targetPort: 8080
      to:
        kind: Service
        name: hello-openshift
    Copy to Clipboard Toggle word wrap

    다음과 같습니다.

    host
    해당 서비스를 가리키는 별칭 DNS 레코드를 지정합니다. 이 필드에는 www.example.com 과 같은 유효한 DNS 이름을 입력할 수 있습니다. DNS 이름은 DNS952 하위 도메인 규칙을 따라야 합니다. 지정하지 않으면 경로 이름이 자동으로 생성됩니다.
    targetPort

    이 경로가 가리키는 서비스가 선택하는 파드의 대상 포트를 지정합니다.

    참고

    기본 수신 도메인을 표시하려면 다음 명령을 실행하세요.

    $ oc get ingresses.config/cluster -o jsonpath={.spec.domain}
    Copy to Clipboard Toggle word wrap

1.1.2. 경로 기반 라우터

경로 기반 라우터는 URL과 비교할 수 있는 경로 구성 요소를 지정하며 이를 위해 라우트의 트래픽이 HTTP 기반이어야 합니다. 따라서 동일한 호스트 이름을 사용하여 여러 경로를 제공할 수 있으며 각각 다른 경로가 있습니다. 라우터는 가장 구체적인 경로를 기반으로 하는 라우터와 일치해야 합니다.

다음 표에서는 경로 및 액세스 가능성을 보여줍니다.

Expand
표 1.1. 경로 가용성
경로비교 대상액세스 가능

www.example.com/test

www.example.com/test

제공됨

www.example.com

없음

www.example.com/testwww.example.com

www.example.com/test

제공됨

www.example.com

제공됨

www.example.com

www.example.com/text

예 (경로가 아닌 호스트에 의해 결정됨)

www.example.com

제공됨

경로가 있는 보안되지 않은 라우터

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  name: route-unsecured
spec:
  host: www.example.com
  path: "/test" 
1

  to:
    kind: Service
    name: service-name
Copy to Clipboard Toggle word wrap

1
경로는 경로 기반 라우터에 대해 추가된 유일한 속성입니다.
참고

라우터가 해당 경우 TLS를 종료하지 않고 요청 콘텐츠를 읽을 수 없기 때문에 패스스루 TLS를 사용할 때 경로 기반 라우팅을 사용할 수 없습니다.

1.1.3. Ingress Controller 샤딩을 위한 경로 생성

경로를 사용하면 URL에서 애플리케이션을 호스팅할 수 있습니다. Ingress 컨트롤러 분할은 여러 Ingress 컨트롤러 간에 들어오는 트래픽 부하를 균형 있게 조절하는 데 도움이 됩니다. 또한 특정 Ingress Controller로 트래픽을 격리할 수도 있습니다. 예를 들어, 회사 A는 하나의 Ingress 컨트롤러로, 회사 B는 다른 Ingress 컨트롤러로 이동합니다.

다음 절차에서는 hello-openshift 애플리케이션을 예로 들어 Ingress Controller 샤딩에 대한 경로를 만드는 방법을 설명합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • 프로젝트 관리자로 로그인했습니다.
  • 포트와 해당 포트의 트래픽을 수신하는 HTTP 또는 TLS 엔드포인트를 노출하는 웹 애플리케이션이 있습니다.
  • 샤딩을 위해 Ingress Controller를 구성했습니다.

프로세스

  1. 다음 명령을 실행하여 hello-openshift 라는 프로젝트를 만듭니다.

    $ oc new-project hello-openshift
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 프로젝트에 포드를 만듭니다.

    $ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 hello-openshift 라는 서비스를 만듭니다.

    $ oc expose pod/hello-openshift
    Copy to Clipboard Toggle word wrap
  4. hello-openshift-route.yaml 이라는 경로 정의를 만듭니다.

    샤딩을 위해 생성된 경로의 YAML 정의

    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      labels:
        type: sharded 
    1
    
      name: hello-openshift-edge
      namespace: hello-openshift
    spec:
      subdomain: hello-openshift 
    2
    
      tls:
        termination: edge
      to:
        kind: Service
        name: hello-openshift
    Copy to Clipboard Toggle word wrap

    1
    레이블 키와 해당 레이블 값은 모두 Ingress Controller에 지정된 것과 일치해야 합니다. 이 예에서 Ingress Controller에는 레이블 키와 값 유형이 있습니다: sharded .
    2
    경로는 하위 도메인 필드의 값을 사용하여 노출됩니다. 하위 도메인 필드를 지정할 때는 호스트 이름을 설정하지 않아야 합니다. 호스트하위 도메인 필드를 모두 지정하면 경로는 호스트 필드의 값을 사용하고 하위 도메인 필드는 무시합니다.
  5. 다음 명령을 실행하여 hello-openshift-route.yaml을 사용하여 hello-openshift 애플리케이션에 대한 경로를 만듭니다.

    $ oc -n hello-openshift create -f hello-openshift-route.yaml
    Copy to Clipboard Toggle word wrap

검증

  • 다음 명령을 사용하여 경로 상태를 확인하세요.

    $ oc -n hello-openshift get routes/hello-openshift-edge -o yaml
    Copy to Clipboard Toggle word wrap

    결과적으로 생성된 Route 리소스는 다음과 유사해야 합니다.

    출력 예

    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      labels:
        type: sharded
      name: hello-openshift-edge
      namespace: hello-openshift
    spec:
      subdomain: hello-openshift
      tls:
        termination: edge
      to:
        kind: Service
        name: hello-openshift
    status:
      ingress:
      - host: hello-openshift.<apps-sharded.basedomain.example.net> 
    1
    
        routerCanonicalHostname: router-sharded.<apps-sharded.basedomain.example.net> 
    2
    
        routerName: sharded 
    3
    Copy to Clipboard Toggle word wrap

    1
    Ingress 컨트롤러 또는 라우터가 경로를 노출하는 데 사용하는 호스트 이름입니다. 호스트 필드의 값은 Ingress Controller에 의해 자동으로 결정되며 해당 도메인을 사용합니다. 이 예에서 Ingress Controller의 도메인은 <apps-sharded.basedomain.example.net> 입니다.
    2
    Ingress Controller의 호스트 이름입니다. 호스트 이름이 설정되지 않으면 경로는 대신 하위 도메인을 사용할 수 있습니다. 하위 도메인을 지정하면 경로를 노출하는 Ingress Controller의 도메인이 자동으로 사용됩니다. 경로가 여러 Ingress 컨트롤러에 의해 노출되는 경우 해당 경로는 여러 URL에서 호스팅됩니다.
    3
    Ingress Controller의 이름입니다. 이 예에서 Ingress Controller의 이름은 sharded 입니다.

1.1.4. Ingress 오브젝트를 통해 경로 생성

일부 에코시스템 구성 요소는 Ingress 리소스와 통합되지만 경로 리소스와는 통합되지 않습니다. 이러한 경우를 처리하기 위해 OpenShift Container Platform에서는 Ingress 오브젝트가 생성될 때 관리형 경로 오브젝트를 자동으로 생성합니다. 이러한 경로 오브젝트는 해당 Ingress 오브젝트가 삭제될 때 삭제됩니다.

프로세스

  1. OpenShift Container Platform 콘솔에서 또는 oc create 명령을 입력하여 Ingress 오브젝트를 정의합니다.

    Ingress의 YAML 정의

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: frontend
      annotations:
        route.openshift.io/termination: "reencrypt" 
    1
    
        route.openshift.io/destination-ca-certificate-secret: secret-ca-cert 
    2
    
    spec:
      rules:
      - host: www.example.com 
    3
    
        http:
          paths:
          - backend:
              service:
                name: frontend
                port:
                  number: 443
            path: /
            pathType: Prefix
      tls:
      - hosts:
        - www.example.com
        secretName: example-com-tls-certificate
    Copy to Clipboard Toggle word wrap

    1
    Ingress에는 Route에 대한 필드가 없으므로 route.openshift.io/termination 주석을 사용하여 spec.tls.termination 필드를 구성할 수 있습니다. 허용되는 값은 edge, passthrough, reencrypt입니다. 다른 모든 값은 자동으로 무시됩니다. 주석 값이 설정되지 않으면 edge가 기본 경로입니다. 기본 에지 경로를 구현하려면 TLS 인증서 세부 정보를 템플릿 파일에 정의해야 합니다.
    3
    Ingress 객체를 사용할 때는 경로로 작업할 때와 달리 명시적인 호스트 이름을 지정해야 합니다. <host_name>.<cluster_ingress_domain> 구문(예: apps.openshiftdemos.com )을 사용하면 클러스터에 대한 *.<cluster_ingress_domain> 와일드카드 DNS 레코드와 제공 인증서를 활용할 수 있습니다. 그렇지 않은 경우, 선택한 호스트 이름에 대한 DNS 레코드가 있는지 확인해야 합니다.
    1. route.openshift.io/termination 주석에 passthrough 값을 지정하는 경우 path''로 설정하고 spec에서 pathTypeImplementationSpecific으로 설정합니다.

        spec:
          rules:
          - host: www.example.com
            http:
              paths:
              - path: ''
                pathType: ImplementationSpecific
                backend:
                  service:
                    name: frontend
                    port:
                      number: 443
      Copy to Clipboard Toggle word wrap
      $ oc apply -f ingress.yaml
      Copy to Clipboard Toggle word wrap
    2
    route.openshift.io/destination-ca-certificate-secret 은 Ingress 객체에서 사용자 정의 대상 인증서(CA)로 경로를 정의하는 데 사용할 수 있습니다. 주석은 생성된 경로에 삽입될 쿠버네티스 비밀인 secret-ca-cert를 참조합니다.
    1. 수신 객체에서 대상 CA가 있는 경로 객체를 지정하려면 비밀의 data.tls.crt 지정자에 PEM 인코딩 형식의 인증서가 있는 kubernetes.io/tls 또는 Opaque 유형 비밀을 만들어야 합니다.
  2. 노드를 나열합니다.

    $ oc get routes
    Copy to Clipboard Toggle word wrap

    결과에는 이름이 frontend-로 시작하는 자동 생성 경로가 포함됩니다.

    NAME             HOST/PORT         PATH    SERVICES    PORT    TERMINATION          WILDCARD
    frontend-gnztq   www.example.com           frontend    443     reencrypt/Redirect   None
    Copy to Clipboard Toggle word wrap

    이 경로를 살펴보면 다음과 같습니다.

    자동 생성 경로의 YAML 정의

    apiVersion: route.openshift.io/v1
    kind: Route
    metadata:
      name: frontend-gnztq
      ownerReferences:
      - apiVersion: networking.k8s.io/v1
        controller: true
        kind: Ingress
        name: frontend
        uid: 4e6c59cc-704d-4f44-b390-617d879033b6
    spec:
      host: www.example.com
      path: /
      port:
        targetPort: https
      tls:
        certificate: |
          -----BEGIN CERTIFICATE-----
          [...]
          -----END CERTIFICATE-----
        insecureEdgeTerminationPolicy: Redirect
        key: |
          -----BEGIN RSA PRIVATE KEY-----
          [...]
          -----END RSA PRIVATE KEY-----
        termination: reencrypt
        destinationCACertificate: |
          -----BEGIN CERTIFICATE-----
          [...]
          -----END CERTIFICATE-----
      to:
        kind: Service
        name: frontend
    Copy to Clipboard Toggle word wrap

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat