Utilizzo di certificati TLS gestiti e HTTPS

Questa pagina mostra come disattivare e riattivare la funzionalità dei certificati TLS gestiti, che fornisce e rinnova automaticamente i certificati TLS per supportare le connessioni HTTPS su Knative.

Se vuoi usare HTTPS,

  • Il contenitore dovrebbe continuare ad ascoltare il giorno $PORT
  • Devi scegliere come fornire i certificati TLS:

    • Utilizza i certificati TLS gestiti, per i quali vengono creati automaticamente secondo necessità e rinnovati automaticamente. Questa pagina descrive questa funzionalità, disponibile nelle versioni di Google Kubernetes Engine supportate.
    • Utilizza i tuoi certificati, per il quale sei responsabile di ottenere e rinnovare i certificati. In alcune situazioni, descritte nella sezione Limitazioni, devi utilizzare i tuoi certificati.
  • Se utilizzi certificati gestiti, devi anche mappare il dominio personalizzato per poter utilizzare la funzionalità dei certificati gestiti.

Utilizzo di HTTPS e HTTP

Per impostazione predefinita, se utilizzi certificati gestiti, cluster o servizi di gestione di Knative con certificati gestiti sono esposti sia al traffico HTTP che a quello HTTPS. Se vuoi solo il traffico HTTPS, puoi attivare i reindirizzamenti HTTPS per fare in modo che tutto il traffico utilizzi solo HTTPS.

Risoluzione dei problemi

Se riscontri problemi durante l'utilizzo dei certificati TLS gestiti, consulta la pagina Risoluzione dei problemi di TLS gestito.

Limitazioni

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

  • I certificati TLS gestito sono disabilitati e non sono supportati per i cluster privati di gestione di Knative su Google Cloud.
  • Per utilizzare la funzionalità dei certificati gestiti, il tuo servizio deve essere esposto all'esterno: non può essere un servizio locale del cluster o un servizio esposto da Virtual Private Cloud.
  • La funzionalità dei certificati gestiti funziona solo con Anthos Service Mesh. Il componente aggiuntivo Istio o altre configurazioni di Istio non sono supportati.
  • Questa funzionalità utilizza Let's Encrypt, che ha un limite di quota iniziale di 50 certificati TLS a settimana per dominio registrato. Puoi richiedere un aumento della quota seguendo la documentazione di Let's Encrypt.
  • Durante l'esecuzione di un cluster di gestione Knative su altre piattaforme, come on-prem o AWS, questa funzionalità è disabilitata. Per utilizzare questa funzionalità, devi assicurarti che il cluster sia in grado di accedere a Let's Encrypt e che il tuo servizio in entrata ad Anthos Service Mesh sia esposto alla rete internet pubblica.

Prima di iniziare

Le istruzioni in questa pagina presuppongono quanto segue:

Disabilitazione dei certificati TLS gestiti e di HTTPS per un intero cluster

Disabilita il protocollo TLS gestito per un cluster aggiornando il 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 il protocollo TLS gestito 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: your-domain.com

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

Riattivazione di certificati TLS gestiti e HTTPS

Per riattivare il protocollo TLS gestito:

  1. Se non l'hai ancora fatto, crea una mappatura di dominio per il tuo servizio e aggiorna il tuo record DNS di conseguenza seguendo le istruzioni riportate 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 alcuni minuti dopo l'esito positivo del comando, quindi assicurati che la funzionalità dei certificati funzioni:

    kubectl get kcert

    Se il certificato è pronto, dovresti vedere un messaggio simile a questo:

    NAME              READY   REASON
    your-domain.com              True

    Potrebbero essere necessari da 20 secondi a 2 minuti prima che 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 stato applicato eseguendo il comando:

    gcloud run domain-mappings describe --domain DOMAIN

    Sostituisci DOMAIN con il tuo nome di dominio, ad esempio: your-domain.com

  2. Controlla il campo url: nella risposta 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. Devono essere uguali.

Abilitazione dei reindirizzamenti HTTPS per la gestione con Knative

Se utilizzi la funzionalità dei certificati TLS gestiti, per impostazione predefinita il cluster è esposto sia al traffico HTTP che a quello HTTPS per motivi di compatibilità con le versioni precedenti. Se vuoi forzare l'utilizzo solo di HTTPS di tutto il traffico, puoi abilitare i reindirizzamenti HTTPS per un mapping di dominio esistente richiamando il comando

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

dove DOMAIN è il nome del mapping di dominio.