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 estos certificados
Debes proporcionar certificados 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 del entorno de ejecución | Puedes usar un par de claves o certificado autofirmado o certificados TLS autorizados. |
Puerta de enlace de entrada de MART (opcional cuando no se usa Apigee Connect) | Requiere un par de claves/certificado TLS autorizado o un secreto de Kubernetes. |
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 certificados TLS autorizados, 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.- Abre la consola de Google Cloud y accede con la cuenta que creaste en el Paso 1: Crea una cuenta de Google Cloud.
- Selecciona el proyecto que creaste en el Paso 2: Crea un proyecto de GCP.
- Si aún no lo hiciste, habilita la API de Cloud DNS. Consulta Habilita las API.
- Crea una dirección IP estática:
- Si estás en GKE, sigue las instrucciones en Reserva una dirección IP externa estática a fin de crear una dirección IP estática puedan usar los procesos externos para comunicarse con la entrada del entorno de ejecución híbrido. Puedes asignar a la dirección el nombre que desees, por ejemplo:
apigee-hybrid-runtime
. Cuando termines, usarás el número de IP en la configuración del clúster del siguiente paso. Por ejemplo:34.66.75.196
- Si estás en Anthos GKE, sigue las instrucciones en la documentación de Anthos GKE para crear una dirección IP estática.
- Si estás en GKE, sigue las instrucciones en Reserva una dirección IP externa estática a fin de crear una dirección IP estática puedan usar los procesos externos para comunicarse con la entrada del entorno de ejecución híbrido. Puedes asignar a la dirección el nombre que desees, por ejemplo:
- Obtén la IP externa que acabas de reservar.
- Crea un conjunto de registros para el extremo de entorno de ejecución 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
example-endpoint
. Para obtener instrucciones, consulta Crea un registro nuevo.- Crea una zona pública administrada. Para obtener instrucciones, consulta Crea una zona pública administrada.
- Crea un conjunto nuevo de registros con:
- Nombre de DNS: el nombre del extremo con el que se comunicarán las llamadas a la API externas, como
api-services
oexample-endpoint
- Tipo de registro de recursos: A
- TTL y UnidadTTL: Acepta los valores predeterminados.
- Dirección IP: la IP estática que creaste.
- Nombre de DNS: el nombre del extremo con el que se comunicarán las llamadas a la API externas, como
- La vista Detalles de la zona mostrará una lista de los cuatro servidores DNS de preferencia, como los datos NS de tu zona nueva. Copia los datos del registro DNS, como se muestra en el siguiente ejemplo:
- Regresa a la página del dominio en tu registrador (por ejemplo, Google Domains).
- Selecciona tu dominio.
- Selecciona DNS.
- En la sección Servidores de nombres, haz clic en Editar.
Ingresa los servidores de nombres de dominio que copiaste de la página Servicios de red de Cloud DNS. Por ejemplo:
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.
- Abre la consola de Google Cloud y accede con la cuenta que creaste en el Paso 1: Crea una cuenta de Google Cloud.
- Selecciona el proyecto que creaste en el Paso 2: Crea un proyecto de GCP.
- 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.
- 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).
- 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.
- 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.
- Haz clic en la lista desplegable Seleccionar una función.
- Selecciona la función Propietario del proyecto.
- Haga clic en Continuar.
- Haga clic en Listo.
- En GCP Console, selecciona Compute Engine > Instancias de VM.
- Crea una instancia de VM llamada certmanager.
- En la sección Disco de arranque, elige CentOS7 y 20 GB para la unidad persistente SSD.
- Establece la cuenta de servicio como la que creaste antes.
- 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
- 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 - Copia los archivos
fullchain.pem
yprivkey.pem
en tu máquina local. - Opcional: Crea un Secret de Kubernetes con el par de claves o el certificado. Consulta las instrucciones en la Opción 2: Secret de Kubernetes en Configura TLS y mTLS, en la entrada de Istio.
- 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: my-env-group sslCertPath: "$HOME/hybrid/apigee-hybrid-setup/tls/fullchain.pem" sslKeyPath: "$HOME/hybrid/apigee-hybrid-setup/tls/privkey.pem" mart: # Assuming you are not using Apigee Connect 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
O, si usas Secrets de Kubernetes:
... envs: - name: test serviceAccountPaths: synchronizer: "your_keypath/synchronizer-manager-service-account.json udca: "your_keypath/analytic-agent-service-account.json virtualhosts: - name: my-env-group tlsMode: SIMPLE # Note: SIMPLE is the default, MUTUAL is also an available value. sslSecret: myorg-test-policy-secret" mart: # Assuming you are not using Apigee Connect nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-runtime sslSecret: myorg-test-policy-secret" replicaCountMin: 1 replicaCountMax: 1 ...
- Aplica los cambios:
Si cambiaste la configuración
mart
, aplica los siguientes cambios:apigeectl apply -f your_overrides_file --all-envs
Si cambiaste la configuración
envs
, aplica los siguientes cambios:apigeectl apply -f your_overrides_file --all-envs
Prueba la configuración
Implementa y prueba un proxy, como se explica en Crea e implementa un proxy de API nuevo.