Skip to main content
NetApp container solutions
La versione in lingua italiana fornita proviene da una traduzione automatica. Per eventuali incoerenze, fare riferimento alla versione in lingua inglese.

Creazione di registri di immagini private

Collaboratori kevin-hoke

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.

Nota 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

  1. 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
  2. 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:
  3. 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
    Nota 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 .
    Certificati TLS personalizzati

    Quando si utilizza un nome host personalizzato per il percorso, per impostazione predefinita viene utilizzata la configurazione TLS predefinita dell'operatore OpenShift Ingress. Tuttavia, è possibile aggiungere una configurazione TLS personalizzata al percorso. Per farlo, completa i seguenti passaggi.

    1. Creare un segreto con i certificati TLS e la chiave del percorso.

      [netapp-user@rhel7 ~]$ oc create secret tls astra-route-tls -n openshift-image-registry –cert/home/admin/netapp-astra/tls.crt --key=/home/admin/netapp-astra/tls.key
    2. Modifica l'operatore imageregistry e aggiungi i seguenti parametri al spec sezione.

      [netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io
      
      routes:
        - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com
          name: netapp-astra-route
          secretName: astra-route-tls
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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.

    1. 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
    2. 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
  9. 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
  10. Questo segreto pull può quindi essere applicato agli account di servizio o essere referenziato nella definizione del pod corrispondente.

    1. 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
    2. Per fare riferimento al segreto pull nella definizione del pod, aggiungere il seguente parametro a spec sezione.

      imagePullSecrets:
        - name: astra-registry-credentials
  11. Per eseguire il push o il pull di un'immagine da workstation diverse dal nodo OpenShift, completare i seguenti passaggi.

    1. 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
    2. 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
    3. 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.

    4. 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