Ce sujet est fourni à titre d'exemple uniquement. Il explique comment obtenir un certificat TLS auprès de l'autorité de certification Let's Encrypt. Ces étapes sont principalement fournies à titre d'exemple si vous ne disposez pas d'un autre moyen prêt à obtenir une paire certificat/clé autorisée par une autorité de certification. L'exemple montre comment générer des certificats à l'aide de l'autorité de certification Let's Encrypt, du client Certbot et du service Cloud DNS de Google Cloud Platform.
Où utiliser ces certificats ?
Vous devez fournir des certificats TLS pour deux passerelles d'entrée Istio exposées en dehors du cluster :
Passerelle | Exigence TLS |
---|---|
Passerelle d'entrée de l'environnement d'exécution | Vous pouvez utiliser une paire certificat/clé autosignée ou des certificats TLS autorisés. |
Passerelle d'entrée MART (facultative si vous n'utilisez pas Apigee Connect) | Nécessite une paire certificat TLS autorisé/clé ou un secret Kubernetes. |
Exigences
Vous aurez besoin d'un nom de domaine obtenu via un service d'enregistrement de noms de domaine. Vous pouvez enregistrer un nom de domaine via Google Domains ou un autre service d'enregistrement de votre choix.
Configurer Cloud DNS
Pour obtenir des certificats TLS autorisés, vous devez disposer d'un nom de domaine qualifié. La procédure suivante explique comment utiliser Google Cloud DNS pour obtenir un nom de domaine et gérer vos serveurs de domaine.- Ouvrez Google Cloud Console, puis connectez-vous avec le compte que vous avez créé à l'étape 1 : Créer un compte Google Cloud.
- Sélectionnez le projet que vous avez créé à l'Étape 2 : Créer un projet GCP.
- Si vous ne l'avez pas déjà fait, activez l'API Cloud DNS. Consultez la page Activer des API.
- Créez une adresse IP statique :
- Si vous utilisez GKE, suivez les instructions de la section Réserver une adresse IP statique externe pour créer une adresse IP statique permettant aux processus externes de communiquer avec l'entrée d'exécution hybride. Vous pouvez donner à l'adresse le nom de votre choix, par exemple :
apigee-hybrid-runtime
. Lorsque vous avez terminé, vous utiliserez le numéro IP dans la configuration du cluster à l'étape suivante. Par exemple :34.66.75.196
. - Si vous utilisez Anthos GKE, suivez les instructions de la documentation Anthos GKE pour créer une adresse IP statique.
- Si vous utilisez GKE, suivez les instructions de la section Réserver une adresse IP statique externe pour créer une adresse IP statique permettant aux processus externes de communiquer avec l'entrée d'exécution hybride. Vous pouvez donner à l'adresse le nom de votre choix, par exemple :
- Obtenez l'adresse IP externe que vous venez de réserver.
- Créez un jeu d'enregistrements pour le point de terminaison d'entrée Istio de l'environnement d'exécution. Il s'agit de l'adresse permettant d'effectuer des appels d'API vers la passerelle hybride. Saisissez l'adresse IP externe obtenue à l'étape précédente et ajoutez un préfixe au nom de domaine, tel que
example-endpoint
. Pour obtenir des instructions, consultez l'article Créer un enregistrement.- Créer une zone gérée publique Pour obtenir des instructions, consultez la page Créer une zone publique gérée.
- Créez un jeu d'enregistrements avec :
- Nom du DNS : nom du point de terminaison avec lequel les appels à l'API externe vont communiquer (par exemple,
api-services
ouexample-endpoint
) - Type d'enregistrement de la ressource : A
- TTL et TTL Unit : accepter les valeurs par défaut
- Adresse IP : l'adresse IP statique que vous avez créée.
- Nom du DNS : nom du point de terminaison avec lequel les appels à l'API externe vont communiquer (par exemple,
- La vue Détails de la zone répertorie quatre serveurs DNS en tant que données NS pour votre nouvelle zone. Copiez les données d'enregistrement DNS, comme indiqué dans l'exemple suivant :
- Revenez à la page de votre domaine dans votre bureau d'enregistrement (par exemple, Google Domains).
- Sélectionnez votre domaine.
- Sélectionnez DNS.
- Dans la section "Serveurs de noms", cliquez sur Modifier.
Saisissez les serveurs de noms de domaine que vous avez copiés depuis la page Cloud Services DNS : Exemple :
Votre Google Cloud DNS gère désormais les enregistrements DNS pour votre domaine.
Installer Certbot sur une VM
Maintenant que Cloud DNS est configuré pour gérer vos serveurs de domaine, vous allez installer le client Certbot avec le plug-in dns_google sur une VM Cloud. Le client vous permet d'obtenir des certificats autorisés pour votre domaine à partir d'un point de terminaison Let's Encrypt.
- Ouvrez Google Cloud Console, puis connectez-vous avec le compte que vous avez créé à l'étape 1 : Créer un compte Google Cloud.
- Sélectionnez le projet que vous avez créé à l'Étape 2 : Créer un projet GCP.
- Sélectionnez IAM et administration > Comptes de service.
La vue des comptes de service affiche la liste des comptes de service du projet.
- Pour créer un compte de service, cliquez sur + Créer un compte de service en haut de la vue.
La vue Détails du compte de service s'affiche.
- Dans le champ Nom du compte de service, saisissez le nom du compte de service.
Vous pouvez éventuellement ajouter une description dans le champ Description du compte de service. Les descriptions sont utiles pour vous rappeler quel compte de service particulier est utilisé.
- Cliquez sur Créer.
GCP crée un compte de service et affiche la vue Autorisations de compte de service. Utilisez cette vue pour attribuer un rôle à votre nouveau compte de service.
- Cliquez sur la liste déroulante Sélectionner un rôle.
- Sélectionnez le rôle Propriétaire du projet.
- Cliquez sur Continuer.
- Cliquez sur OK.
- Dans la console GCP, sélectionnez Compute Engine > Instances de VM.
- Créez une instance de VM nommée certmanager :
- Dans la section Disque de démarrage, choisissez CentOS7 et 20 Go pour le disque persistant SSD.
- Définissez le compte de service sur celui que vous avez créé ci-dessus.
- Installez certbot et le plug-in dns_google sur la machine, puis exécutez le client 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
Exemple :
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
- Vous pouvez maintenant trouver vos fichiers de certificat et de clé privée dans ce répertoire :
cd /etc/letsencrypt/live/your_domain_name/
Exemple :
cd /etc/letsencrypt/live/apigee-hybrid-docs.net
ls
cert.pem chain.pem fullchain.pem privkey.pem README - Copiez les fichiers
fullchain.pem
etprivkey.pem
sur votre ordinateur local. - Facultatif : Créez un secret Kubernetes avec la paire certificat/clé. Consultez les instructions de l'Option 2 : secret Kubernetes à la page Configurer les protocoles TLS et mTLS sur l'entrée Istio.
- Mettez à jour votre fichier de remplacement pour qu'il pointe vers le certificat et la clé privée. Pour
hostAliases
, utilisez le nom DNS que vous avez créé précédemment.Exemple :
... 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
Ou, si vous utilisez des secrets 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 ...
- Appliquer les modifications
Si vous avez modifié la configuration
mart
, appliquez les modifications :apigeectl apply -f your_overrides_file --all-envs
Si vous avez modifié la configuration
envs
, appliquez les modifications :apigeectl apply -f your_overrides_file --all-envs
Tester la configuration
Déployez et testez un proxy, comme expliqué dans la section Créer et déployer un nouveau proxy API.