Questa pagina mostra come utilizzare Oggetti Ingress per creare bilanciatori del carico con certificati SSL gestiti da Google. Questi certificati sono certificati di convalida del dominio (DV) forniti da Google, rinnova e gestisce i tuoi nomi di dominio. Questi certificati non dimostrano la tua identità individuale o organizzativa.
Per scoprire come creare certificati gestiti da Google con Google Cloud, consulta Certificati gestiti da Google.
I certificati SSL GKE gestiti da Google supportano cluster pubblici e privati.
Creazione di una risorsa Ingress con un certificato gestito da Google
Per configurare un certificato SSL gestito da Google e associarlo a una risorsa Ingress, devi:
- Crea un oggetto
ManagedCertificate
nello stesso spazio dei nomi dell'oggetto Ingress. - Associa l'oggetto
ManagedCertificate
a una risorsa Ingress aggiungendo il metodonetworking.gke.io/managed-certificates
alla risorsa Ingress. Questo L'annotazione è un elenco separato da virgole di oggettiManagedCertificate
.
Limitazioni
I certificati gestiti da Google sono meno flessibili dei certificati che ricevi e gestire la tua attività. I certificati gestiti da Google supportano fino a 100 caratteri senza caratteri jolly domini. A differenza dei certificati autogestiti, i certificati gestiti da Google supportare domini con caratteri jolly.
Se hai bisogno di certificati autogestiti o se possiedi già certificati SSL che vorresti configurare in Ingress, vedi Configura HTTPS (TLS) tra il client e il bilanciatore del carico.
Il numero e il tipo di certificati supportati da una risorsa Ingress sono definiti dal limiti dei certificati SSL gestiti da Google.
Gli aggiornamenti dei certificati gestiti da Google non sono supportati. Per ulteriori informazioni, consulta l'articolo Aggiornare manualmente un certificato gestito da Google.
Se il certificato viene revocato direttamente con l'autorità di certificazione, Google non esegue la rotazione automatica del certificato. Devi eliminare ManagedCertificate e creane uno nuovo.
Prerequisiti
- Il nome del dominio deve essere di tua proprietà. Il nome di dominio non deve essere più lungo di 63 caratteri. Puoi utilizzare Google Domains o con un altro registrar.
- Se utilizzi un cluster GKE Standard,
Il componente aggiuntivo
HttpLoadBalancing
deve essere attivato. - Il tuo
ingressClassName
deve essere"gce"
. - Devi applicare risorse
Ingress
eManagedCertificate
nello stesso progetto e spazio dei nomi. Crea un indirizzo IP esterno riservato (statico). La prenotazione di un indirizzo IP statico garantisce che questo rimanga tuo, anche se elimini l'Ingress. Se non prenoti un indirizzo IP, questo potrebbe cambiare, che richiedono la riconfigurazione dei record DNS del dominio. Utilizza Google Cloud CLI oppure nella console Google Cloud per creare un indirizzo IP riservato.
gcloud
Per creare un indirizzo IP riservato, esegui questo comando:
gcloud compute addresses create ADDRESS_NAME --global
Sostituisci
ADDRESS_NAME
con il nome dell'account riservato Indirizzo IP che stai creando.Per trovare l'indirizzo IP statico che hai creato, esegui questo comando:
gcloud compute addresses describe ADDRESS_NAME --global
L'output è simile al seguente:
address: 203.0.113.32 ...
Console
Per creare un indirizzo IP riservato:
Vai alla pagina Indirizzi IP esterni nella console Google Cloud.
Specifica un nome per l'indirizzo IP (ad esempio,
example-ip-address
).Specifica se vuoi un indirizzo IPv4 o IPv6.
Seleziona l'opzione Globale per Tipo.
Fai clic su Prenota. L'indirizzo IP è indicato nella colonna Indirizzo esterno.
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni per l'installazione per installare Config Connector sul tuo cluster.
Per eseguire il deployment di questo manifest, scaricalo sulla tua macchina comecompute-address.yaml
, ed esegui:kubectl apply -f compute-address.yaml
Configurazione di un certificato gestito da Google
Crea un oggetto
ManagedCertificate
. Questa risorsa specifica domini per il certificato SSL. I domini con caratteri jolly non sono supportati.Il seguente file manifest descrive un oggetto
ManagedCertificate
. Salva manifest comemanaged-cert.yaml
.apiVersion: networking.gke.io/v1 kind: ManagedCertificate metadata: name: managed-cert spec: domains: - FQDN_1 - FQDN_2
Sostituisci quanto segue:
FQDN_1
eFQDN_2
: Nomi di dominio completi di tua proprietà. Ad esempio,example.com
ewww.example.com
.
Applica il manifest al cluster:
kubectl apply -f managed-cert.yaml
Crea un servizio di tipo
NodePort
per esporre la tua applicazione a internet.Il seguente manifest descrive un servizio di tipo
NodePort
. Salva manifest comemc-service.yaml
.apiVersion: v1 kind: Service metadata: name: mc-service spec: selector: app: mc-service type: NodePort ports: - protocol: TCP port: 80 targetPort: 8080
Applica il manifest al cluster:
kubectl apply -f mc-service.yaml
Crea una risorsa Ingress.
Il manifest seguente descrive una risorsa Ingress che utilizza il parametro
ManagedCertificate
creato da te. Salva il manifest comemanaged-cert-ingress.yaml
.apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: managed-cert-ingress annotations: kubernetes.io/ingress.global-static-ip-name: ADDRESS_NAME networking.gke.io/managed-certificates: managed-cert kubernetes.io/ingress.class:"gce" # Updated annotation spec: defaultBackend: service: name: mc-service port: number: SERVICE_PORT
Sostituisci quanto segue:
ADDRESS_NAME
: il nome del tuo indirizzo IP riservato.SERVICE_PORT
: il valore diports.port
nel tuo Manifest del servizio.
Applica il manifest al cluster:
kubectl apply -f managed-cert-ingress.yaml
Ottieni l'indirizzo IP del bilanciatore del carico:
kubectl get ingress
L'output è simile al seguente:
NAME HOSTS ADDRESS PORTS AGE managed-cert-ingress * 203.0.113.32 80 54s
L'indirizzo IP del bilanciatore del carico è elencato nella colonna
ADDRESS
. Se utilizzando un indirizzo IP statico riservato che sarà l'indirizzo del bilanciatore del carico.Se l'indirizzo non è presente nell'elenco, attendi il completamento della configurazione di Ingress.
Configura i record DNS per i tuoi domini in modo che puntino all'indirizzo IP del con il bilanciatore del carico di rete passthrough esterno regionale. Se utilizzi Cloud DNS, vedi Gestione dei record per maggiori dettagli.
Attendi che il certificato gestito da Google completi il provisioning. Questo potrebbe possono richiedere fino a 60 minuti. Puoi verificare lo stato del certificato utilizzando il seguente comando:
kubectl describe managedcertificate managed-cert
L'output è simile al seguente:
Name: managed-cert Namespace: default Labels: <none> Annotations: <none> API Version: networking.gke.io/v1 Kind: ManagedCertificate (...) Spec: Domains: FQDN_1 FQDN_2 Status: CertificateStatus: Active (...)
Il valore del campo
Status.CertificateStatus
indica il certificato viene eseguito il provisioning. SeStatus.CertificateStatus
non èActive
, il non è stato ancora eseguito il provisioning del certificato.Puoi controllare gli eventi su una risorsa Ingress utilizzando il seguente comando:
kubectl describe ingress INGRESS_NAME
Sostituisci
INGRESS_NAME
con il nome del tuo Ingress.Verifica il funzionamento del protocollo SSL visitando i tuoi domini utilizzando
https://
. Il tuo browser indica che la connessione è sicura e puoi visualizzare i dettagli del certificato.
Migrazione a certificati gestiti da Google da certificati autogestiti
Quando esegui la migrazione di una risorsa Ingress dall'utilizzo di certificati SSL autogestiti a Certificati SSL gestiti da Google, non eliminare i certificati SSL autogestiti prima che siano attivi i certificati SSL gestiti da Google. Dopo che l'architettura gestita da Google Provisioning dei certificati SSL riuscito: diventano automaticamente attivi. Quando i certificati SSL gestiti da Google sono attivi, puoi eliminare certificati SSL autogestiti.
Utilizza queste istruzioni per eseguire la migrazione da SSL autogestito a quello gestito da Google certificati.
- Aggiungi un nuovo certificato gestito da Google a Ingress, come descritto nella sezione Configurare un certificato gestito da Google.
Attendi fino a quando lo stato della risorsa del certificato gestito da Google non diventa Attivo. Controlla lo stato del certificato con il seguente comando:
kubectl describe managedcertificate managed-cert
Quando lo stato è
Active
, aggiorna la risorsa Ingress per rimuovere i riferimenti a il certificato autogestito.
Rimozione di un certificato gestito da Google
Per rimuovere un certificato gestito da Google dal cluster, devi eliminare il certificato
ManagedCertificate
e rimuovi l'annotazione Ingress che fa riferimento
li annotino.
Elimina l'oggetto
ManagedCertificate
:kubectl delete -f managed-cert.yaml
L'output è simile al seguente:
managedcertificate.networking.gke.io "managed-cert" deleted
Rimuovi l'annotazione dalla risorsa Ingress:
kubectl annotate ingress managed-cert-ingress networking.gke.io/managed-certificates-
Osserva il segno meno,
-
, alla fine del comando.Rilascia l'indirizzo IP statico che hai prenotato per il bilanciatore del carico.
Puoi utilizzare Google Cloud CLI, la console Google Cloud o Config Connector per rilasciare un indirizzo IP riservato.
gcloud
Utilizza il seguente comando per rilasciare l'indirizzo IP riservato:
gcloud compute addresses delete ADDRESS_NAME --global
Sostituisci
ADDRESS_NAME
con il nome dell'IP .Console
Per rilasciare l'indirizzo IP riservato, segui questi passaggi:
Vai alla pagina Indirizzi IP esterni nella console Google Cloud.
Seleziona la casella di controllo accanto all'indirizzo IP che vuoi rilasciare.
Fai clic su Rilascia indirizzo IP.
Config Connector
Nota: questo passaggio richiede Config Connector. Segui le istruzioni per l'installazione per installare Config Connector sul tuo cluster.
Per eseguire il deployment di questo manifest, scaricalo sulla tua macchina come
compute-address.yaml
, ed esegui:kubectl delete -f compute-address.yaml
Risoluzione dei problemi
Questa sezione fornisce informazioni su come risolvere i problemi relativi all'account Google certificati.
Controlla gli eventi su risorse ManagedCertificate
e Ingress
Se superi il numero di certificati consentiti, un evento con un
TooManyCertificates
motivo aggiunto a ManagedCertificate
. Puoi
verifica gli eventi su un oggetto ManagedCertificate
utilizzando il seguente comando:
kubectl describe managedcertificate CERTIFICATE_NAME
Sostituisci CERTIFICATE_NAME
con il nome del tuo
ManagedCertificate
.
Se colleghi un elemento ManagedCertificate
inesistente a una risorsa Ingress, viene generato un evento
con un motivo MissingCertificate
viene aggiunto a Ingress. Puoi controllare
su una risorsa Ingress utilizzando il seguente comando:
kubectl describe ingress INGRESS_NAME
Sostituisci INGRESS_NAME
con il nome del tuo Ingress.
Non viene eseguito il provisioning del certificato gestito quando il dominio si risolve in indirizzi IP di più bilanciatori del carico
Quando il dominio si risolve in indirizzi IP di più bilanciatori del carico (più
oggetti Ingress), devi creare un singolo oggetto ManagedCertificate
e
a tutti gli oggetti Ingress. Se invece crei molti
ManagedCertificate
oggetti e collega ciascuno di essi a un oggetto Ingress separato,
L'autorità di certificazione potrebbe non essere in grado di verificare la proprietà del tuo dominio
e di alcuni dei tuoi certificati potrebbe non essere stato eseguito il provisioning. Per la verifica
avere successo, il certificato deve essere visibile su tutti gli indirizzi IP
in cui viene risolto il dominio.
In particolare, quando il dominio si risolve in un indirizzo IPv4 e uno IPv6 che
configurati con oggetti Ingress diversi, devi creare un singolo
ManagedCertificate
e collegalo a entrambi gli oggetti Ingress.
Comunicazione interrotta tra i certificati gestiti da Google e Ingress
I certificati gestiti comunicano con Ingress utilizzando
Annotazione ingress.gcp.kubernetes.io/pre-shared-cert
. Puoi interrompere questa comunicazione
se, ad esempio:
- Esegui un processo automatico che cancelli il
ingress.gcp.kubernetes.io/pre-shared-cert
annotazione. - Archivia uno snapshot di Ingress, quindi eliminalo e ripristinalo dal
senza dover creare uno snapshot. Nel frattempo, una risorsa
SslCertificate
elencata nella L'annotazioneingress.gcp.kubernetes.io/pre-shared-cert
potrebbe essere stata eliminata. Il traffico in entrata non funziona se mancano tutti i certificati allegati.
Se la comunicazione tra i certificati gestiti da Google e Ingress viene interrotta,
elimina i contenuti dell'annotazione ingress.gcp.kubernetes.io/pre-shared-cert
e attendi
per consentire la riconciliazione del sistema. Per evitare la ricorrenza, assicurati che l'annotazione
non venga inavvertitamente modificato o eliminato.
Errori di convalida durante la creazione di un certificato gestito da Google
Le definizioni di ManagedCertificate
vengono convalidate prima della data ManagedCertificate
viene creato. Se la convalida ha esito negativo, l'oggetto ManagedCertificate
viene
non viene creato e viene stampato un messaggio di errore. I diversi messaggi di errore e
sono spiegati come segue:
spec.domains in body should have at most 100 items
Il file manifest ManagedCertificate
elenca più di 100 domini nel
spec.domains
. I certificati gestiti da Google supportano solo fino a 100 domini.
spec.domains in body should match '^(([a-zA-Z0-9]+|[a-zA-Z0-9][-a-zA-Z0-9]*[a-zA-Z0-9])\.)+[a-zA-Z][-a-zA-Z0-9]*[a-zA-Z0-9]\.?$'
Hai specificato un nome di dominio non valido o un nome di dominio con caratteri jolly nella
campo spec.domains
. L'oggetto ManagedCertificate
non supporta
domini con caratteri jolly (ad esempio *.example.com
).
spec.domains in body should be at most 63 chars long
Hai specificato un nome di dominio troppo lungo. Supporto dei certificati gestiti da Google nomi di dominio composti da un massimo di 63 caratteri.
Aggiornamento manuale di un certificato gestito da Google
Per aggiornare manualmente il certificato in modo che quello del dominio precedente continuerà a funzionare finché non viene eseguito il provisioning del certificato segui questi passaggi:
- Crea un
ManagedCertificate
per il nuovo dominio. - Aggiungi il nome dell'evento
ManagedCertificate
alnetworking.gke.io/managed-certificates
sulla risorsa Ingress utilizzando un elenco separato da virgole. Non rimuovere il nome del certificato precedente. - Attendi fino a quando
ManagedCertificate
non diventa attivo. - Scollega il vecchio certificato dalla risorsa Ingress ed eliminalo.
Quando crei un ManagedCertificate
, Google Cloud crea un'istanza
Certificato SSL gestito da Google. Non puoi aggiornare questo certificato. Se
aggiorna ManagedCertificate
, Google Cloud elimina e ricrea
Certificato SSL gestito da Google.
Per fornire Ingress sicuro con crittografia HTTPS per i tuoi cluster GKE, vedi l'esempio Secure Ingress.
Passaggi successivi
- Scopri di più su Certificati gestiti da Google.
- Scopri come configurare un Application Load Balancer esterno con Ingress.
- Scopri come Utilizza più certificati SSL con bilanciatori del carico delle applicazioni esterni con Ingress.
- Implementare un modello Ingress sicuro.