Questa pagina spiega come configurare un server di registro dei container esistente per Google Distributed Cloud (solo software) per VMware.
Questa pagina è rivolta ad amministratori, architetti e operatori che configurano, monitorano e gestiscono l'infrastruttura tecnologica. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta Ruoli e attività comuni degli utenti GKE. Google Cloud
Panoramica
Per impostazione predefinita, durante la creazione o l'upgrade del cluster, Google Distributed Cloud estrae le immagini di sistema da gcr.io/gke-on-prem-release utilizzando l'account di servizio di accesso ai componenti.
Se vuoi, puoi fornire il tuo server di registro dei container in modo che
le immagini di sistema vengano estratte dal tuo server di registro privato.
Google Distributed Cloud non supporta i registri dei container non protetti. Quando avvii il server del registro dei container, devi fornire un certificato e una chiave. Il certificato può essere firmato da un'autorità di certificazione (CA) pubblica oppure può essere autofirmato.
Crea un server del registro dei container
Per scoprire come creare un server Container Registry, consulta la sezione Eseguire un registro accessibile esternamente nella documentazione di Docker.
Configura il registro
Per utilizzare un registro dei container privato, puoi utilizzare lo strumento a riga di comando gkectl o Terraform.
gkectl
Aggiungi la sezione
privateRegistryal file di configurazione del cluster di amministrazione prima di creare il cluster.Quando questa sezione è compilata:
Quando esegui il comando
gkectl prepareprima della creazione o dell'upgrade del cluster, il comando estrae le immagini dal file tar specificato nel campobundlePathdel file di configurazione del cluster di amministrazione e le invia al server del registro privato.Durante la creazione o l'upgrade del cluster, le immagini di sistema vengono estratte dal server del registro privato.
Se la tua rete si trova dietro un server proxy, compila la sezione
proxy.
Terraform
- Segui i passaggi nella scheda Terraform in Creare un cluster di amministrazione per compilare il file di configurazione del cluster di amministrazione.
Aggiungi quanto segue al file di configurazione del cluster di amministrazione:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }Sostituisci quanto segue:
ADDRESS: l'indirizzo IP o il nome di dominio completo (FQDN) della macchina che esegue il registro privato.CA_CERT: i dati del certificato CA della chiave pubblica per il registro privato in formato PEM. Per ottenere il certificato CA nel formato richiesto, svolgi i seguenti passaggi:
Esegui questo comando:
cat PUBLIC_KEY_PATH | tr '\n' '\\n'
Sostituisci
PUBLIC_KEY_PATHcon il percorso della chiave pubblica.Copia il certificato generato dal comando precedente e incollalo in un editor di testo. Sostituisci tutte le istanze del carattere barra rovesciata (\) con un carattere di nuova riga (\n).
Copia il certificato modificato e incollalo nella variabile segnaposto
CA_CERT.
Se la tua rete si trova dietro un server proxy, aggiungi quanto segue:
proxy { url: "PROXY_SERVER_ADDRESS" no_proxy: "BYPASS_LIST" }Sostituisci quanto segue:
PROXY_SERVER_ADDRESS: l'indirizzo HTTP del server proxy. Includi il numero di porta anche se è lo stesso della porta predefinita dello schema.BYPASS_LIST: un elenco separato da virgole di indirizzi IP, intervalli di indirizzi IP, nomi host e nomi di dominio che non devono passare attraverso il server proxy.
Esempio:
url: "http://my-proxy.example.local:80" no_proxy: "192.0.2.0/24,my-host.example.local,198.51.100.0"Quando Google Distributed Cloud invia una richiesta a uno di questi indirizzi, host o domini, la richiesta bypassa il server proxy e viene inviata direttamente alla destinazione.
Continua con i passaggi nella scheda Terraform in Creare un cluster di amministrazione per verificare il file di configurazione e il piano Terraform, quindi crea il cluster di bootstrap.
Quando esegui il comando
gkectl register bootstrap,gkectlti chiede di inserire il nome utente e poi la password per il registro privato.
Durante la creazione del cluster, le immagini di sistema vengono estratte dal server di registro privato.
Limitazioni con i cluster avanzati e il bundle completo
Sono disponibili due pacchetti Google Distributed Cloud: completo e standard. Per determinare
quale bundle si trova nella workstation amministrativa, controlla il campo bundlePath nel
file di configurazione del cluster di amministrazione. Se il nome del file termina con -full, l'intero
bundle si trova sulla workstation di amministrazione. Se il nome file non termina con -full, il bundle regolare si trova sulla workstation di amministrazione.
Se hai creato la workstation di amministrazione utilizzando il comando gkeadm, questo comando
crea la VM della workstation di amministrazione con il bundle completo e configura il
campo bundlePath nel file di configurazione del cluster di amministrazione.
Se è attivato il cluster avanzato, esistono limitazioni all'utilizzo dell'intero bundle con un registro privato, come segue:
Versione 1.31: il bundle completo non è supportato con un registro privato. Per utilizzare un registro privato su un cluster avanzato:
- Scarica il bundle di dimensioni normali sulla tua workstation amministrativa.
- Aggiorna il nome file nel campo
bundlePathdel file di configurazione del cluster di amministrazione.
Versione 1.32: l'utilizzo dell'intero bundle è supportato, ma il comando
gkectl prepareestrae le immagini dagcr.io/gke-on-prem-releaseanziché dal file tar. Il comando esegue il push delle immagini nel tuo registro privato, in modo che le immagini di sistema vengano estratte dal tuo registro privato durante la creazione o l'upgrade del cluster.
Differenze tra cluster normali e avanzati
Il cluster avanzato introduce diverse differenze chiave rispetto ai cluster standard:
- Quando utilizzi un registro privato, le immagini sembrano essere estratte da
gcr.io, non dal nome host del tuo registro privato. Questa modifica è prevista, anche se le immagini vengono effettivamente estratte dal server del registro privato. - I pull di immagini utilizzano le credenziali del file
/etc/containerd/config.tomlin ogni macchina che si connette al registro privato, anziché del secretprivate-registry-credsall'interno del cluster. - Per tutte le immagini
gcr.io, il cluster tenta prima di eseguire il pull dal registro privato. Se l'immagine non è nel registro privato, il sistema la estrae dagcr.iosu internet. Per interrompere questo fallback, configuranoProxyo utilizza le regole firewall per bloccare il trafficogcr.io.
Per verificare che le immagini vengano estratte dall'origine corretta, consulta Verificare che le immagini vengano estratte dal server di registro.
Verifica che le immagini vengano estratte dal server di registro
La modalità di verifica che le immagini vengano estratte dal server di registro dipende dall'attivazione o meno del cluster avanzato.
Se il cluster avanzato non è abilitato, esegui questo comando:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \ --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"Sostituisci
ADMIN_CLUSTER_KUBECONFIGcon il percorso del file kubeconfig per il cluster di amministrazione.L'output di questo comando mostra tutte le immagini nel cluster. Puoi verificare che tutte le immagini Google Distributed Cloud provengano dal tuo server di registro.
Se il cluster avanzato è abilitato, segui questi passaggi:
Puoi determinare se
containerdestrae le immagini dal tuo registro locale esaminando i contenuti di un file denominatoconfig.tomlcome mostrato nei seguenti passaggi:- Accedi a un nodo ed esamina i contenuti del file
/etc/containerd/config.toml. Controlla il campo
plugins."io.containerd.grpc.v1.cri".registry.mirrorsdel fileconfig.tomlper verificare se il server di registro è elencato nel campoendpoint.Di seguito è riportato un estratto di un file
config.tomldi esempio.version = 2 root = "/var/lib/containerd" state = "/run/containerd" ... [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"] [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls] ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt' [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"] endpoint = ["http://privateregistry.io", "http://privateregistry2.io"] ...Se il mirror del registro viene visualizzato nel campo
endpoint, il nodo sta estraendo le immagini dal mirror del registro anziché da Artifact Registry.
- Accedi a un nodo ed esamina i contenuti del file