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. 다음 명령을 실행하여 프로젝트에 Pod를 생성합니다.

    $ 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 레코드를 지정합니다. 이 필드는 유효한 DNS 이름(예: www.example.com )일 수 있습니다. DNS 이름은 DNS952 하위 도메인 규칙을 따라야 합니다. 지정하지 않으면 경로 이름이 자동으로 생성됩니다.
    targetPort

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

    참고

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

    $ 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 컨트롤러 샤딩의 경로 생성

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

다음 절차에서는 hello-openshift 애플리케이션을 예로 사용하여 Ingress 컨트롤러 샤딩에 대한 경로를 생성하는 방법을 설명합니다.

사전 요구 사항

  • OpenShift CLI(oc)를 설치합니다.
  • 프로젝트 관리자로 로그인했습니다.
  • 포트에서 트래픽을 수신하는 포트와 HTTP 또는 TLS 끝점을 노출하는 웹 애플리케이션이 있습니다.
  • 분할을 위해 Ingress 컨트롤러를 구성했습니다.

프로세스

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

    $ oc new-project hello-openshift
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 프로젝트에 Pod를 생성합니다.

    $ 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 컨트롤러에 지정된 라벨 값과 일치해야 합니다. 이 예에서 Ingress 컨트롤러에는 레이블 키와 값 type: sharded 가 있습니다.
    2
    경로는 하위 도메인 필드의 값을 사용하여 노출됩니다. 하위 도메인 필드를 지정하는 경우 호스트 이름을 설정되지 않은 상태로 두어야 합니다. host subdomain 필드를 모두 지정하면 경로는 host 필드의 값을 사용하고 하위 도메인 필드를 무시합니다.
  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 컨트롤러 또는 라우터의 호스트 이름은 을 사용하여 경로를 노출합니다. host 필드의 값은 Ingress 컨트롤러에서 자동으로 결정하고 해당 도메인을 사용합니다. 이 예에서 Ingress 컨트롤러의 도메인은 < apps-sharded.basedomain.example.net>입니다.
    2
    Ingress 컨트롤러의 호스트 이름입니다. 호스트 이름이 설정되지 않은 경우 경로는 하위 도메인을 대신 사용할 수 있습니다. 하위 도메인을 지정하면 경로를 노출하는 Ingress 컨트롤러의 도메인을 자동으로 사용합니다. 여러 Ingress 컨트롤러에서 경로를 노출하면 경로가 여러 URL에서 호스팅됩니다.
    3
    Ingress 컨트롤러의 이름입니다. 이 예에서 Ingress 컨트롤러에는 shard된 이름이 있습니다.

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
    Ingress 오브젝트에서 route.openshift.io/destination-ca-certificate-secret 을 사용하여 사용자 정의 대상 인증서(CA)로 경로를 정의할 수 있습니다. 이 주석은 생성된 경로에 삽입될 kubernetes 시크릿 secret secret-ca-cert 를 참조합니다.
    1. Ingress 오브젝트에서 대상 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