En esta página, se describe cómo configurar Cloud Run for Anthos para usar tu propio certificado SSL/TLS, en casos en los que no deseas usar la función de certificados TLS administrados.
La puerta de enlace de entrada de Istio puede admitir el protocolo TLS que se proporciona desde tu certificado después de almacenarlo en un Secret de Kubernetes y detallarlo en la especificación de la puerta de enlace de entrada de Istio.
Antes de comenzar
En estas instrucciones, se da por sentado que ya tienes tus propios certificados TLS.
Almacena el certificado TLS o la clave privada en un Secret de Kubernetes
Para almacenar los certificados en un Secret, haz lo siguiente:
Copia los certificados en el directorio actual.
Usa el siguiente comando para crear un Secret que almacene los certificados, en el que
privkey.pem
contiene la clave privada del certificado yfullchain.pem
contiene el certificado público:kubectl create --namespace gke-system secret tls SECRET_NAME \ --key privkey.pem \ --cert fullchain.pem
Especifica el certificado TLS para la puerta de enlace de entrada de Istio
Modifica la especificación de la puerta de enlace de entrada de Istio para usar el Secret de Kubernetes que contiene tu certificado TLS:
Abre la especificación de la puerta de enlace compartida para editarla:
kubectl edit gateway gke-system-gateway --namespace knative-serving
Para especificar el certificado TLS con el Secret que creaste antes, agrega la siguiente sección a la especificación de la puerta de enlace:
- hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
La especificación de la puerta de enlace debe verse de la siguiente manera:
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
Si agregas varios certificados TLS para dos servicios diferentes en espacios de nombres distintos, la especificación de la puerta de enlace podría tener el siguiente aspecto:
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
Guarda los cambios.
Después de realizar este cambio, puedes usar el protocolo HTTPS para acceder a los servicios implementados.