Puoi configurare il tuo cluster Google Distributed Cloud in modo che i relativi nodi worker possano
utilizzare registri privati. I registri privati a livello di nodo sono destinati all'utilizzo con i tuoi carichi di lavoro per offrirti un maggiore controllo sui pull delle immagini e sulla relativa sicurezza. Quando configuri un cluster con i registri privati come descritto in questo documento, Google Distributed Cloud aggiorna la configurazione containerd di conseguenza. Una volta configurato il cluster, tutti i pod sui nodi qualificati possono utilizzare i registri senza dover specificare imagePullSecrets
nella specifica del pod.
Questa funzionalità può essere abilitata o disabilitata in qualsiasi momento durante il ciclo di vita del cluster.
Prerequisiti
Per utilizzare questa funzionalità di anteprima, il cluster deve soddisfare i seguenti requisiti:
- Questa funzionalità è destinata ai cluster utente e ai cluster autogestiti (ibridi e autonomi) con pool di nodi worker.
- La versione del cluster deve essere 1.29.
- La versione del pool di nodi deve essere 1.29 (non tutti i pool di nodi devono essere alla versione 1.29, ma la funzionalità è valida solo per i pool di nodi con versione 1.29).
- Il cluster deve avere
l'annotazione della funzionalità di anteprima
preview.baremetal.cluster.gke.io/private-registry: "enable"
.
Configura un cluster a gestione autonoma per i registri privati
Per configurare un cluster autonomo o ibrido per l'utilizzo di registri privati a livello di nodo:
Modifica il file di configurazione del cluster per aggiungere il blocco
privateRegistries
nella sezione delle credenziali:--- gcrKeyPath: baremetal/gcr.json sshPrivateKeyPath: .ssh/id_rsa ... privateRegistries: - host: REGISTRY_HOST caCertPath: CA_CERT_PATH pullCredentialConfigPath: CREDENTIALS_FILE_PATH ... --- apiVersion: v1 kind: Namespace metadata: name: cluster-hybrid-basic --- apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: hybrid-basic namespace: cluster-hybrid-basic annotations: preview.baremetal.cluster.gke.io/private-registry: "enable" ... spec: type: hybrid ...
Sostituisci quanto segue:
REGISTRY_HOST
: il nome di dominio o l'indirizzo IP del registro privato e la porta. Ad esempio:10.200.0.2:5007
.CA_CERT_PATH
: il percorso del file del certificato CA (CA principale del server). Ad esempio:/root/cert.pem
. Se il tuo registro privato non richiede un certificato TLS privato, puoi omettere questo campo.CREDENTIALS_FILE_PATH
: il percorso del file che contiene le credenziali per accedere al registro privato. Ad esempio:/root/.docker/config.json
. Se il tuo server del registry privato non richiede le credenziali per l'autenticazione, puoi omettere questo campo.
Applica le modifiche al cluster:
bmctl update cluster -c CLUSTER_NAME --kubeconfig=CLUSTER_KUBECONFIG
Sostituisci quanto segue:
CLUSTER_NAME
: il nome del cluster che vuoi aggiornare.CLUSTER_KUBECONFIG
: percorso del file kubeconfig del cluster autogestito (ibrido o autonomo).
Configura un cluster utente per i registri privati
Per i cluster utente, la configurazione del registro privato viene specificata nelle specifiche delle risorse cluster. Inoltre, per i cluster utente, devi archiviare le credenziali del registro privato in un secret:
Crea un secret Kubernetes di tipo
kubernetes.io/dockerconfigjson
per le credenziali del registro:Se vuoi limitare il secret a uno spazio dei nomi specifico, aggiungi il flag
--namespace
al comando seguente per specificare il nome dello spazio dei nomi.kubectl create secret docker-registry CREDS_SECRET_NAME \ --from-file=.dockerconfigjson=CREDENTIALS_FILE_PATH \ --kubeconfig=ADMIN_KUBECONFIG
Sostituisci quanto segue:
CREDS_SECRET_NAME
: il nome del tuo secret.CREDENTIALS_FILE_PATH
: il percorso del file di configurazione Docker. Ad esempio,/root/.docker/config.json
.
Il tuo secret dovrebbe essere simile al seguente esempio:
apiVersion: v1 data: .dockerconfigjson: ewoJImF1dGhzIjogewoJ...clpYSXdNak14IgoJCX0KCX0KfQ== kind: Secret metadata: creationTimestamp: "2024-04-28T22:06:06Z" name: private-registry-secret namespace: default resourceVersion: "5055821" ... annotations: ... baremetal.cluster.gke.io/mark-source: "true" type: kubernetes.io/dockerconfigjson
Se il secret non si trova nello stesso spazio dei nomi del cluster, aggiungi l'annotazione
baremetal.cluster.gke.io/mark-source: "true"
, come mostrato nell'esempio precedente.Se applicabile, memorizza il certificato CA per il registry in un secret.
Il secret è simile al seguente:
apiVersion: v1 kind: Secret metadata: annotations: baremetal.cluster.gke.io/mark-source: "true" name: ca-9dd74fd308bac6df562c7a7b220590b5 namespace: some-namespace type: Opaque data: ca.crt: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR2RENDQXFTZ0F3SUJBZ0lVQi 3UGxjUzVFVk8vS0xuYjZiMHRhRFVleXJvd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2ZqRUxNQWtHQ ... QnpPTkxTRFZJVk5LMm9YV1JvNEpJY0ZoNFZ4MWRMRHpqMldEaHhrUEljWEhLdGR3dk5iS2tocU LUVORCBDRVJUSUZJQ0FURS0tLS0tCg== ```
Modifica il file di configurazione del cluster utente per abilitare e configurare il registro privato:
Aggiungi l'annotazione
preview.baremetal.cluster.gke.io/private-registry: "enable"
per abilitare il registro privato mentre è in anteprima.apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic namespace: cluster-user-basic resourceVersion: "766027" annotations: ... preview.baremetal.cluster.gke.io/private-registry: "enable" ...
Nella sezione
nodeConfig
del file di configurazione del cluster utente, aggiungi il bloccoprivateRegistries
:apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: user-basic ... spec: bypassPreflightCheck: false ... nodeConfig: containerRuntime: containerd podDensity: maxPodsPerNode: 250 privateRegistries: - caCertSecretRef: name: CA_CERT_SECRET_NAME namespace: CA_CERT_SECRET_NAMESPACE host: REGISTRY_HOST pullCredentialSecretRef: name: CREDS_SECRET_NAME namespace: CREDS_SECRET_NAMESPACE
Sostituisci quanto segue:
CA_CERT_SECRET_NAME
: il nome del secret che hai creato per archiviare il certificato CA. Se non hai creato questo secret, rimuovi il bloccocaCertSecretRef
.CA_CERT_SECRET_NAMESPACE
: il nome dello spazio dei nomi per il secret del certificato CA, se lo hai creato.REGISTRY_HOST
: il nome di dominio o l'indirizzo IP del registro privato e la porta. Ad esempio:10.200.0.2:5007
.CREDS_SECRET_NAME
: il nome del tipo Secretkubernetes.io/dockerconfigjson
per le credenziali del registry.CREDS_SECRET_NAMESPACE
: il nome dello spazio dei nomi per il Secret delle credenziali del registry.
Applica le modifiche al cluster:
bmctl update cluster -c USER_CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
Sostituisci quanto segue:
USER_CLUSTER_NAME
: il nome del cluster che stai aggiornando.ADMIN_KUBECONFIG
: percorso del file kubeconfig del cluster di amministrazione.