Obtener credenciales de TLS: ejemplo

Este tema solo se proporciona como ejemplo. En él, se explica cómo obtener un certificado TLS de la autoridad certificada (CA) Let's Encrypt. Estos pasos se proporcionan principalmente como un ejemplo a seguir si no tienes otra manera de obtener un certificado o un par de claves que esté autorizado por una CA. En el ejemplo, se muestra cómo generar certificados con la CA Let's Encrypt, el cliente de Certbot y Cloud DNS de Google Cloud Platform.

Dónde puedes usar estas credenciales

Debes proporcionar credenciales de TLS para dos puertas de enlace de entrada de Istio que se exponen fuera del clúster:

Puerta de enlace Requisito de TLS
Puerta de enlace de entrada de MART Requiere un par de claves o un certificado TLS autorizado.
Puerta de enlace de entrada del entorno de ejecución Puedes usar un par de claves, un certificado autofirmado o credenciales TLS autorizadas.
Consulta también Conexiones externas.

Requisitos

Necesitarás un nombre de dominio que obtuviste mediante un registrador de nombres de dominio. Puedes registrar un nombre de dominio mediante Google Domains o a través de otro registrador de dominios que elijas.

Configura Cloud DNS

Para obtener credenciales de TLS autorizadas, debes tener un nombre de dominio calificado. En los siguientes pasos, se explica cómo usar Google Cloud DNS para obtener un nombre de dominio y administrar tus servidores de dominio.
  1. Abre la consola de Google Cloud y accede con la cuenta que creaste en el Paso 1: Crea una cuenta de Google Cloud.
  2. Selecciona el proyecto que creaste en el Paso 2: Crea un proyecto de GCP.
  3. Habilita la API de Cloud DNS. Consulta Habilita las API.
  4. Crea dos direcciones IP estáticas:
    • Si estás en GKE, sigue las instrucciones en Reserva una dirección IP externa estática para crear dos direcciones IP estáticas. Puedes asignar a la dirección cualquier nombre que desees, por ejemplo: apigee-hybrid-mart y apigee-hybrid-runtime. Cuando termines, tendrás dos números de IP para 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 en la documentación de Anthos GKE para crear dos direcciones IP estáticas.
  5. Crea una zona pública administrada. Para obtener instrucciones, consulta Crea una zona pública administrada.
  6. Obtén la IP externa que reservaste para apigee-hybrid-mart.
  7. Crea un conjunto de registros para el extremo de MART. Ingresa la IP externa que obtuviste en el paso anterior y agrega un prefijo al nombre de dominio, como mart. Para obtener instrucciones, consulta Crea un registro nuevo.

  8. Obtén la IP externa que reservaste para apigee-hybrid-runtime.
  9. Crea un conjunto de registros para el extremo de entrada de Istio. Esta es la dirección para realizar llamadas a la API a la puerta de enlace híbrida. Ingresa la IP externa que obtuviste en el paso anterior y agrega un prefijo al nombre de dominio, como apitest. Para obtener instrucciones, consulta Crea un registro nuevo.

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

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

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

Instala Certbot en una VM

Ahora que configuraste Cloud DNS para administrar tus servidores de 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 extremo Let's Encrypt.

  1. Abre la consola de Google Cloud y accede con la cuenta que creaste en el Paso 1: Crea una cuenta de Google Cloud.
  2. Selecciona el proyecto que creaste en el Paso 2: Crea un proyecto de GCP.
  3. Selecciona IAM y administración > Cuenta de servicio (IAM & admin > Service accounts).

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

  4. Para crear una cuenta de servicio nueva, haz clic en + Crear cuenta de servicio (+ Create Service Account) en la parte superior de la vista.

    Aparecerá la vista Detalles de la cuenta de servicio (Service account details).

  5. En el campo Nombre de la cuenta de servicio (Service account name), ingresa el nombre de la cuenta de servicio.

    De forma opcional, puedes agregar una descripción en el campo Descripción de la cuenta de servicio (Service account description). Las descripciones son útiles a fin de recordarte para qué se usa una cuenta de servicio específica.

  6. Haga clic en Crear.

    GCP crea una cuenta de servicio nueva y muestra la vista Permisos de cuenta de servicio (Service account permissions). Usa esta vista para asignar una función a tu cuenta de servicio nueva.

  7. Haz clic en la lista desplegable Seleccionar una función.
  8. Selecciona la función Propietario del proyecto.
  9. Haga clic en Continuar.
  10. Haz clic en Listo.
  11. En GCP Console, 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 la unidad persistente SSD.
  14. Establece la cuenta de servicio como la que creaste antes.
  15. Instala Certbot y el complemento dns_google en la máquina 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 tu certificado autorizado y los archivos de claves privadas 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 tu archivo de anulaciones para que apunte al certificado y a la clave privada. Para hostAliases, usa el nombre de DNS que creaste antes.

    Por ejemplo:

    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/synchronizer-manager-service-account.json
          udca: "your_keypath/analytic-agent-service-account.json
    
    virtualhosts:
      - name: default
        hostAliases: ["apitest.apigee-hybrid-docs.net"]
        sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem"
        sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem"
        routingRules:
          - env: test
    
    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 cambiaste la configuración mart, aplica los siguientes cambios:

    apigeectl apply -f your_overrides_file -c mart

    Si cambiaste la configuración envs, aplica los siguientes cambios:

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

    Implementa y prueba un proxy, como se explica en Crea e implementa un proxy de API nuevo.