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 nel servizio Knative.

Se vuoi utilizzare HTTPS,

  • Il contenitore dovrebbe continuare a riprodurre contenuti su $PORT
  • Devi scegliere come fornire i certificati TLS:

    • Utilizza i certificati TLS gestiti, in cui i certificati TLS vengono creati automaticamente in base alle esigenze e rinnovati automaticamente. Questa pagina descrive questa funzionalità, disponibile nelle versioni di Google Kubernetes Engine supportate.
    • Utilizza i tuoi certificati, in cui è tua responsabilità ottenere e rinnovare i certificati. In alcuni casi, описанных в разделе Limitazioni, devi utilizzare i tuoi certificati.
  • Se utilizzi i certificati gestiti, devi anche mappare il tuo dominio personalizzato per poter utilizzare la funzionalità dei certificati gestiti.

Utilizzo di HTTPS e HTTP

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

Risoluzione dei problemi

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

Limitazioni

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

  • I certificati TLS gestiti sono disattivati e non sono supportati per i cluster privati di Knative per il servizio 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 Cloud Service Mesh. Il plug-in 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.
  • Quando esegui un cluster Knative serving su altre piattaforme, come on-prem o AWS, questa funzionalità è disattivata. Per utilizzare questa funzionalità, devi assicurarti che il tuo cluster possa accedere a Let's Encrypt e che il servizio di ingresso Cloud Service Mesh sia esposto alla rete internet pubblica.

Prima di iniziare

Le istruzioni riportate in questa pagina presuppongono quanto segue:

Disattivazione di certificati TLS gestiti e HTTPS per un intero cluster

Disattiva TLS gestito per un cluster aggiornando il ConfigMapconfig-domainmapping:

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

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

Se necessario, puoi disattivare TLS gestito per una mappatura del 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 per il servizio venga utilizzato HTTP:

    gcloud run domain-mappings describe --domain DOMAIN

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

    Controlla il campo url: nel ritorno del comando riportato sopra: l'URL deve avere http, non https.

Riabilitazione di certificati TLS gestiti e HTTPS

Per riattivare TLS gestito:

  1. Se non l'hai già fatto, crea una mappatura del dominio per il tuo servizio e aggiorna il 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 qualche minuto dopo l'esito positivo del comando, quindi assicurati che la funzionalità dei certificati funzioni:

    kubectl get kcert

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

    NAME              READY   REASON
    your-domain.com              True

    Potrebbero essere necessari da 20 secondi a 2 minuti prima che Kcert sia pronto. Se riscontri 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: your-domain.com

  2. Controlla il campo url: nel ritorno del comando riportato sopra: l'URL deve avere https, non http.

  3. Controlla l'indirizzo IP del comando precedente, elencato in resourceRecords:rrdata, e confrontalo con il valore visualizzato quando esegui il comando host DOMAIN. Devono essere uguali.

Attivazione dei reindirizzamenti HTTPS per Knative serving

Se utilizzi la funzionalità dei certificati TLS gestiti, per impostazione predefinita il cluster è esposto sia al traffico HTTP sia a quello 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 del dominio esistente richiamando il comando

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

dove DOMAIN è il nome del mapping di dominio.