Criar buckets de armazenamento

Nesta página, mostramos como criar um bucket de armazenamento para seus projetos do Google Distributed Cloud (GDC) com isolamento físico. Ele aborda os pré-requisitos, as etapas de criação e verificação e as diretrizes de nomenclatura. Isso ajuda a estabelecer um repositório de objetos em conformidade e bem configurado que atenda às necessidades das suas implantações isoladas.

Esta página é destinada a públicos-alvo como admins de TI no grupo de operadores de infraestrutura ou desenvolvedores no grupo de operadores de aplicativos que querem provisionar e gerenciar buckets de repositório de objetos para projetos em ambientes do GDC com isolamento físico. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Os buckets de armazenamento são recursos com escopo definido para um projeto específico. O projeto funciona como um contêiner, agrupando seus buckets e permitindo o gerenciamento deles pelo servidor de API Management. Antes de realizar as operações nesta página, crie um novo projeto ou selecione um em que você tenha permissões suficientes.

Papéis necessários do IAM

Entre em contato com o administrador do projeto do IAM para solicitar os seguintes papéis no namespace do projeto:

  • Administrador de buckets do projeto (project-bucket-admin): criar, atualizar e excluir buckets de armazenamento.
  • Leitor de objetos do bucket do projeto (project-bucket-object-viewer): visualizar e verificar detalhes de buckets e objetos de armazenamento.

Para mais informações, consulte Conceder acesso ao bucket.

Preparar o ambiente

Para executar comandos no servidor da API de gerenciamento ou no servidor da API global, faça o seguinte:

  1. Faça login e gere o arquivo kubeconfig para o servidor de API de gerenciamento zonal, se você não tiver um.
  2. Para buckets birregionais, faça o seguinte:
    • Verifique com o operador de infraestrutura (IO) se o recurso personalizado BucketLocationConfig foi criado para as zonas pareadas.
    • Gere o arquivo kubeconfig para o servidor de API global.

Diretrizes de nomenclatura de buckets de armazenamento

Os nomes de buckets precisam seguir estas convenções de nomenclatura:

  • Ser exclusivo no projeto. O servidor da API Management adiciona um prefixo exclusivo ao nome totalmente qualificado do bucket, garantindo que não haja conflitos na organização. No caso improvável de um conflito de prefixo e nome de bucket entre organizações, a criação do bucket falha com um erro "nome do bucket em uso".
  • Não inclua informações de identificação pessoal (PII).
  • Ser compatível com DNS.
  • Ter entre 1 e 55 caracteres.
  • Comece com uma letra e use apenas letras, números e hífens.

Criar um bucket

Por padrão, os buckets usam a classe de armazenamento Standard. Se o armazenamento Nearline Storage tiver sido ativado pelo operador de infraestrutura (IO), você também poderá selecionar a classe de armazenamento Nearline para dados acessados com menos frequência. O Nearline Storage é compatível com buckets de zona única e de zona dupla.

Console

  1. No menu de navegação, clique em Repositório de objetos.
  2. No seletor de projetos, selecione o projeto em que você quer criar o bucket.
  3. Clique em Criar bucket.
  4. No fluxo de criação de buckets, atribua um nome exclusivo a todos os buckets do projeto.
  5. Digite uma descrição.
  6. Em Classe de armazenamento, selecione Standard ou Nearline. A opção Nearline só fica 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 insira o número de dias que preferir. Entre em contato com seu IO se precisar exceder os limites da política de retenção.
  8. Clique em Criar. Uma mensagem de sucesso é exibida, e você é direcionado de volta para a página Buckets.

Para verificar se você criou um novo bucket, atualize a página Buckets após alguns minutos e verifique se o estado do bucket foi atualizado de Not ready para Ready.

gdcloud

Para criar um bucket 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 bucket de duas zonas com gdcloud usando o local global:

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

Se --storage-class for omitido, Standard será usado por padrão.

Para mais detalhes, consulte gdcloud storage buckets create.

API

Para criar um bucket zonal, aplique uma especificação de bucket ao namespace do projeto:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml

Veja a seguir um exemplo de especificação de bucket usando 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

Veja a seguir um exemplo de especificação de bucket usando 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

Confira a seguir um exemplo de especificação de bucket com a versão de criptografia 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.

Confira a seguir um exemplo de especificação de bucket de zona dupla para o servidor de API global:

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 bucket de zona dupla usando o Nearline Storage, defina storageClass: Nearline.

Somente a criptografia V2 é compatível com buckets de zona dupla, e todas as operações para criar, atualizar ou excluir um recurso de bucket de zona dupla precisam ser realizadas no servidor de API global.

Para criar um bucket de zona dupla, aplique a especificação ao servidor de API global:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

Depois de criar o bucket, execute o seguinte comando para confirmar e verificar os detalhes dele:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

A seção Status tem dois campos importantes: Criptografia (para detalhes de criptografia) e Nome totalmente qualificado (que contém o FULLY_QUALIFIED_BUCKET_NAME).

Criptografia v1

As informações são sobre a AEADKey chamada obj-FULLY_QUALIFIED_BUCKET_NAME, que serve como referência para a chave de criptografia usada para criptografar objetos armazenados no repositório de objetos. Veja um exemplo:

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

Criptografia v2

As informações pertencem ao Secret chamado kek-ref-FULLY_QUALIFIED_BUCKET_NAME, que serve como referência para as AEADKeys padrão ativas. As AEADKeys padrão ativas são selecionadas aleatoriamente para criptografar objetos enviados ao bucket quando uma AEADKey específica não é definida.

Veja um exemplo:

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

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

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

Depois de criar um bucket, é possível gerenciá-lo em nome dos operadores de aplicativos (AOs, na sigla em inglês) criando um arquivo de política ao conceder acesso ao bucket e atribuindo a política a um bucket.