Crie contentores de armazenamento para projetos

Esta página mostra-lhe como criar contentores de armazenamento isolados (air-gapped) do Google Distributed Cloud (GDC).

Antes de começar

Um espaço de nomes do projeto gere os recursos de contentores no servidor da API Management. Tem de ter um projeto para trabalhar com contentores e objetos.

Também tem de ter as autorizações de contentor adequadas para realizar a seguinte operação. Consulte o artigo Conceda acesso ao contentor.

Diretrizes de nomenclatura de contentores de armazenamento

Os nomes dos contentores têm de cumprir as seguintes convenções de nomenclatura:

  • Ser exclusivo no projeto. O servidor da API de gestão antepõe um prefixo exclusivo ao nome completamente qualificado do contentor, garantindo que não existem conflitos na organização. No caso improvável de um conflito entre um prefixo e um nome do contentor em várias organizações, a criação do contentor falha com um erro "nome do contentor em utilização".
  • Abstenha-se de incluir informações de identificação pessoal (IIP).
  • Estar em conformidade com o DNS.
  • Ter, pelo menos, 1 e, no máximo, 55 carateres.
  • Comece por uma letra e use apenas letras, números e hífenes.

Crie um contentor

Por predefinição, os contentores usam a classe de armazenamento Standard. Se o armazenamento Nearline tiver sido ativado pelo seu operador de infraestrutura (IO), também pode selecionar a classe de armazenamento Nearline para dados acedidos com menor frequência. O Nearline Storage é compatível com contentores de zona única e de duas zonas.

Consola

  1. No menu de navegação, clique em Object Storage.
  2. No seletor de projetos, selecione o projeto onde quer criar o contentor.
  3. Clique em Criar contentor.
  4. No fluxo de criação de contentores, atribua um nome exclusivo a todos os contentores no projeto.
  5. Insira uma descrição.
  6. Em Classe de armazenamento, selecione Padrão ou Nearline. A opção Nearline só é visível se o armazenamento Nearline estiver ativado.
  7. Opcional: clique no botão toggle_off para definir uma política de retenção e introduza o número de dias pretendido. Contacte a sua OI se precisar de exceder os limites da política de retenção.
  8. Clique em Criar. É apresentada uma mensagem de êxito e é feito o redirecionamento para a página Recipientes.

Para verificar se criou um novo contentor com êxito, atualize a página Contentores após alguns minutos e verifique se o estado do contentor é atualizado de Not ready para Ready.

API

Para criar um contentor, aplique uma especificação de contentor ao espaço de nomes do seu projeto:

kubectl apply -f bucket.yaml

Segue-se um exemplo de uma especificação de contentor que usa a classe de armazenamento Standard:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

Segue-se um exemplo de uma especificação de contentor que usa a classe de armazenamento Nearline:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Nearline
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

Segue-se um exemplo de uma especificação de contentor com a versão de encriptação como v1:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
  labels:
    object.gdc.goog/encryption-version: v1
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

Para mais detalhes, consulte a referência da API Bucket.

Segue-se um exemplo de uma especificação de contentor de zona dupla na API global org-admin:

apiVersion: object.global.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: PROJECT_NAME
spec:
  location: LOCATION_NAME
  description: Sample DZ Bucket
  storageClass: Standard

Para criar um contentor de duas zonas com o Nearline Storage, defina storageClass: Nearline.

Tenha em atenção que apenas a encriptação V2 é suportada para contentores de duas zonas e que todas as operações de criação, atualização ou eliminação de um recurso de contentor de duas zonas têm de ser realizadas no servidor da API global.

gdcloud

Para criar um contentor de zona única com gdcloud usando a classe de armazenamento Nearline:

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_NAME \
    --location-type=SingleZone \
    --storage-class=Nearline

Para criar um contentor de duas zonas com gdcloud usando a localização global:

gdcloud storage buckets create BUCKET_NAME \
    --location=ZONE_1,ZONE_2 \
    --location-type=AsyncDualZone \
    --storage-class=Nearline

Se --storage-class for omitido, Standard é usado por predefinição.

Para mais detalhes, consulte gdcloud storage buckets create.

Depois de criar o contentor, pode executar o seguinte comando para confirmar e verificar os detalhes do contentor:

kubectl describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

A secção Estado tem dois campos importantes: Encriptação (para detalhes de encriptação) e Nome totalmente qualificado (que contém o FULLY_QUALIFIED_BUCKET_NAME).

Encriptação v1

As informações referem-se à AEADKey denominada obj-FULLY_QUALIFIED_BUCKET_NAME, que serve como referência à chave de encriptação usada para encriptar objetos armazenados no contentor. Vejamos um exemplo:

Status:
  Encryption:
    Key Ref:
      Kind: AEADKey
      Name: obj-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

Encriptação v2

As informações referem-se ao segredo denominado kek-ref-FULLY_QUALIFIED_BUCKET_NAME, que funciona como uma referência para AEADKeys predefinidas ativas. As AEADKeys predefinidas ativas são selecionadas aleatoriamente para encriptar objetos carregados para o contentor quando não é especificada uma AEADKey específica.

Vejamos um exemplo:

Status:
  Encryption:
    Key Ref:
      Kind: Secret
      Name: kek-ref-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: PROJECT_NAMESPACE
    Type: CMEK

Também pode executar o seguinte comando para verificar se as AEADKeys necessárias foram criadas:

kubectl get aeadkeys -n PROJECT_NAMESPACE -l  cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME