9.5. 클러스터 로컬 가용성
기본적으로 Knative 서비스는 공용 IP 주소에 게시됩니다. 공용 IP 주소에 게시된다는 것은 Knative 서비스가 공용 애플리케이션이 되어 공개적으로 액세스할 수 있는 URL이 있음을 의미합니다.
공개적으로 액세스할 수 있는 URL은 클러스터 외부에서 액세스할 수 있습니다. 그러나 개발자는 클러스터 내부에서만 액세스할 수 있는 백엔드 서비스(비공개 서비스)를 빌드해야 할 수 있습니다. 개발자는 클러스터의 개별 서비스에 networking.knative.dev/visibility=cluster-local
레이블을 지정하여 비공개로 설정할 수 있습니다.
OpenShift Serverless 1.15.0 및 최신 버전의 경우 serving.knative.dev/visibility
레이블을 더 이상 사용할 수 없습니다. 대신 networking.knative.dev/visibility
레이블을 사용하려면 기존 서비스를 업데이트해야 합니다.
9.5.1. 클러스터 가용성을 클러스터 로컬로 설정 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 클러스터에 설치되어 있습니다.
- Knative 서비스를 생성했습니다.
프로세스
networking.knative.dev/visibility=cluster-local
레블을 추가하여 서비스 가시성을 설정합니다.oc label ksvc <service_name> networking.knative.dev/visibility=cluster-local
$ oc label ksvc <service_name> networking.knative.dev/visibility=cluster-local
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
검증
다음 명령을 입력하고 출력을 검토하여 서비스의 URL이
http://<service_name>.<namespace>.svc.cluster.local
형식인지 확인합니다.oc get ksvc
$ oc get ksvc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME URL LATESTCREATED LATESTREADY READY REASON hello http://hello.default.svc.cluster.local hello-tx2g7 hello-tx2g7 True
NAME URL LATESTCREATED LATESTREADY READY REASON hello http://hello.default.svc.cluster.local hello-tx2g7 hello-tx2g7 True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.5.2. 클러스터 로컬 서비스에 대한 TLS 인증 활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 로컬 서비스의 경우 Kourier 로컬 게이트웨이 kourier-internal
이 사용됩니다. Kourier 로컬 게이트웨이에 대해 TLS 트래픽을 사용하려면 로컬 게이트웨이에서 자체 서버 인증서를 구성해야 합니다.
사전 요구 사항
- OpenShift Serverless Operator 및 Knative Serving이 설치되어 있습니다.
- 관리자 권한이 있습니다.
-
OpenShift(
oc
) CLI가 설치되어 있습니다.
프로세스
knative-serving-ingress
네임스페이스에 서버 인증서를 배포합니다.export san="knative"
$ export san="knative"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이러한 인증서가 <
app_name>.<namespace>.svc.cluster.local
에 요청을 제공하려면 제목 대체 이름(SAN) 검증이 필요합니다.루트 키 및 인증서를 생성합니다.
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \ -subj '/O=Example/CN=Example' \ -keyout ca.key \ -out ca.crt
$ openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 \ -subj '/O=Example/CN=Example' \ -keyout ca.key \ -out ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SAN 검증을 사용하는 서버 키를 생성합니다.
openssl req -out tls.csr -newkey rsa:2048 -nodes -keyout tls.key \ -subj "/CN=Example/O=Example" \ -addext "subjectAltName = DNS:$san"
$ openssl req -out tls.csr -newkey rsa:2048 -nodes -keyout tls.key \ -subj "/CN=Example/O=Example" \ -addext "subjectAltName = DNS:$san"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 서버 인증서를 생성합니다.
openssl x509 -req -extfile <(printf "subjectAltName=DNS:$san") \ -days 365 -in tls.csr \ -CA ca.crt -CAkey ca.key -CAcreateserial -out tls.crt
$ openssl x509 -req -extfile <(printf "subjectAltName=DNS:$san") \ -days 365 -in tls.csr \ -CA ca.crt -CAkey ca.key -CAcreateserial -out tls.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kourier 로컬 게이트웨이의 시크릿을 구성합니다.
이전 단계에서 생성한 인증서에서
knative-serving-ingress
네임스페이스에 보안을 배포합니다.oc create -n knative-serving-ingress secret tls server-certs \ --key=tls.key \ --cert=tls.crt --dry-run=client -o yaml | oc apply -f -
$ oc create -n knative-serving-ingress secret tls server-certs \ --key=tls.key \ --cert=tls.crt --dry-run=client -o yaml | oc apply -f -
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Kourier 게이트웨이에서 생성한 보안을 사용하도록
KnativeServing
CR(사용자 정의 리소스) 사양을 업데이트합니다.KnativeServing CR의 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Kourier 컨트롤러는 서비스를 다시 시작하지 않고 인증서를 설정하여 Pod를 다시 시작할 필요가 없도록 합니다.
클라이언트의 ca.crt
를 마운트하고 사용하여 TLS를 통해 포트 443
을 통해 Kourier 내부 서비스에 액세스할 수 있습니다.