Configurazione dei mirror del registro

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, come 172.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:

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

  2. Applica le modifiche eseguendo:

    actl clusters baremetal update cluster admin --kubeconfig=ADMIN_KUBECONFIG
    

Passaggi successivi