Utilizzo di certificati TLS gestiti e HTTPS

In questa pagina viene mostrato come disattivare e riattivare la funzionalità dei certificati TLS gestiti, che fornisce e rinnova automaticamente i certificati TLS per supportare le connessioni HTTPS su Cloud Run for Anthos.

Se vuoi utilizzare HTTPS,

  • Il tuo container dovrebbe continuare ad ascoltare su $PORT
  • Devi scegliere come fornisci i certificati TLS:

    • Utilizza i certificati TLS gestiti, in cui i certificati TLS vengono creati automaticamente in base alle esigenze e vengono rinnovati automaticamente. Questa pagina descrive questa funzionalità, disponibile nelle versioni di Google Kubernetes Engine supportate.
    • Utilizza i tuoi certificati, dove sei responsabile di ottenere e rinnovare i certificati. In alcuni casi, è necessario utilizzare i propri certificati descritti in Limitazioni.
  • Se utilizzi i certificati gestiti, devi anche mappare il dominio personalizzato per utilizzare la funzionalità dei certificati gestiti.

Utilizzare HTTPS e HTTP

Per impostazione predefinita, se utilizzi certificati gestiti, i cluster o i servizi Cloud Run for Anthos con certificati gestiti sono esposti al traffico HTTP e HTTPS. Se vuoi solo traffico HTTPS, puoi attivare i reindirizzamenti HTTPS per forzare tutto il traffico a utilizzare solo HTTPS.

Risolvere i problemi

Se riscontri problemi quando utilizzi i certificati TLS gestiti, consulta la pagina Risoluzione dei problemi relativi a TLS gestito.

Limitazioni

Le seguenti considerazioni si applicano all'uso della funzionalità dei certificati TLS gestiti:

  • I certificati TLS gestiti sono disabilitati e non supportati per i cluster privati Cloud Run for Anthos su Google Cloud.
  • Per utilizzare la funzionalità dei certificati gestiti, il servizio deve essere esposto esternamente: non può essere un servizio locale del cluster o un servizio esposto da Virtual Private Cloud.
  • La funzionalità dei certificati gestiti funziona solo con Istio, come installato automaticamente quando configuri il tuo cluster per Cloud Run for Anthos: non funziona con il componente aggiuntivo Istio o con altre configurazioni di Istio. Se hai bisogno di utilizzare il componente aggiuntivo Istio, potresti dover utilizzare i tuoi certificati TLS.
  • Questa funzionalità utilizza la crittografia Let's, che ha un limite di quota iniziale di 50 certificati TLS a settimana per dominio registrato. Per richiedere un aumento della quota, consulta la documentazione relativa alla crittografia di Let's 39.
  • Quando esegui un cluster Cloud Run for Anthos su altre piattaforme, come on-prem o AWS, questa funzionalità è disabilitata. Per utilizzare questa funzionalità, devi assicurarti che il tuo cluster sia in grado di accedere alla crittografia Let's Encrypt e che il servizio Istio in entrata (il servizio istio-ingress in gke-system) sia esposto alla rete Internet pubblica.
  • Se utilizzi certificati gestiti, quando assegni i domini non puoi utilizzare un nome di mappatura dei domini identico all'URL del servizio a cui esegui la mappatura. Ad esempio, se l'URL del tuo servizio è test.default.example.com, non puoi impostare il nome di DomainMapping su test.default.example.com.

Prima di iniziare

Le istruzioni riportate in questa pagina presuppongono quanto segue:

Versioni cluster supportate

Per le versioni 1.17.7-gke.15 e successive, i certificati gestiti sono abilitati per impostazione predefinita, per cluster pubblici su Google Cloud.

Per le seguenti versioni del cluster, la funzionalità dei certificati gestiti è disabilitata per impostazione predefinita, ma puoi attivare i certificati gestiti se vuoi utilizzarli:

  • 1,16
  • 1.15.7-gke.23
  • 1.14.10-gke.17
  • 1.14.9-gke.23
  • 1.14.8-gke.33

Per determinare qual è la tua versione attuale del cluster:

  1. Visita la pagina Google Kubernetes Engine in Google Cloud Console:

    Vai a Google Kubernetes Engine

  2. Fai clic sul cluster per aprire la relativa pagina dei dettagli.

  3. Individua la versione del cluster accanto all'etichetta Versione master.

Disabilitazione dei certificati TLS gestiti e HTTPS per un intero cluster

Disabilita TLS gestito per un cluster aggiornando l'oggetto ConfigMap config-domainmapping:

kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Disabled"}}'

Disabilitazione di TLS e HTTPS gestiti per una mappatura di dominio specifica

Se necessario, puoi disattivare la gestione TLS gestita per una mappatura di dominio specifica:

  1. Aggiungi l'annotazione domains.cloudrun.com/disableAutoTLS: "true"`:

    kubectl annotate domainmappings DOMAIN domains.cloudrun.com/disableAutoTLS=true
  2. Verifica che HTTPS non funzioni:

    curl https://DOMAIN

  3. Verifica che HTTP sia utilizzato per il servizio:

    gcloud run domain-mappings describe --domain DOMAIN

    Sostituisci DOMAIN con il tuo nome di dominio, ad esempio: example.com

    Controlla il campo url: nel comando Invio del comando precedente: l'URL deve avere http, non https.

Riattivazione dei certificati TLS gestiti e HTTPS

Per riattivare la crittografia TLS gestita:

  1. Se non lo hai già fatto, crea una mappatura di dominio per il tuo servizio e aggiorna il record DNS di conseguenza, seguendo le istruzioni nella pagina di mappatura dei domini.

  2. Attiva i certificati TLS gestiti e HTTPS aggiornando il ConfigMap config-domainmapping:

    kubectl patch cm config-domainmapping -n knative-serving -p '{"data":{"autoTLS":"Enabled"}}'
  3. Attendi qualche minuto dopo l'esecuzione del comando, quindi assicurati che la funzionalità dei certificati funzioni:

    kubectl get kcert

    Se il certificato è pronto, dovresti vedere un messaggio simile al seguente:

    NAME              READY   REASON
    example.com       True

    Potrebbero essere necessari da 20 secondi a 2 minuti prima che il dispositivo Kcert sia pronto. In caso di problemi, consulta le istruzioni per la risoluzione dei problemi relative a questa funzionalità.

Verifica dell'esito positivo

  1. Verifica che il record DNS sia entrato in vigore eseguendo il comando:

    gcloud run domain-mappings describe --domain DOMAIN

    Sostituisci DOMAIN con il tuo nome di dominio, ad esempio: example.com

  2. Controlla il campo url: nel comando Invio del comando precedente: l'URL deve avere https, non http.

  3. Controlla l'indirizzo IP del comando riportato sopra, elencato sotto resourceRecords:rrdata, e confrontalo con il valore che vedi quando esegui il comando host DOMAIN. Dovrebbero essere uguali.

Abilitazione dei reindirizzamenti HTTPS per Cloud Run for Anthos

Se utilizzi la funzionalità dei certificati TLS gestiti, per impostazione predefinita il cluster è esposto al traffico HTTP e HTTPS per motivi di compatibilità con le versioni precedenti. Se vuoi forzare tutto il traffico a utilizzare solo HTTPS, puoi attivare i reindirizzamenti HTTPS per una mappatura di dominio esistente richiamando il comando

kubectl annotate domainmappings DOMAIN domains.cloudrun.com/httpsRedirect=Enabled

dove DOMAIN è il nome della mappatura dei domini.