Esempio: come ottenere le credenziali TLS

Questo argomento è solo a titolo esemplificativo. Spiega come ottenere un certificato TLS dall'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 i certificati utilizzando l'autorità di certificazione Let's Encrypt, il client Certbot e Cloud DNS della piattaforma Google Cloud.

Dove puoi utilizzare queste credenziali

Devi fornire le credenziali TLS per due gateway in entrata Istio esposti all'esterno del cluster:

Gateway Requisito TLS
Gateway di ingresso MART Richiede una coppia di certificato/chiave TLS autorizzata.
Gateway in entrata per il runtime Puoi utilizzare una coppia di chiavi/un certificato autofirmato o credenziali TLS autorizzate.
Vedi anche Connessioni esterne.

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 domini a tua scelta.

Configura Cloud DNS

Per ottenere le credenziali TLS autorizzate, devi disporre di un nome di dominio qualificato. I passaggi riportati di seguito spiegano come utilizzare Google Cloud DNS per ottenere un nome di dominio e gestire i server di dominio.
  1. Apri la console Google Cloud e accedi con l'account che hai creato nel Passaggio 1: crea un account Google Cloud.
  2. Seleziona il progetto che hai creato nel passaggio 2: creazione di un progetto Google Cloud.
  3. Abilita l'API DNS. Consulta Abilitare le API.
  4. Crea due indirizzi IP statici:
    • Se utilizzi GKE, segui le istruzioni riportate in Prenotazione di un indirizzo IP esterno statico per creare due indirizzi IP statici. Puoi assegnare agli indirizzi i nomi che preferisci, ad esempio: apigee-hybrid-mart e apigee-hybrid-runtime. Al termine, avrai due numeri IP da utilizzare nella configurazione del cluster nel passaggio successivo. Ad esempio: 35.225.131.189 e 34.66.75.196
    • Se utilizzi Anthos GKE, segui le istruzioni in documentazione di Anthos GKE creano due indirizzi IP statici.
  5. Crea una zona pubblica gestita. Per le istruzioni, vedi Creare una zona pubblica gestita.
  6. Ottieni l'IP esterno che hai prenotato per apigee-hybrid-mart.
  7. Crea un set di record per l'endpoint MART. Inserisci l'IP esterno ottenuto nel passaggio precedente e aggiungi un prefisso al nome di dominio, ad esempio mart. Per le istruzioni, consulta Creare un nuovo record.

  8. Ottieni l'IP esterno che hai prenotato per apigee-hybrid-runtime.
  9. Crea il set di record per l'endpoint di ingresso Istio. Questo è l'indirizzo per effettuare chiamate API al gateway ibrido. Inserisci l'IP esterno ottenuto nelle precedenti passaggio e aggiungi un prefisso al nome di dominio, ad esempio apitest. Per istruzioni, vedi Crea un nuovo record.

  10. Copia i dati del record DNS, come mostrato nell'esempio seguente:

  11. Torna alla pagina del tuo dominio in Google Domains.
  12. Seleziona il tuo dominio.
  13. Seleziona DNS.
  14. Nella sezione Server dei nomi, fai clic su Modifica.
  15. Inserisci i server dei nomi di dominio che hai copiato dalla pagina Cloud DNS di Network Services:

Ora, Google Cloud DNS gestirà i record DNS per il tuo dominio.

Installa 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.

  1. Apri la console Google Cloud e accedi con l'account che hai creato nel passaggio 1: creazione di un account Google Cloud.
  2. Seleziona il progetto che hai creato nel passaggio 2: creazione di un progetto Google Cloud.
  3. Seleziona IAM e amministrazione > Account di servizio.

    La visualizzazione Account di servizio mostra un elenco degli account di servizio del progetto.

  4. 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.

  5. 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 ricordare per cosa viene utilizzato un determinato account di servizio.

  6. 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.

  7. Fai clic sull'elenco a discesa Seleziona un ruolo.
  8. Seleziona il ruolo Proprietario del progetto.
  9. Fai clic su Continua.
  10. Fai clic su Fine.
  11. Nella console di Google Cloud, seleziona Compute Engine > Istanze VM.
  12. Crea un'istanza VM denominata certmanager.
  13. Nella sezione Disco di avvio, scegli CentOS7 e 20 GB per un'unità permanente SSD.
  14. Imposta l'account di servizio su quello che hai creato sopra.
  15. 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
  16. 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

  17. Copia i file fullchain.pem e privkey.pem nel tuo dalla macchina locale.
  18. Aggiorna il file degli override in modo che punti al certificato e alla chiave privata. Per hostAlias, utilizza il nome DNS che hai creato in precedenza.

    Ad esempio:

    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. Applica le modifiche:

    Se hai modificato la configurazione di mart, applica le modifiche:

    apigeectl apply -f your_overrides_file -c mart

    Se hai modificato la configurazione di envs, applica le modifiche:

    apigeectl apply -f your_overrides_file -c runtime
  20. 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.