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 다음 명령을 실행하여 프로젝트에 Pod를 생성합니다.
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 레코드를 지정합니다. 이 필드는 유효한 DNS 이름(예:
www.example.com)일 수 있습니다. DNS 이름은 DNS952 하위 도메인 규칙을 따라야 합니다. 지정하지 않으면 경로 이름이 자동으로 생성됩니다. targetPort이 경로가 가리키는 서비스에서 선택한 Pod의 대상 포트를 지정합니다.
참고기본 수신 도메인을 표시하려면 다음 명령을 실행합니다.
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 컨트롤러 샤딩의 경로 생성 링크 복사링크가 클립보드에 복사되었습니다!
경로를 사용하면 URL에서 애플리케이션을 호스팅할 수 있습니다. Ingress 컨트롤러 분할은 들어오는 트래픽 부하를 일련의 Ingress 컨트롤러 간에 균형을 유지하는 데 도움이 됩니다. 특정 Ingress 컨트롤러로 트래픽을 분리할 수도 있습니다. 예를 들어, 회사 A는 하나의 Ingress 컨트롤러로, 회사 B는 다른 Ingress 컨트롤러로 이동합니다.
다음 절차에서는 hello-openshift 애플리케이션을 예로 사용하여 Ingress 컨트롤러 샤딩에 대한 경로를 생성하는 방법을 설명합니다.
사전 요구 사항
-
OpenShift CLI(
oc)를 설치합니다. - 프로젝트 관리자로 로그인했습니다.
- 포트에서 트래픽을 수신하는 포트와 HTTP 또는 TLS 끝점을 노출하는 웹 애플리케이션이 있습니다.
- 분할을 위해 Ingress 컨트롤러를 구성했습니다.
프로세스
다음 명령을 실행하여
hello-openshift라는 프로젝트를 생성합니다.oc new-project hello-openshift
$ oc new-project hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 프로젝트에 Pod를 생성합니다.
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 컨트롤러 또는 라우터의 호스트 이름은 을 사용하여 경로를 노출합니다.
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 오브젝트가 삭제될 때 삭제됩니다.
프로세스
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
- Ingress 오브젝트에서
route.openshift.io/destination-ca-certificate-secret을 사용하여 사용자 정의 대상 인증서(CA)로 경로를 정의할 수 있습니다. 이 주석은 생성된 경로에 삽입될 kubernetes 시크릿 secretsecret-ca-cert를 참조합니다.-
Ingress 오브젝트에서 대상 CA를 사용하여 경로 오브젝트를 지정하려면 시크릿의
data.tls.crt지정자에 PEM 인코딩 형식으로 인증서를 사용하여kubernetes.io/tls또는Opaque유형 시크릿을 생성해야 합니다.
-
Ingress 오브젝트에서 대상 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