Enviar uma imagem de contêiner de um cluster para outro

Os artefatos do sistema estão no Artifact Registry do cluster de administrador. Envie novos artefatos do sistema quando o sistema apresentar bugs ou interrupções que podem ser corrigidos com patches de novos artefatos.

Neste documento, descrevemos como enviar artefatos individuais de um cluster para outro.

Antes de começar

Para receber as permissões necessárias para acessar recursos em projetos do Artifact Registry do sistema como administrador, peça ao administrador de segurança para conceder a você os seguintes papéis, dependendo do cluster em que você quer enviar a imagem do contêiner:

  • Cluster de administrador da organização:para enviar a imagem do contêiner ao Artifact Registry do sistema do cluster de administrador da organização, é necessário ter o papel de administrador do gerenciamento de artefatos do sistema da organização (organization-system-artifact-management-admin).
  • Cluster de administrador raiz:para enviar a imagem do contêiner ao Artifact Registry do sistema do cluster de administrador raiz, você precisa da função de administrador de gerenciamento de artefatos do sistema (system-artifact-management-admin).

Depois de receber as permissões necessárias, siga estas etapas antes de enviar uma imagem para o Artifact Registry do sistema do cluster de administrador raiz ou da organização:

  1. Faça o download e instale a CLI do Distributed Cloud seguindo as instruções da interface de linha de comando (CLI) gdcloud.

  2. Instale o componente docker-credential-gdcloud seguindo as instruções em Instalar componentes.

    gdcloud components install docker-credential-gdcloud
    
  3. Faça login com o provedor de identidade configurado.

    gdcloud auth login
    
  4. Exporte o arquivo kubeconfig.

    gdcloud clusters get-credentials CLUSTER_NAME
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  5. Configure o Docker.

    gdcloud auth configure-docker
    

Fazer o download de uma imagem de contêiner de um bucket do S3

Para receber as permissões necessárias para fazer o download da imagem do contêiner do bucket do S3, peça ao administrador de segurança para conceder a você o papel de Leitor de objetos do bucket do projeto (project-bucket-object-viewer) no namespace do projeto.

O administrador de segurança concede acesso criando uma vinculação de função:

kubectl create rolebinding IO_USER-bor-rb \
  --role=project-bucket-object-viewer \
  --user=USER \
  -n PROJECT_NAMESPACE

Substitua:

  • USER: o nome da conta do usuário que precisa da vinculação de papel.
  • PROJECT_NAMESPACE: o namespace do projeto com o bucket do S3.

Você recebe acesso somente leitura ao bucket no projeto e aos objetos nele.

Depois de receber as permissões necessárias, siga estas etapas para baixar a imagem do contêiner do bucket do S3 do namespace do projeto:

  1. Consiga o nome do secret do bucket. O nome do secret é semelhante ao exemplo a seguir:

    object-storage-key-std-user-ID
    

    O nome do secret inclui um valor ID exclusivo para acessar o bucket.

  2. Copie o nome do secret do bucket.

  3. Receba as credenciais de acesso ao bucket e configure a ferramenta CLI s3cmd.

    SECRET_NAME=SECRET_NAME
    ACCESS_KEY=$(kubectl get secret ${SECRET_NAME} -n object-storage-access-keys -o=jsonpath='{.data.access-key-id}' | base64 -d)
    SECRET_KEY=$(kubectl get secret ${SECRET_NAME} -n object-storage-access-keys -o=jsonpath='{.data.secret-access-key}' | base64 -d)
    S3_ENDPOINT=objectstorage.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
    
    echo "Access Key: ${ACCESS_KEY}" \
    && echo "Secret Key: ${SECRET_KEY}" \
    && echo "S3 Endpoint: ${S3_ENDPOINT}"
    
    s3cmd --configure
    

    Substitua SECRET_NAME pelo valor que você copiou na etapa anterior.

  4. Faça o download da imagem do contêiner do bucket do S3 para sua estação de trabalho.

    s3cmd get s3://BUCKET_NAME /g/CONTAINER_IMAGE_NAME
    

    Substitua:

    • BUCKET_NAME: o nome do bucket do S3 que tem a imagem do contêiner.
    • CONTAINER_IMAGE_NAME: o nome do arquivo de imagem do contêiner que você quer baixar do bucket do S3.

Envie a imagem para o Artifact Registry do sistema

Siga estas etapas para enviar o arquivo da imagem do contêiner que você tem na estação de trabalho para o Artifact Registry do sistema no cluster de administrador:

  1. Abra o console.

  2. Receba o caminho para o endpoint do Artifact Registry do sistema do cluster em que você quer enviar a imagem do contêiner.

    export REGISTRY_ENDPOINT=harbor.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
    
  3. Carregue, marque e envie a imagem do contêiner para o endpoint do Artifact Registry do sistema do cluster.

    docker load --input CONTAINER_IMAGE_PATH
    
    docker tag CONTAINER_IMAGE_PATH ${REGISTRY_ENDPOINT}/CONTAINER_IMAGE_PATH
    
    docker push ${REGISTRY_ENDPOINT}/CONTAINER_IMAGE_PATH
    

    Substitua CONTAINER_IMAGE_PATH pelo caminho do arquivo de imagem do contêiner no seu sistema de arquivos local. Um valor válido para esse caminho é, por exemplo, oracle_db.tar.