Nesta página, mostramos como criar buckets de armazenamento do Google Distributed Cloud (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:
- Faça login e gere o arquivo kubeconfig para o servidor de API de gerenciamento zonal, se você não tiver um.
- Para buckets birregionais, faça o seguinte:
- Verifique com o operador de infraestrutura (IO) se o recurso personalizado
BucketLocationConfigfoi criado para as zonas pareadas. - Gere o arquivo kubeconfig para o servidor de API global.
- Verifique com o operador de infraestrutura (IO) se o recurso personalizado
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
- No menu de navegação, clique em Repositório de objetos.
- No seletor de projetos, selecione o projeto em que você quer criar o bucket.
- Clique em Criar bucket.
- No fluxo de criação de buckets, atribua um nome exclusivo a todos os buckets do projeto.
- Digite uma descrição.
- Em Classe de armazenamento, selecione Standard ou Nearline. A opção Nearline só fica visível se o armazenamento Nearline estiver ativado.
- 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.
- 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
Verificar a criação do bucket e dos recursos relacionados
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