Configurazione dei mirror del registro

Mirroring del registro

Gli specchi del Registro di sistema sono progettati per eseguire il mirroring delle immagini da gcr.io e docker.io. Ad esempio, se provi a eseguire il pull di un'immagine gcr.io/kubernetes-e2e-test-images/nautilus:1.0, funziona solo se il tuo servizio di registro ha questa immagine nello stesso percorso, come 172.18.0.20:5000/kubernetes-e2e-test-images/nautilus:1.0. Tutte le immagini non gcr.io continuano a funzionare normalmente, ad esempio puoi estrarre k8s.gcr.io/pause:3.1.

Il mirroring del registry consente di risparmiare sul traffico e offre un'alternativa all'utilizzo di gcr.io in caso di isolamento dei cluster dalle interruzioni di gcr.io. oltre a consentirti di eseguire un'analisi delle vulnerabilità personalizzata.

Prima di iniziare

  • Devi configurare un server di Container Registry nella tua rete.
  • Se il server del Registro di sistema esegue un certificato TLS privato, devi disporre del file dell'autorità di certificazione (CA).
  • Se il server del Registro di sistema ha bisogno di autenticazione, devi disporre delle credenziali di accesso o del file di configurazione Docker.

Caricare le immagini container sul server del Registro di sistema

Carica le immagini dal pacchetto di immagini sul tuo server di registro eseguendo:

actl images push \
    --private-registry=PRIVATE_REGISTRY \
    --images ~/anthos-baremetal-private-mode

Sostituisci quanto segue:

  • PRIVATE_REGISTRY con l'indirizzo del registro privato (e la porta) e il sottoprogetto come 172.18.0.20:5000/test-namespace.

  • Inserisci il tuo nome utente e la password quando richiesto oppure seleziona un file di configurazione Docker. Se il server del Registro di sistema non richiede le credenziali, specifica --no-registry-credential.

Per ulteriori informazioni sul comando actl images push, esegui questo comando:

actl images push --help

Utilizzare il tuo spazio dei nomi

Se vuoi utilizzare un tuo spazio dei nomi nel server del Registro di sistema anziché lo spazio dei nomi radice, containerd può eseguire il pull da questo spazio dei nomi secondario se fornisci l'endpoint API per il tuo registro privato in registryMirrors.endpoint. Il formato dell'endpoint è generalmente <REGISTRY_IP:PORT>/v2/<NAMESPACE>. Per i dettagli specifici, consulta la guida dell'utente del registro 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 in uno spazio dei nomi test-namespace:

actl images push \
    --images= ~/anthos-baremetal-private-mode \
    --private-registry=172.18.0.20:5000/test-namespace

Quindi, nel file YAML del cluster, puoi inserire quanto segue per eseguire il pull containerd dallo spazio dei nomi secondario:

registryMirrors:
  - endpoint: https://172.18.0.20:5000/v2/test-namespace

Crea cluster dal mirror del registro

Di seguito è riportato un file di configurazione del cluster di esempio che utilizza il tuo server mirror del registro anziché gcr.io.

Se il Registro di sistema 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 dei cluster, consulta la pagina sulla configurazione dei 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 mirror del registro 172.18.0.20:5000 anziché gcr.io (e docker.io).

Fail over a gcr.io

Se il cluster non riesce a eseguire il pull dal mirroring del Registro di sistema, verrà eseguito automaticamente il failover su gcr.io. Per questo motivo, ti consigliamo di fornire un valore per privateRegistryConfigPath nel file di configurazione del cluster. Se non viene fornito un valore, il cluster non è in grado di eseguire il pull da gcr.io in caso di errore del mirror del registry.

# 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 non hai bisogno della funzionalità di failover Pull, non devi aggiungere un elemento privateRegistryConfigPath o gcr.io (e docker.io) all'elenco delle autorizzazioni proxy.

Aggiorna endpoint mirror del registro, certificati e credenziali pull

Per aggiornare gli endpoint mirror del registro, i certificati o le credenziali di pull:

  1. Nel file di configurazione del cluster, aggiorna l'endpoint, il file del certificato CA e recupera il percorso del file di configurazione delle credenziali.

  2. Per applicare le modifiche, esegui:

    actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG
    

Passaggi successivi