Usa tus propios certificados TLS

En esta página, se describe cómo configurar Cloud Run for Anthos en Google Cloud para usar tu propio certificado SSL/TLS, en casos en los que no deseas usar los certificados TLS administrados.

La puerta de enlace de entrada de Istio puede admitir el protocolo TLS proporcionado desde tu certificado después de almacenar tu certificado en un secreto de Kubernetes y especificarlo en las especificaciones 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 un certificado TLS o una clave privada en un secreto de Kubernetes

Para almacenar los certificados en un secreto, haz lo siguiente:

  1. Copia los certificados en el directorio actual.

  2. Usa el siguiente comando para crear un secreto que almacene los certificados, en el que privkey.pem contenga tu clave privada de certificado y fullchain.pem contenga el certificado público:

    kubectl create --namespace gke-system secret tls SECRET_NAME \
      --key privkey.pem \
      --cert fullchain.pem
    

Especifica tu 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 secreto 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 tu certificado TLS con el secreto que creaste anteriormente, agrega la siguiente sección a las especificaciones de tu 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 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
        - hosts:
          - "*"
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            mode: SIMPLE
            credentialName: SECRET_NAME
    

    Si estás agregando varios certificados TLS para dos servicios diferentes en espacios de nombres diferentes, la especificación de la puerta de enlace podría tener las siguientes características:

    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.