Usa tus propios certificados TLS

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:

  1. Copia los certificados en el directorio actual.

  2. Usa el siguiente comando para crear un Secret que almacene los certificados, en el que privkey.pem contiene la clave privada del certificado y fullchain.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:

  1. Abre la especificación de la puerta de enlace compartida para editarla:

    kubectl edit gateway gke-system-gateway --namespace knative-serving
  2. 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
    
  3. Guarda los cambios.

Después de realizar este cambio, puedes usar el protocolo HTTPS para acceder a los servicios implementados.