1장. 라우트
1.1. 기본 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
암호화되지 않은 HTTP를 사용하는 경우, 라우트 객체를 사용하여 기본적인 경로를 생성할 수 있습니다.
1.1.1. HTTP 기반 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 hello-openshift 애플리케이션을 예시로 사용하여 웹 애플리케이션에 대한 간단한 HTTP 기반 경로를 생성할 수 있습니다.
공개 URL에서 애플리케이션을 호스팅할 수 있도록 경로를 생성할 수 있습니다. 해당 경로는 애플리케이션의 네트워크 보안 구성에 따라 보안될 수도 있고 보안되지 않을 수도 있습니다. HTTP 기반 경로는 기본 HTTP 라우팅 프로토콜을 사용하고 보안되지 않은 애플리케이션 포트에서 서비스를 노출하는 보안되지 않은 경로입니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. - 관리자로 로그인했습니다.
- 포트와 해당 포트의 트래픽을 수신하는 TCP 엔드포인트를 노출하는 웹 애플리케이션이 있습니다.
프로세스
다음 명령을 실행하여
hello-openshift라는 프로젝트를 만듭니다.oc new-project hello-openshift
$ oc new-project hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 프로젝트에 포드를 만듭니다.
oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json
$ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
hello-openshift라는 서비스를 만듭니다.oc expose pod/hello-openshift
$ oc expose pod/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
hello-openshift애플리케이션에 대한 보안되지 않은 경로를 만듭니다.oc expose svc hello-openshift
$ oc expose svc hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
생성한
경로리소스를 확인하려면 다음 명령을 실행하세요.oc get routes -o yaml hello-openshift
$ oc get routes -o yaml hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된 보안되지 않은 경로의 YAML 정의 예시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
host-
해당 서비스를 가리키는 별칭 DNS 레코드를 지정합니다. 이 필드에는
www.example.com과 같은 유효한 DNS 이름을 입력할 수 있습니다. DNS 이름은 DNS952 하위 도메인 규칙을 따라야 합니다. 지정하지 않으면 경로 이름이 자동으로 생성됩니다. targetPort이 경로가 가리키는 서비스가 선택하는 파드의 대상 포트를 지정합니다.
참고기본 수신 도메인을 표시하려면 다음 명령을 실행하세요.
oc get ingresses.config/cluster -o jsonpath={.spec.domain}$ oc get ingresses.config/cluster -o jsonpath={.spec.domain}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.1.2. 경로 기반 라우터 링크 복사링크가 클립보드에 복사되었습니다!
경로 기반 라우터는 URL과 비교할 수 있는 경로 구성 요소를 지정하며 이를 위해 라우트의 트래픽이 HTTP 기반이어야 합니다. 따라서 동일한 호스트 이름을 사용하여 여러 경로를 제공할 수 있으며 각각 다른 경로가 있습니다. 라우터는 가장 구체적인 경로를 기반으로 하는 라우터와 일치해야 합니다.
다음 표에서는 경로 및 액세스 가능성을 보여줍니다.
| 경로 | 비교 대상 | 액세스 가능 |
|---|---|---|
| www.example.com/test | www.example.com/test | 제공됨 |
| www.example.com | 없음 | |
| www.example.com/test 및 www.example.com | www.example.com/test | 제공됨 |
| www.example.com | 제공됨 | |
| www.example.com | www.example.com/text | 예 (경로가 아닌 호스트에 의해 결정됨) |
| www.example.com | 제공됨 |
경로가 있는 보안되지 않은 라우터
- 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를 구성했습니다.
프로세스
다음 명령을 실행하여
hello-openshift라는 프로젝트를 만듭니다.oc new-project hello-openshift
$ oc new-project hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 프로젝트에 포드를 만듭니다.
oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.json
$ oc create -f https://raw.githubusercontent.com/openshift/origin/master/examples/hello-openshift/hello-pod.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
hello-openshift라는 서비스를 만듭니다.oc expose pod/hello-openshift
$ oc expose pod/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow hello-openshift-route.yaml이라는 경로 정의를 만듭니다.샤딩을 위해 생성된 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
hello-openshift-route.yaml을사용하여hello-openshift애플리케이션에 대한 경로를 만듭니다.oc -n hello-openshift create -f hello-openshift-route.yaml
$ oc -n hello-openshift create -f hello-openshift-route.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 사용하여 경로 상태를 확인하세요.
oc -n hello-openshift get routes/hello-openshift-edge -o yaml
$ oc -n hello-openshift get routes/hello-openshift-edge -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 결과적으로 생성된
Route리소스는 다음과 유사해야 합니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 오브젝트가 삭제될 때 삭제됩니다.
프로세스
OpenShift Container Platform 콘솔에서 또는 oc
create명령을 입력하여 Ingress 오브젝트를 정의합니다.Ingress의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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 레코드가 있는지 확인해야 합니다.route.openshift.io/termination주석에passthrough값을 지정하는 경우path를''로 설정하고 spec에서pathType을ImplementationSpecific으로 설정합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f ingress.yaml
$ oc apply -f ingress.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 2
route.openshift.io/destination-ca-certificate-secret은 Ingress 객체에서 사용자 정의 대상 인증서(CA)로 경로를 정의하는 데 사용할 수 있습니다. 주석은 생성된 경로에 삽입될 쿠버네티스 비밀인secret-ca-cert를참조합니다.-
수신 객체에서 대상 CA가 있는 경로 객체를 지정하려면 비밀의
data.tls.crt지정자에 PEM 인코딩 형식의 인증서가 있는kubernetes.io/tls또는Opaque유형 비밀을 만들어야 합니다.
-
수신 객체에서 대상 CA가 있는 경로 객체를 지정하려면 비밀의
노드를 나열합니다.
oc get routes
$ oc get routesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 결과에는 이름이
frontend-로 시작하는 자동 생성 경로가 포함됩니다.NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD frontend-gnztq www.example.com frontend 443 reencrypt/Redirect None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD frontend-gnztq www.example.com frontend 443 reencrypt/Redirect NoneCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 경로를 살펴보면 다음과 같습니다.
자동 생성 경로의 YAML 정의
Copy to Clipboard Copied! Toggle word wrap Toggle overflow