Scopri come configurare il servizio Knative in modo da utilizzare i tuoi certificati SSL/TLS.
In alternativa, puoi utilizzare la funzionalità di certificati TLS gestiti, che crea e rinnova automaticamente i certificati TLS tramite Let's Encrypt.
Per utilizzare i tuoi certificati, archiviali in un secret Kubernetes e configura il gateway di ingresso di Cloud Service Mesh in modo che lo utilizzi.
Prima di iniziare
- Queste istruzioni presuppongono che tu abbia già ottenuto il protocollo TLS certificati.
- Devi configurare un dominio personalizzato. Per maggiori dettagli, vedi Mappatura di domini personalizzati.
- Devi configurare ciascuno dei tuoi servizi Knative serving
che utilizzano
Gateway in entrata
per gestire il traffico esterno. Se questi servizi rivolti all'esterno non vengono
configurato per l'utilizzo dei certificati TLS, i servizi
verifica una connessione HTTPS e, pertanto, non raggiunge mai lo stato
ready
.
Archiviazione dei certificati TLS in un secret Kubernetes
Per archiviare i certificati in un secret:
Apri un terminale e vai alla directory in cui si trovano i tuoi certificati TLS in cui si trovano.
Utilizza il seguente comando per creare un segreto che memorizzi i tuoi certificati:
kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \ --key PRIVATE_KEY.pem \ --cert FULL_CHAIN.pem
Sostituisci:
- INGRESS_NAMESPACE con lo spazio dei nomi dei tuoi
servizio in entrata,
istio-ingressgateway
. Specifica il valoreistio-system
se hai installato Cloud Service Mesh utilizzando la configurazione predefinita. - SECRET_NAME con il nome che vuoi utilizzare per il tuo il secret di Kubernetes.
- PRIVATE_KEY.pem con il nome del file che contiene la chiave privata del tuo certificato.
- FULL_CHAIN.pem con il nome del file che contiene il tuo certificato pubblico.
- INGRESS_NAMESPACE con lo spazio dei nomi dei tuoi
servizio in entrata,
Ora puoi configurare il gateway in entrata in modo che utilizzi il secret che hai appena creato per il certificato TLS.
Configurazione del gateway in entrata per l'utilizzo dei certificati
Modifica il gateway in entrata di Cloud Service Mesh in modo che utilizzi il secret che hai creato per i tuoi certificati TLS:
Apri il file YAML del gateway di ingresso in modalità di modifica eseguendo il seguente comando:
kubectl edit gateway knative-ingress-gateway --namespace knative-serving
Esempio della configurazione predefinita del gateway in entrata:
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Configura il gateway in entrata in modo che utilizzi il tuo secret aggiungendo
hosts
,port
etls
al file YAML esistente.Per configurare tutti i servizi in modo che utilizzino la stessa password: aggiungi quanto segue alla configurazione YAML e specifica
"*"
come valore dell'attributohosts
:... # other skipped configuration ... - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Sostituisci SECRET_NAME con il nome del segreto che hai creato.
Per configurare singolarmente ogni servizio: aggiungi quanto segue. alla configurazione YAML e specifica i valori per
hosts
utilizzando il nome e lo spazio dei nomi del servizio:Per ogni servizio, specifica i valori per gli attributi
hosts
,port
etls
:... # other skipped configuration ... - hosts: - SERVICE_NAME.SERVICE_NAMESPACE.CUSTOM_DOMAIN port: number: 443 name: https-SERVICE_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Sostituisci:
- SERVICE_NAME con il nome Knative serving completamente gestito di Google Cloud. Ogni servizio che utilizza il gateway in entrata per gestire server il traffico deve essere configurato singolarmente.
- SERVICE_NAMESPACE con il nome dello spazio dei nomi in cui è in esecuzione il servizio.
- CUSTOM_DOMAIN con il dominio personalizzato per cui hai configurato il servizio da utilizzare.
- SECRET_NAME con il nome del segreto che vuoi che il servizio utilizzi. Se hai creato più secret per diversi set di certificati TLS, puoi specificare quale secret utilizza ciascun servizio.
Salva le modifiche.
Ora puoi utilizzare il protocollo HTTPS per accedere ai servizi Knative serving di cui è stato eseguito il deployment.
Esempi
- Configura tutti i servizi:
Questo esempio mostra come configurare tutti i servizi per l'utilizzo
TLSsecret
secret:apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret
- Per configurare i singoli servizi:
Questo esempio mostra come configurare singolarmente tutti e tre i servizi che gestiscono il traffico internet:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - prodservice.prodnamespace.my-custom-domain.com port: number: 443 name: https-prodservice protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - experiment.namespace.my-custom-domain.com port: number: 443 name: https-experiment protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - fallbackservice.anothernamespace.my-custom-domain.com port: number: 443 name: https-fallbackservice protocol: HTTPS tls: mode: SIMPLE credentialName: anotherTLSsecret