Ejemplo sobre cómo obtener credenciales TLS

Este tema solo es un ejemplo. En él se explica cómo obtener un certificado TLS de la autoridad de certificación Let's Encrypt. Estos pasos se proporcionan principalmente como ejemplo a seguir si no tienes otra forma de obtener un par de certificado y clave autorizado por una autoridad de certificación. En el ejemplo se muestra cómo generar certificados con la CA Let's Encrypt, el cliente Certbot y Cloud DNS de Google Cloud Platform.

Dónde puedes usar estas credenciales

Debes proporcionar credenciales TLS para dos pasarelas de entrada de Istio que estén expuestas fuera del clúster:

Pasarela Requisito de TLS
Pasarela de entrada de MART Requiere un par de claves y certificado TLS autorizado.
Pasarela de entrada en tiempo de ejecución Puedes usar un par de claves y certificado autofirmado o credenciales TLS autorizadas.
Consulta también Conexiones externas.

Requisitos

  • Necesitarás un nombre de dominio obtenido a través de un registrador de nombres de dominio. Puedes registrar un nombre de dominio a través de Google Domains u otro registrador de dominios que prefieras.

Configurar Cloud DNS

Para obtener credenciales TLS autorizadas, debes tener un nombre de dominio cualificado. En los siguientes pasos se explica cómo usar Google Cloud DNS para obtener un nombre de dominio y gestionar los servidores de tu dominio.
  1. Abre la consola de Google Cloud e inicia sesión con la cuenta que creaste en el paso 1: Crea una cuenta de Google Cloud.
  2. Selecciona el proyecto que has creado en el paso 2: Crea un proyecto de GCP.
  3. Habilita la API de DNS. Consulta Habilitar APIs.
  4. Crea dos direcciones IP estáticas:
    • Si usas GKE, sigue las instrucciones de Reservar una dirección IP externa estática para crear dos direcciones IP estáticas. Puede asignar el nombre que quiera a las direcciones. Por ejemplo: apigee-hybrid-mart y apigee-hybrid-runtime. Cuando termines, tendrás dos números de IP que podrás usar en la configuración del clúster en el siguiente paso. Por ejemplo: 35.225.131.189 y 34.66.75.196
    • Si usas Anthos GKE, sigue las instrucciones de la documentación de Anthos GKE para crear dos direcciones IP estáticas.
  5. Crea una zona pública gestionada. Para obtener instrucciones, consulta el artículo Crear una zona pública gestionada.
  6. Obtén la IP externa que has reservado para apigee-hybrid-mart.
  7. Crea un conjunto de registros para el endpoint de MART. Introduce la IP externa que has obtenido en el paso anterior y añade un prefijo al nombre de dominio, como mart. Para obtener instrucciones, consulta Crear un registro.

  8. Obtén la dirección IP externa que has reservado para apigee-hybrid-runtime.
  9. Crea un conjunto de registros para el endpoint de entrada de Istio. Esta es la dirección para hacer llamadas a la API de la pasarela híbrida. Introduce la IP externa que has obtenido en el paso anterior y añade un prefijo al nombre de dominio, como apitest. Para obtener instrucciones, consulta Crear un registro.

  10. Copia los datos del registro DNS, tal como se muestra en el siguiente ejemplo:

  11. Vuelve a la página de tu dominio en Google Domains.
  12. Selecciona tu dominio.
  13. Selecciona DNS.
  14. En la sección Servidores de nombres, haz clic en Editar.
  15. Introduce los servidores de nombres de dominio que has copiado de la página Servicios de red > Cloud DNS:

Ahora, Google Cloud DNS gestionará los registros DNS de tu dominio.

Instalar Certbot en una máquina virtual

Ahora que has configurado Cloud DNS para gestionar los servidores de tu dominio, instalarás el cliente Certbot con el complemento dns_google en una VM de Cloud. El cliente te permite obtener certificados autorizados para tu dominio desde un endpoint de Let's Encrypt.

  1. Abre la consola de Google Cloud e inicia sesión con la cuenta que creaste en el paso 1: Crea una cuenta de Google Cloud.
  2. Selecciona el proyecto que has creado en el paso 2: Crea un proyecto de GCP.
  3. Selecciona IAM y administración > Cuentas de servicio.

    En la vista Cuentas de servicio se muestra una lista de las cuentas de servicio del proyecto.

  4. Para crear una cuenta de servicio, haz clic en +Crear cuenta de servicio en la parte superior de la vista.

    Se muestra la vista Detalles de la cuenta de servicio.

  5. En el campo Nombre de cuenta de servicio, introduce el nombre de la cuenta de servicio.

    También puedes añadir una descripción en el campo Descripción de la cuenta de servicio. Las descripciones te ayudan a recordar para qué se usa una cuenta de servicio concreta.

  6. Haz clic en Crear.

    GCP crea una cuenta de servicio y muestra la vista Permisos de la cuenta de servicio. Usa esta vista para asignar un rol a la nueva cuenta de servicio.

  7. Haz clic en la lista desplegable Seleccionar un rol.
  8. Selecciona el rol Propietario del proyecto.
  9. Haz clic en Continuar.
  10. Haz clic en Listo.
  11. En la consola de GCP, selecciona Compute Engine > Instancias de VM.
  12. Crea una instancia de VM llamada certmanager.
  13. En la sección Disco de arranque, elige CentOS7 y 20 GB para el disco persistente SSD.
  14. Asigna a la cuenta de servicio la que has creado anteriormente.
  15. Instala Certbot y el complemento dns_google en el equipo y ejecuta el cliente de Certbot:
      sudo su -
      yum -y install yum-utils
      yum install certbot -y
      yum install certbot-dns-google -y
      certbot certonly --dns-google -d *.your_domain_name,*.your_domain_name --server https://acme-v02.api.letsencrypt.org/directory
      

    Por ejemplo:

    sudo su -
    yum -y install yum-utils
    yum install certbot -y
    yum install certbot-dns-google -y
    certbot certonly --dns-google -d *.apigee-hybrid-docs.net,*.apigee-hybrid-docs.net --server https://acme-v02.api.letsencrypt.org/directory
  16. Ahora puedes encontrar los archivos de certificado autorizado y clave privada en este directorio: cd /etc/letsencrypt/live/your_domain_name/

    Por ejemplo:

    cd /etc/letsencrypt/live/apigee-hybrid-docs.net
    ls
      cert.pem  chain.pem  fullchain.pem  privkey.pem  README

  17. Copia los archivos fullchain.pem y privkey.pem en tu máquina local.
  18. Actualiza el archivo de anulaciones para que apunte al certificado y a la clave privada. En hostAlias, usa el nombre de DNS que creaste anteriormente.

    Por ejemplo:

    envs:
      - name: test
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
        hostAlias: "apitest.apigee-hybrid-docs.net"
    mart:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
      sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
      replicaCountMin: 1
      replicaCountMax: 1
      hostAlias: "mart.apigee-hybrid-docs.net"
  19. Aplica los cambios:

    Si has cambiado la configuración de mart, aplica los cambios:

    apigeectl apply -f your_overrides_file -c mart

    Si has cambiado la configuración de envs, aplica los cambios:

    apigeectl apply -f your_overrides_file -c runtime
  20. Probar la configuración

    Despliega y prueba un proxy, tal como se explica en Crear y desplegar un proxy de APIs.