Questo argomento è solo a titolo esemplificativo. Spiega come ottenere un certificato TLS da l'autorità di certificazione (CA) Let's Encrypt. Questi passaggi vengono forniti principalmente come esempio da seguire se non disponi di un altro modo pronto per ottenere un certificato/una chiave una coppia autorizzata da una CA. L'esempio mostra come generare certificati utilizzando l'autorità di certificazione Let's Encrypt, Client Certificate e Cloud DNS Google Cloud Platform.
Dove puoi utilizzare questi certificati
Devi fornire certificati TLS per due gateway in entrata Istio esposti all'esterno del cluster:
Gateway | Requisito TLS |
---|---|
Gateway in entrata per il runtime | Puoi utilizzare una coppia di certificati/chiavi autofirmati o certificati TLS autorizzati. |
Gateway MART in entrata (facoltativo se non si utilizza Apigee Connect) | Richiede una coppia di certificati/chiavi TLS autorizzata o un secret Kubernetes. |
Requisiti
È necessario un nome di dominio ottenuto tramite un registrar dei nomi di dominio. Puoi registrare un nome di dominio tramite Google Domains o un altro registrar di dominio a tua scelta.
Configura Cloud DNS
Per ottenere i certificati TLS autorizzati, devi disporre di un nome di dominio qualificato. Le seguenti passaggi spiegano come utilizzare Google Cloud DNS per ottenere un nome di dominio e gestire i server di dominio.- Apri la console Google Cloud e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
- Seleziona il progetto che hai creato nel Passaggio 2: crea un progetto della piattaforma Google Cloud.
- Se non lo hai già fatto, abilita l'API Cloud DNS. Consulta Abilitazione delle API.
- Crea un indirizzo IP statico:
- Se utilizzi GKE, segui le istruzioni in
Riservare un indirizzo IP esterno statico per creare indirizzi IP statici elaborati dall'esterno
per comunicare con il traffico in entrata del runtime ibrido. Puoi assegnare all'indirizzo qualsiasi nome
desiderata, ad esempio:
apigee-hybrid-runtime
. Al termine, utilizzerai l'IP nella configurazione del cluster nel passaggio successivo. Ad esempio:34.66.75.196
- Se utilizzi Anthos GKE, segui le istruzioni in documentazione di Anthos GKE per creare un indirizzo IP statico.
- Se utilizzi GKE, segui le istruzioni in
Riservare un indirizzo IP esterno statico per creare indirizzi IP statici elaborati dall'esterno
per comunicare con il traffico in entrata del runtime ibrido. Puoi assegnare all'indirizzo qualsiasi nome
desiderata, ad esempio:
- Ottieni l'IP esterno che hai appena prenotato.
- Crea un set di record per l'endpoint in entrata Istio del runtime. Questo è l'indirizzo per creare l'API
al gateway ibrido. Inserisci l'IP esterno ottenuto nelle precedenti
passaggio e aggiungi un prefisso al nome di dominio, ad esempio
example-endpoint
. Per istruzioni, vedi Crea un nuovo record.- Crea una zona pubblica gestita. Per istruzioni, vedi Crea una zona pubblica gestita.
- Crea un nuovo set di record con:
- Nome DNS: il nome con cui comunicheranno le chiamate API esterne dell'endpoint, ad esempio
api-services
oexample-endpoint
- Tipo di record di risorse: A
- TTL e Unità TTL: accetta i valori predefiniti
- Indirizzo IP: l'IP statico che hai creato.
- Nome DNS: il nome con cui comunicheranno le chiamate API esterne dell'endpoint, ad esempio
- Nella visualizzazione Dettagli zona sono elencati quattro server DNS come dati NS per il tuo nuovo
zona di destinazione. Copia i dati del record DNS, come mostrato nell'esempio seguente:
- Torna alla pagina del tuo dominio nel registrar (ad esempio, Google Domains).
- Seleziona il tuo dominio.
- Seleziona DNS.
- Nella sezione Server dei nomi, fai clic su Modifica.
Inserisci i server dei nomi di dominio che hai copiato da Network Services Cloud DNS . Ad esempio:
Ora, Google Cloud DNS gestirà i record DNS per il tuo dominio.
Installare Certbot su una VM
Ora che hai configurato Cloud DNS per gestire i server di dominio, installa il client Certbot Plug-in dns_google su una VM Cloud. Il client abilita per ottenere certificati autorizzati per il tuo dominio da un endpoint Let's Encrypt.
- Apri la console Google Cloud e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
- Seleziona il progetto che hai creato nel Passaggio 2: crea un progetto della piattaforma Google Cloud.
- Seleziona IAM e amministratore > Account di servizio.
La vista Account di servizio mostra un elenco degli account di servizio del progetto.
- Per creare un nuovo account di servizio, fai clic su + Crea account di servizio nella parte superiore della
la vista.
Viene visualizzata la visualizzazione Dettagli account di servizio.
- Nel campo Nome account di servizio, inserisci il nome dell'account di servizio.
In via facoltativa, puoi aggiungere una descrizione nella Descrizione dell'account di servizio . Le descrizioni sono utili per ricordarti quale particolare account di servizio viene utilizzato .
- Fai clic su Crea.
Google Cloud crea un nuovo account di servizio e visualizza l'Account di servizio autorizzazioni. Utilizza questa vista per assegnare un ruolo al nuovo account di servizio.
- Fai clic sull'elenco a discesa Seleziona un ruolo.
- Seleziona il ruolo Proprietario progetto.
- Fai clic su Continua.
- Fai clic su Fine.
- Nella console di Google Cloud, seleziona Compute Engine > di istanze VM.
- Crea un'istanza VM denominata certmanager.
- Nella sezione Disco di avvio, scegli CentOS7 e 20 GB per un'unità permanente SSD.
- Imposta l'account di servizio su quello creato sopra.
- Installa Certbot e dns_google
sul computer ed esegui il 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
Ad esempio:
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
- Ora puoi trovare il certificato autorizzato e i file della chiave privata in questa directory:
cd /etc/letsencrypt/live/your_domain_name/
Ad esempio:
cd /etc/letsencrypt/live/apigee-hybrid-docs.net
ls
cert.pem chain.pem fullchain.pem privkey.pem README - Copia i file
fullchain.pem
eprivkey.pem
nel tuo dalla macchina locale. - Facoltativo: crea un secret Kubernetes con la coppia certificato/chiave. Leggi le istruzioni in Opzione 2: Secret di Kubernetes in Configurazione di TLS e mTLS su Istio in entrata.
- Aggiorna il file degli override in modo che punti al certificato e alla chiave privata.
Ad esempio:
... 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
Oppure, se utilizzi i secret di 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 ...
- Applica le modifiche:
Se hai modificato la configurazione di
mart
, applica le modifiche:apigeectl apply -f your_overrides_file --all-envs
Se hai modificato la configurazione di
envs
, applica le modifiche:apigeectl apply -f your_overrides_file --all-envs
Testa la configurazione
Esegui il deployment e il test di un proxy, come spiegato in Creare ed eseguire il deployment di un nuovo proxy API.