Creazione di registri di immagini private
Per la maggior parte delle distribuzioni di Red Hat OpenShift, utilizzando un registro pubblico come "Quay.io" O "DockerHub" soddisfa la maggior parte delle esigenze dei clienti. Tuttavia, ci sono momenti in cui un cliente potrebbe voler ospitare le proprie immagini private o personalizzate.
Questa procedura documenta la creazione di un registro di immagini privato supportato da un volume persistente fornito da Trident e NetApp ONTAP.
|
Trident Protect necessita di un registro per ospitare le immagini richieste dai contenitori Astra . Nella sezione seguente vengono descritti i passaggi per configurare un registro privato sul cluster Red Hat OpenShift e per inviare le immagini necessarie a supportare l'installazione di Trident Protect. |
Creazione di un registro di immagini privato
-
Rimuovere l'annotazione predefinita dalla classe di archiviazione predefinita corrente e annotare la classe di archiviazione supportata da Trident come predefinita per il cluster OpenShift.
[netapp-user@rhel7 ~]$ oc patch storageclass thin -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}' storageclass.storage.k8s.io/thin patched [netapp-user@rhel7 ~]$ oc patch storageclass ocp-trident -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}' storageclass.storage.k8s.io/ocp-trident patched
-
Modificare l'operatore imageregistry immettendo i seguenti parametri di archiviazione nel
spec
sezione.[netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io storage: pvc: claim:
-
Inserire i seguenti parametri nel
spec
sezione per la creazione di un percorso OpenShift con un nome host personalizzato. Salva ed esci.routes: - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com name: netapp-astra-route
La configurazione del percorso sopra riportata viene utilizzata quando si desidera un nome host personalizzato per il percorso. Se vuoi che OpenShift crei un percorso con un nome host predefinito, puoi aggiungere i seguenti parametri al spec
sezione:defaultRoute: true
. -
Modificare nuovamente l'operatore imageregistry e cambiare lo stato di gestione dell'operatore in
Managed
stato. Salva ed esci.oc edit configs.imageregistry/cluster managementState: Managed
-
Se tutti i prerequisiti sono soddisfatti, vengono creati PVC, pod e servizi per il registro delle immagini private. Tra pochi minuti il registro dovrebbe essere attivo.
[netapp-user@rhel7 ~]$oc get all -n openshift-image-registry NAME READY STATUS RESTARTS AGE pod/cluster-image-registry-operator-74f6d954b6-rb7zr 1/1 Running 3 90d pod/image-pruner-1627257600-f5cpj 0/1 Completed 0 2d9h pod/image-pruner-1627344000-swqx9 0/1 Completed 0 33h pod/image-pruner-1627430400-rv5nt 0/1 Completed 0 9h pod/image-registry-6758b547f-6pnj8 1/1 Running 0 76m pod/node-ca-bwb5r 1/1 Running 0 90d pod/node-ca-f8w54 1/1 Running 0 90d pod/node-ca-gjx7h 1/1 Running 0 90d pod/node-ca-lcx4k 1/1 Running 0 33d pod/node-ca-v7zmx 1/1 Running 0 7d21h pod/node-ca-xpppp 1/1 Running 0 89d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/image-registry ClusterIP 172.30.196.167 <none> 5000/TCP 15h service/image-registry-operator ClusterIP None <none> 60000/TCP 90d NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-ca 6 6 6 6 6 kubernetes.io/os=linux 90d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-image-registry-operator 1/1 1 1 90d deployment.apps/image-registry 1/1 1 1 15h NAME DESIRED CURRENT READY AGE replicaset.apps/cluster-image-registry-operator-74f6d954b6 1 1 1 90d replicaset.apps/image-registry-6758b547f 1 1 1 76m replicaset.apps/image-registry-78bfbd7f59 0 0 0 15h replicaset.apps/image-registry-7fcc8d6cc8 0 0 0 80m replicaset.apps/image-registry-864f88f5b 0 0 0 15h replicaset.apps/image-registry-cb47fffb 0 0 0 10h NAME COMPLETIONS DURATION AGE job.batch/image-pruner-1627257600 1/1 10s 2d9h job.batch/image-pruner-1627344000 1/1 6s 33h job.batch/image-pruner-1627430400 1/1 5s 9h NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cronjob.batch/image-pruner 0 0 * * * False 0 9h 90d NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD route.route.openshift.io/public-routes astra-registry.apps.ocp-vmw.cie.netapp.com image-registry <all> reencrypt None
-
Se si utilizzano i certificati TLS predefiniti per il percorso del registro OpenShift dell'operatore di ingresso, è possibile recuperare i certificati TLS utilizzando il seguente comando.
[netapp-user@rhel7 ~]$ oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
-
Per consentire ai nodi OpenShift di accedere ed estrarre le immagini dal registro, aggiungere i certificati al client Docker sui nodi OpenShift. Crea una configmap in
openshift-config
namespace utilizzando i certificati TLS e applicarne una patch alla configurazione dell'immagine del cluster per rendere il certificato attendibile.[netapp-user@rhel7 ~]$ oc create configmap astra-ca -n openshift-config --from-file=astra-registry.apps.ocp-vmw.cie.netapp.com=tls.crt [netapp-user@rhel7 ~]$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"astra-ca"}}}' --type=merge
-
Il registro interno di OpenShift è controllato tramite autenticazione. Tutti gli utenti OpenShift possono accedere al registro OpenShift, ma le operazioni che l'utente registrato può eseguire dipendono dalle autorizzazioni dell'utente.
-
Per consentire a un utente o a un gruppo di utenti di estrarre immagini dal registro, è necessario che all'utente sia assegnato il ruolo di visualizzatore del registro.
[netapp-user@rhel7 ~]$ oc policy add-role-to-user registry-viewer ocp-user [netapp-user@rhel7 ~]$ oc policy add-role-to-group registry-viewer ocp-user-group
-
Per consentire a un utente o a un gruppo di utenti di scrivere o inviare immagini, è necessario che all'utente sia assegnato il ruolo di editor del registro.
[netapp-user@rhel7 ~]$ oc policy add-role-to-user registry-editor ocp-user [netapp-user@rhel7 ~]$ oc policy add-role-to-group registry-editor ocp-user-group
-
-
Per consentire ai nodi OpenShift di accedere al registro ed eseguire il push o il pull delle immagini, è necessario configurare un segreto pull.
[netapp-user@rhel7 ~]$ oc create secret docker-registry astra-registry-credentials --docker-server=astra-registry.apps.ocp-vmw.cie.netapp.com --docker-username=ocp-user --docker-password=password
-
Questo segreto pull può quindi essere applicato agli account di servizio o essere referenziato nella definizione del pod corrispondente.
-
Per applicare la patch agli account di servizio, eseguire il seguente comando.
[netapp-user@rhel7 ~]$ oc secrets link <service_account_name> astra-registry-credentials --for=pull
-
Per fare riferimento al segreto pull nella definizione del pod, aggiungere il seguente parametro a
spec
sezione.imagePullSecrets: - name: astra-registry-credentials
-
-
Per eseguire il push o il pull di un'immagine da workstation diverse dal nodo OpenShift, completare i seguenti passaggi.
-
Aggiungere i certificati TLS al client Docker.
[netapp-user@rhel7 ~]$ sudo mkdir /etc/docker/certs.d/astra-registry.apps.ocp-vmw.cie.netapp.com [netapp-user@rhel7 ~]$ sudo cp /path/to/tls.crt /etc/docker/certs.d/astra-registry.apps.ocp-vmw.cie.netapp.com
-
Accedi a OpenShift utilizzando il comando oc login.
[netapp-user@rhel7 ~]$ oc login --token=sha256~D49SpB_lesSrJYwrM0LIO-VRcjWHu0a27vKa0 --server=https://api.ocp-vmw.cie.netapp.com:6443
-
Accedi al registro utilizzando le credenziali utente OpenShift con il comando podman/docker.
podman[netapp-user@rhel7 ~]$ podman login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t) --tls-verify=false
+ NOTA: Se stai utilizzando
kubeadmin
utente per accedere al registro privato, quindi utilizzare il token anziché la password.scaricatore mobile[netapp-user@rhel7 ~]$ docker login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t)
+ NOTA: Se stai utilizzando
kubeadmin
utente per accedere al registro privato, quindi utilizzare il token anziché la password. -
Spingere o tirare le immagini.
podman[netapp-user@rhel7 ~]$ podman push astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest [netapp-user@rhel7 ~]$ podman pull astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
scaricatore mobile[netapp-user@rhel7 ~]$ docker push astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest [netapp-user@rhel7 ~]$ docker pull astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
-