Mirroring del Registro di sistema
I mirroring del registry sono progettati per eseguire il mirroring delle immagini da gcr.io
e docker.io
. Ad esempio, se provi a estrarre un'immagine
gcr.io/kubernetes-e2e-test-images/nautilus:1.0
, questo funziona solo se
il servizio di registro contiene questa immagine nello stesso percorso, ad esempio
172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0
.
Tutte le immagini non gcr.io
continuano a funzionare normalmente, ad esempio è comunque possibile estrarre
k8s.gcr.io/pause:3.1
.
L'uso di un mirroring del registry consente di risparmiare sul traffico e offre un'alternativa all'utilizzo di gcr.io
nel caso in cui sia necessario isolare i cluster dalle interruzioni di gcr.io
.
Consente inoltre di condurre la tua analisi delle vulnerabilità.
Prima di iniziare
- Devi disporre di un server Container Registry configurato nella tua rete.
- Se il server di registro esegue un certificato TLS privato, devi disporre del file dell'autorità di certificazione (CA).
- Se il server del Registro di sistema ha bisogno dell'autenticazione, devi disporre delle credenziali di accesso o del file di configurazione Docker corretti.
Carica immagini container sul server del Registro di sistema
Carica le immagini dal pacchetto di immagini sul server del Registro di sistema eseguendo questo comando:
actl images push \
--private-registry=PRIVATE_REGISTRY \
--images ~/anthos-baremetal-private-mode
Sostituisci quanto segue:
PRIVATE_REGISTRY
con l'indirizzo (e la porta) del Registro di sistema privato e il sottoprogetto, come172.18.0.20:5000/test-namespace
.Inserisci il tuo nome utente e la tua password quando richiesto oppure seleziona un file di configurazione Docker. Se il tuo server del Registro di sistema non richiede credenziali, specifica
--no-registry-credential
.
Per maggiori informazioni sul comando actl images push
, esegui:
actl images push --help
Utilizzare il proprio spazio dei nomi
Se vuoi utilizzare il tuo spazio dei nomi nel server di registro anziché lo spazio dei nomi root, containerd
può estrarre da questo spazio dei nomi del subaccount se fornisci l'endpoint API per il tuo registro privato in registryMirrors.endpoint
. In genere,
l'endpoint ha il formato <REGISTRY_IP:PORT>/v2/<NAMESPACE>
. Per i dettagli specifici, consulta la guida utente del tuo Registro di sistema privato.
Ad esempio, se hai accesso solo a 172.18.0.20:5000/test-namespace/
, puoi utilizzare il seguente comando per caricare tutte le immagini nello spazio dei nomi
test-namespace
:
actl images push \
--images= ~/anthos-baremetal-private-mode \
--private-registry=172.18.0.20:5000/test-namespace
Nel file YAML del cluster puoi inserire quanto segue per fare in modo che containerd
pull dallo spazio dei nomi secondario:
registryMirrors:
- endpoint: https://172.18.0.20:5000/v2/test-namespace
Crea cluster dal mirroring del Registro di sistema
Di seguito è riportato un file di configurazione del cluster di esempio che utilizza il tuo server mirror di registro invece di gcr.io
.
Se il tuo registro non richiede un certificato TLS privato, puoi lasciare vuoto il campo caCertPath
.
Se il server del Registro di sistema non richiede un file di configurazione Docker
di autenticazione, puoi lasciare vuoto il campo pullCredentialConfigPath
.
Per informazioni dettagliate sulla configurazione del cluster, consulta Configurazione del cluster.
# Sample cluster config with registry mirror:
---
sshPrivateKeyPath: /root/ssh-key/id_rsa
registryMirrors:
- endpoint: https://172.18.0.20:5000/v2/test-namespace
caCertPath: /root/ca.crt
pullCredentialConfigPath: /root/.docker/config.json
---
apiVersion: v1
kind: Namespace
metadata:
name: cluster-admin
---
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: admin
namespace: cluster-admin
spec:
nodeConfig:
containerRuntime: containerd
...
Tutti i nodi in questo cluster utilizzeranno questo mirroring del registro 172.18.0.20:5000
anziché gcr.io
(e docker.io
).
Failover a gcr.io
Se il cluster non riesce a eseguire il pull dal mirroring del Registro di sistema, eseguirà il failover automatico in gcr.io
. Ecco perché consigliamo di fornire un valore per
privateRegistryConfigPath
nel file di configurazione del cluster. Se non viene fornito un valore, il cluster non può eseguire il pull da gcr.io
nel caso in cui il mirroring del registry non funzioni.
# Sample cluster config with registry mirror:
---
privateRegistryConfigPath: /root/.docker/config.json
registryMirrors:
- endpoint: https://172.18.0.20:5000
caCertPath: /root/ca.crt
pullCredentialConfigPath: /root/.docker/config.json
Se la funzionalità di pull pull non è necessaria, non devi aggiungere un elemento privateRegistryConfigPath
o gcr.io
(e docker.io
) alla lista consentita del proxy.
Aggiornare endpoint e certificati di mirroring del Registro di sistema
Per aggiornare il mirroring degli endpoint, dei certificati o delle credenziali di pull del Registro di sistema:
Nel file di configurazione del cluster, aggiorna l'endpoint, il file del certificato CA e il percorso del file di configurazione delle credenziali.
Applica le modifiche eseguendo:
actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG