이 페이지에서는 관리형 TLS 인증서 기능을 사용하지 않는 경우에 자체 SSL/TLS 인증서를 사용하도록 Cloud Run for Anthos를 설정하는 방법을 설명합니다.
Istio 인그레스 게이트웨이는 인증서를 Kubernetes 보안 비밀에 저장하고 Istio 인그레스 게이트웨이 사양에 지정한 후에 인증서에서 제공되는 TLS 프로토콜을 지원할 수 있습니다.
시작하기 전에
이 안내에서는 자체 TLS 인증서가 이미 있다고 가정합니다.
TLS 인증서/비공개 키를 Kubernetes 보안 비밀로 저장하기
인증서를 보안 비밀로 저장하려면 다음 안내를 따르세요.
인증서를 현재 디렉터리에 복사합니다.
다음 명령어를 사용하여 인증서를 저장하는 보안 비밀을 만듭니다. 여기서
privkey.pem
에는 인증서 비공개 키가 포함되고fullchain.pem
에는 공개 인증서가 포함됩니다.kubectl create --namespace gke-system secret tls SECRET_NAME \ --key privkey.pem \ --cert fullchain.pem
TLS 인증서를 Istio 인그레스 게이트웨이로 지정
TLS 인증서가 포함된 Kubernetes 보안 비밀을 사용하도록 Istio 인그레스 게이트웨이 사양을 수정합니다.
수정할 공유 게이트웨이 사양을 엽니다.
kubectl edit gateway gke-system-gateway --namespace knative-serving
다음 섹션을 게이트웨이 사양에 추가하여 이전에 만든 보안 비밀을 사용하여 TLS 인증서를 지정합니다.
- hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
게이트웨이 사양은 다음과 같이 표시됩니다.
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: # ... skipped ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
서로 다른 네임스페이스의 두 가지 서비스에 여러 TLS 인증서를 추가하는 경우 게이트웨이 사양은 다음과 같습니다.
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: # ... skipped ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - port: number: 443 name: https-SERVICE1_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET1_NAME hosts: - SERVICE1_NAME.NAMESPACE1.example.com - port: number: 443 name: https-SERVICE2_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET2_NAME hosts: - SERVICE2_NAME.NAMESPACE2.example.com
변경사항을 저장합니다.
이 변경이 적용되면 HTTPS 프로토콜을 사용하여 배포된 서비스에 액세스할 수 있습니다.