9.3. Knative 서비스의 경로 구성
OpenShift Container Platform에서 TLS 인증서를 사용하도록 Knative 서비스를 구성하려면 OpenShift Serverless Operator의 서비스 경로 자동 생성 기능을 비활성화하고 대신 해당 서비스에 대한 경로를 수동으로 생성해야 합니다.
다음 절차를 완료하면 knative-serving-ingress
네임스페이스의 기본 OpenShift Container Platform 경로가 생성되지 않습니다. 그러나 애플리케이션의 Knative 경로는 이 네임스페이스에 계속 생성됩니다.
9.3.1. Knative 서비스에 대한 OpenShift Container Platform 경로 구성
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving 구성 요소가 OpenShift Container Platform 클러스터에 설치되어 있어야 합니다.
-
OpenShift CLI(
oc
)를 설치합니다.
프로세스
serving.knative.openshift.io/disableRoute=true
주석이 포함된 Knative 서비스를 생성합니다.중요serving.knative.openshift.io/disableRoute=true
주석은 OpenShift Serverless에서 경로를 자동으로 생성하지 않도록 지시합니다. 그러나 서비스는 여전히 URL을 표시하며Ready
상태에 도달합니다. 이 URL은 URL의 호스트 이름과 동일한 호스트 이름으로 자체 경로를 생성할 때까지 외부에서 작동하지 않습니다.Knative
서비스
리소스를 생성합니다.리소스 예
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: <service_name> annotations: serving.knative.openshift.io/disableRoute: "true" spec: template: spec: containers: - image: <image> ...
Service
리소스를 적용합니다.$ oc apply -f <filename>
선택 사항:
kn service create
명령을 사용하여 Knative 서비스를 생성합니다.kn
명령 예제$ kn service create <service_name> \ --image=gcr.io/knative-samples/helloworld-go \ --annotation serving.knative.openshift.io/disableRoute=true
서비스에 OpenShift Container Platform 경로가 생성되지 않았는지 확인합니다.
명령 예
$ $ oc get routes.route.openshift.io \ -l serving.knative.openshift.io/ingressName=$KSERVICE_NAME \ -l serving.knative.openshift.io/ingressNamespace=$KSERVICE_NAMESPACE \ -n knative-serving-ingress
다음 출력이 표시됩니다.
No resources found in knative-serving-ingress namespace.
knative-serving-ingress
네임스페이스에Route
리소스를 생성합니다.apiVersion: route.openshift.io/v1 kind: Route metadata: annotations: haproxy.router.openshift.io/timeout: 600s 1 name: <route_name> 2 namespace: knative-serving-ingress 3 spec: host: <service_host> 4 port: targetPort: http2 to: kind: Service name: kourier weight: 100 tls: insecureEdgeTerminationPolicy: Allow termination: edge 5 key: |- -----BEGIN PRIVATE KEY----- [...] -----END PRIVATE KEY----- certificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE----- caCertificate: |- -----BEGIN CERTIFICATE----- [...] -----END CERTIFICATE---- wildcardPolicy: None
- 1
- OpenShift Container Platform 경로에 대한 타임아웃 값입니다.
max-revision-timeout-seconds
설정과 동일한 값으로 설정해야 합니다(기본값:600s
). - 2
- OpenShift Container Platform 경로의 이름입니다.
- 3
- OpenShift Container Platform 경로의 네임스페이스입니다.
knative-serving-ingress
여야 합니다. - 4
- 외부 액세스를 위한 호스트 이름입니다. 이 값을
<service_name>-<service_namespace>.<domain>
으로 설정할 수 있습니다. - 5
- 사용할 인증서입니다. 현재는
edge
종료만 지원됩니다.
Route
리소스를 적용합니다.$ oc apply -f <filename>