Knative serving 설치를 설정하고 구성하는 방법을 알아봅니다.
시작하기 전에
GKE 클러스터에 Knative serving이 설치되어 있어야 합니다. GKE 클러스터 기본 요건과 Knative serving 설치 방법에 대한 자세한 내용은 설치 가이드를 참조하세요.
GKE용 워크로드 아이덴티티 제휴로 인증 설정
GKE용 워크로드 아이덴티티 제휴를 사용하여 Knative serving 서비스를 Google Cloud API 및 서비스에 인증할 수 있습니다. 서비스를 클러스터에 배포하기 전 GKE용 워크로드 아이덴티티 제휴를 설정해야 합니다. 그렇지 않으면 GKE용 워크로드 아이덴티티 제휴를 사용 설정하기 전 클러스터에 존재하는 각 서비스를 마이그레이션해야 합니다. GKE용 워크로드 아이덴티티 제휴 사용에 대해 자세히 알아보기
GKE용 워크로드 아이덴티티 제휴로 측정항목 사용 설정
요청 수 또는 요청 지연 시간 같은 측정항목을 Google Cloud Observability에 사용 설정하려면 Cloud Monitoring에 대한 쓰기 권한을 수동으로 설정해야 합니다. 자세한 내용은 GKE용 워크로드 아이덴티티 제휴로 측정항목 사용 설정을 참고하세요.
HTTPS 및 커스텀 도메인 구성
HTTPS를 사용 설정하고 커스텀 도메인을 설정하려면 다음 페이지를 참조하세요.
Cloud Service Mesh 설정
Knative serving용 Cloud Service Mesh 옵션을 구성하려면 클러스터 내 제어 영역 옵션 및 비공개 내부 네트워크 설정 방법을 참조하세요.
비공개 내부 네트워크 설정
내부 네트워크에 서비스를 배포하는 것은 내부 앱을 직원에게 제공하는 기업과 Knative serving 클러스터 외부에서 실행되는 클라이언트가 사용하는 서비스에 유용합니다. 이 구성을 사용하면 네트워크의 다른 리소스가 공개적으로 액세스할 수 없는 비공개 내부(RFC 1918) IP 주소를 사용하여 서비스와 통신할 수 있습니다.
내부 네트워크를 만들려면 공개 외부 네트워크 부하 분산기 대신 내부 TCP/UDP 부하 분산을 사용하도록 Cloud Service Mesh를 구성합니다. 그런 다음 VPC 네트워크의 내부 IP 주소에 Knative serving 서비스를 배포할 수 있습니다.
시작하기 전에
- 클러스터에 대한
admin
권한이 있어야 합니다. - 커스텀 도메인을 구성한 경우 현재 내부 부하 분산기에서 Knative serving의 관리형 TLS가 지원되지 않으므로 관리형 TLS 기능을 중지해야 합니다.
- Google Cloud CLI 버전 310.0 이상만 지원됩니다. 명령줄 도구 설정에 대한 자세한 내용은 다음을 참조하세요.
내부 부하 분산기를 설정하려면 다음 안내를 따르세요.
Cloud Service Mesh에서 내부 부하 분산기 기능을 사용 설정합니다.
내부 부하 분산기는 Cloud Service Mesh를 설치하는 중에 구성하거나 기존 설치를 업데이트하여 구성할 수 있는 선택적 기능입니다.
클러스터 내 제어 영역에서 선택적 기능 사용 설정의 단계를 따르면서
--option internal-load-balancer
스크립트 옵션을 포함합니다.--option internal-load-balancer
옵션을 지정하면 스크립트가 GitHub에서 내부 부하 분산기 사용 설정 커스텀 리소스를 자동으로 가져옵니다. 커스텀 리소스를 수정해야 하는 경우--custom_overlay
옵션을 사용하기 위한 안내를 따릅니다.다음 명령어를 실행하여 GKE 클러스터의 업데이트를 확인합니다.
kubectl -n INGRESS_NAMESPACE get svc istio-ingressgateway --watch
INGRESS_NAMESPACE를 Cloud Service Mesh 인그레스 서비스의 네임스페이스로 바꿉니다. 기본 구성을 사용하여 Cloud Service Mesh를 설치한 경우
istio-system
을 지정합니다.- 주석
cloud.google.com/load-balancer-type: Internal
을 확인하세요. - 인그레스 부하 분산기에서
IP
값을 찾아 비공개 IP 주소로 변경합니다. IP
필드에 비공개 IP 주소가 표시되면Ctrl+C
를 눌러 업데이트를 중지합니다.
- 주석
Google Cloud의 비공개 클러스터의 경우 포트를 열어야 합니다. 자세한 내용은 Cloud Service Mesh 문서의 비공개 클러스터에서 포트 열기를 참조하세요.
변경 후 내부 연결을 확인하려면 다음 안내를 따르세요.
sample
이라는 서비스를default
네임스페이스의 Knative serving에 배포합니다.gcloud run deploy sample \ --image gcr.io/knative-samples/helloworld \ --namespace default --platform gke
GKE 클러스터와 동일한 영역에서 Compute Engine 가상 머신(VM)을 만듭니다.
VM=cloudrun-gke-ilb-tutorial-vm gcloud compute instances create $VM
Istio 인그레스 게이트웨이의 비공개 IP 주소를
EXTERNAL_IP
환경 변수 및external-ip.txt
파일에 저장합니다.export EXTERNAL_IP=$(kubectl -n INGRESS_NAMESPACE get svc istio-ingressgateway \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
INGRESS_NAMESPACE를 Cloud Service Mesh 인그레스 서비스의 네임스페이스로 바꿉니다. 기본 구성을 사용하여 Cloud Service Mesh를 설치한 경우
istio-system
을 지정합니다.IP 주소가 포함된 파일을 VM에 복사합니다.
gcloud compute scp external-ip.txt $VM:~
SSH를 사용하여 VM에 연결합니다.
gcloud compute ssh $VM
SSH 세션에서 샘플 서비스를 테스트합니다.
curl -s -w'\n' -H Host:sample.default.nip.io $(cat external-ip.txt)
출력은 다음과 같습니다.
Hello World!
SSH 세션을 종료합니다.
exit
멀티 테넌트 환경 설정
멀티 테넌트 사용 사례에서는 현재 프로젝트 외부의 Google Kubernetes Engine 클러스터에 Knative serving 서비스를 배포하고 관리해야 합니다. GKE 멀티테넌시에 대한 자세한 내용은 클러스터 멀티테넌시를 참조하세요.
Knative serving에 멀티테넌시를 구성하는 방법은 교차 프로젝트 멀티테넌시를 참조하세요.