Skip to main content
NetApp container solutions
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Criação de registros de imagens privadas

Colaboradores banum-netapp kevin-hoke

Para a maioria das implementações do Red Hat OpenShift, usar um registro público como "Quay.io" ou "DockerHub" atende às necessidades da maioria dos clientes. No entanto, há momentos em que um cliente pode querer hospedar suas próprias imagens privadas ou personalizadas.

Este procedimento documenta a criação de um registro de imagem privado que é apoiado por um volume persistente fornecido pelo Trident e NetApp ONTAP.

Observação O Trident Protect requer um registro para hospedar as imagens exigidas pelos contêineres Astra . A seção a seguir descreve as etapas para configurar um registro privado no cluster Red Hat OpenShift e enviar as imagens necessárias para dar suporte à instalação do Trident Protect.

Criando um registro de imagem privado

  1. Remova a anotação padrão da classe de armazenamento padrão atual e anote a classe de armazenamento apoiada pelo Trident como padrão para o 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. Edite o operador imageregistry inserindo os seguintes parâmetros de armazenamento no spec seção.

    [netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io
    
    storage:
      pvc:
        claim:
  3. Insira os seguintes parâmetros no spec seção para criar uma rota OpenShift com um nome de host personalizado. Salvar e sair.

    routes:
      - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com
        name: netapp-astra-route
    Observação A configuração de rota acima é usada quando você deseja um nome de host personalizado para sua rota. Se você deseja que o OpenShift crie uma rota com um nome de host padrão, você pode adicionar os seguintes parâmetros ao spec seção: defaultRoute: true .
    Certificados TLS personalizados

    Quando você usa um nome de host personalizado para a rota, por padrão, ele usa a configuração TLS padrão do operador OpenShift Ingress. No entanto, você pode adicionar uma configuração TLS personalizada à rota. Para fazer isso, siga os seguintes passos.

    1. Crie um segredo com os certificados TLS e a chave da rota.

      [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. Edite o operador imageregistry e adicione os seguintes parâmetros ao spec seção.

      [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. Edite o operador imageregistry novamente e altere o estado de gerenciamento do operador para Managed estado. Salvar e sair.

    oc edit configs.imageregistry/cluster
    
    managementState: Managed
  5. Se todos os pré-requisitos forem atendidos, PVCs, pods e serviços serão criados para o registro de imagem privada. Em poucos minutos, o registro deverá estar ativo.

    [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 estiver usando os certificados TLS padrão para a rota de registro do operador de entrada OpenShift, você poderá buscar os certificados TLS usando o seguinte comando.

    [netapp-user@rhel7 ~]$ oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
  7. Para permitir que os nós do OpenShift acessem e extraiam as imagens do registro, adicione os certificados ao cliente do Docker nos nós do OpenShift. Crie um configmap no openshift-config namespace usando os certificados TLS e aplique o patch na configuração da imagem do cluster para tornar o certificado confiável.

    [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. O registro interno do OpenShift é controlado por autenticação. Todos os usuários do OpenShift podem acessar o registro do OpenShift, mas as operações que o usuário conectado pode executar dependem das permissões do usuário.

    1. Para permitir que um usuário ou um grupo de usuários extraia imagens do registro, o(s) usuário(s) deve(m) ter a função de visualizador de registro atribuída.

      [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. Para permitir que um usuário ou grupo de usuários grave ou envie imagens, o(s) usuário(s) deve(m) ter a função de editor de registro atribuída.

      [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. Para que os nós do OpenShift acessem o registro e enviem ou recebam as imagens, você precisa configurar um segredo de recebimento.

    [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. Esse segredo de pull pode então ser corrigido para contas de serviço ou ser referenciado na definição de pod correspondente.

    1. Para aplicar o patch às contas de serviço, execute o seguinte comando.

      [netapp-user@rhel7 ~]$ oc secrets link <service_account_name> astra-registry-credentials --for=pull
    2. Para fazer referência ao segredo de pull na definição do pod, adicione o seguinte parâmetro ao spec seção.

      imagePullSecrets:
        - name: astra-registry-credentials
  11. Para enviar ou receber uma imagem de estações de trabalho diferentes do nó OpenShift, conclua as seguintes etapas.

    1. Adicione os certificados TLS ao cliente do 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. Efetue login no OpenShift usando o comando oc login.

      [netapp-user@rhel7 ~]$ oc login --token=sha256~D49SpB_lesSrJYwrM0LIO-VRcjWHu0a27vKa0 --server=https://api.ocp-vmw.cie.netapp.com:6443
    3. Efetue login no registro usando as credenciais de usuário do OpenShift com o comando podman/docker.

      homem-pod
      [netapp-user@rhel7 ~]$ podman login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t) --tls-verify=false

      + NOTA: Se você estiver usando kubeadmin usuário faça login no registro privado e use o token em vez da senha.

      estivador
      [netapp-user@rhel7 ~]$ docker login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t)

      + NOTA: Se você estiver usando kubeadmin usuário faça login no registro privado e use o token em vez da senha.

    4. Empurre ou puxe as imagens.

      homem-pod
      [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
      estivador
      [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