Envie uma imagem de contentor de um cluster para outro

Os artefactos do sistema existem no Artifact Registry do cluster de administrador. Envie novos artefactos do sistema quando o sistema apresentar erros ou indisponibilidades que pode corrigir aplicando patches a novos artefactos.

Este documento descreve como enviar artefactos individuais de um cluster para outro.

Antes de começar

Para receber as autorizações de que precisa para aceder a recursos em projetos do Artifact Registry do sistema como administrador, peça ao administrador de segurança que lhe conceda as seguintes funções, consoante o cluster para o qual quer enviar a imagem do contentor:

  • Cluster de administrador da organização: para enviar a imagem do contentor para o Artifact Registry do sistema do cluster de administrador da organização, precisa da função de administrador de gestão de artefactos do sistema da organização (organization-system-artifact-management-admin).
  • Cluster de administrador principal: para enviar a imagem do contentor para o Artifact Registry do sistema do cluster de administrador principal, precisa da função de administrador de gestão de artefactos do sistema (system-artifact-management-admin).

Depois de obter as autorizações necessárias, siga os passos abaixo antes de enviar uma imagem para o Artifact Registry do sistema do cluster de administrador raiz ou do cluster de administrador da organização:

  1. Transfira e instale a CLI Distributed Cloud seguindo as instruções da interface de linhas de comando (CLI) gdcloud.

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

    gdcloud components install docker-credential-gdcloud
    
  3. Inicie sessão com o Fornecedor de identidade configurado.

    gdcloud auth login
    
  4. Exporte o ficheiro kubeconfig.

    gdcloud clusters get-credentials CLUSTER_NAME
    

    Substitua CLUSTER_NAME pelo nome do cluster.

  5. Configure o Docker.

    gdcloud auth configure-docker
    

Transfira uma imagem de contentor de um contentor do S3

Para receber as autorizações necessárias para transferir a imagem do contentor do contentor do S3, peça ao administrador de segurança que lhe conceda a função de visualizador de objetos do contentor do projeto (project-bucket-object-viewer) no espaço de nomes do projeto.

O administrador de segurança concede-lhe acesso criando uma associação de funções:

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

Substitua o seguinte:

  • USER: o nome da conta do utilizador que requer a associação de funções.
  • PROJECT_NAMESPACE: o espaço de nomes do projeto com o contentor do S3.

Tem acesso só de leitura ao contentor no projeto e aos objetos nesse contentor.

Depois de obter as autorizações necessárias, siga os passos abaixo para transferir a imagem do contentor do contentor do S3 do espaço de nomes do projeto:

  1. Obtenha o nome do Secret do contentor. O nome do Secret tem o seguinte aspeto:

    object-storage-key-std-user-ID
    

    O nome do segredo inclui um valor ID exclusivo para aceder ao contentor.

  2. Copie o nome secreto do contentor.

  3. Obtenha as credenciais de acesso ao contentor 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 copiou no passo anterior.

  4. Transfira a imagem do contentor do bucket do S3 para a sua estação de trabalho.

    s3cmd get s3://BUCKET_NAME /g/CONTAINER_IMAGE_NAME
    

    Substitua o seguinte:

    • BUCKET_NAME: o nome do contentor do S3 que tem a imagem do contentor.
    • CONTAINER_IMAGE_NAME: o nome do ficheiro de imagem do contentor que quer transferir do depósito do S3.

Envie a imagem para o Artifact Registry do sistema

Siga estes passos para enviar o ficheiro da imagem do contentor que tem na sua estação de trabalho para o sistema Artifact Registry no cluster de administrador:

  1. Abra a consola.

  2. Obtenha o caminho para o ponto final do Artifact Registry do sistema do cluster para o qual quer enviar a imagem do contentor.

    export REGISTRY_ENDPOINT=harbor.$(kubectl get configmap dnssuffix -n gpc-system -o jsonpath='{.data.dnsSuffix}')
    
  3. Carregue, etiquete e envie a imagem do contentor para o ponto final 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 ficheiro de imagem do contentor no seu sistema de ficheiros local. Um valor válido para este caminho é, por exemplo, oracle_db.tar.