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/dockerconfigjsonSe 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.