Esta página mostra como criar buckets de armazenamento isolados do Google Distributed Cloud (GDC).
Antes de começar
Os buckets de armazenamento são recursos com escopo para um projeto específico. O projeto funciona como um contêiner, agrupando seus buckets e permitindo o gerenciamento deles pelo servidor da API Management. Antes de executar as operações nesta página, crie um projeto ou selecione um em que você tenha permissões suficientes.
Papéis do IAM obrigatórios
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): cria, atualiza e exclui buckets de armazenamento. - Leitor de objetos de buckets do projeto (
project-bucket-object-viewer): visualiza e verifica 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 Management ou no servidor da API global, faça o seguinte:
- Faça login e gere o arquivo kubeconfig para o servidor da API Management zonal, se você não tiver um.
- Para buckets de zona dupla, faça o seguinte:
- Verifique com o operador de infraestrutura (IO, na sigla em inglês) se o recurso personalizado
BucketLocationConfigfoi criado para as zonas pareadas. - Gere o arquivo kubeconfig para o servidor da API global.
- Verifique com o operador de infraestrutura (IO, na sigla em inglês) 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 anexa 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 de "nome de bucket em uso".
- Não inclua informações de identificação pessoal (PII).
- Estar em conformidade com o DNS.
- Ter pelo menos 1 e no máximo 55 caracteres.
- Começar com uma letra e usar apenas letras, números e hífens.
Criar um bucket
Por padrão, os buckets usam a classe de armazenamento Standard. Se o 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 dupla.
Console
- No menu de navegação, clique em Object Storage.
- 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 Padrão ou Nearline. A opção Nearline só fica visível se o armazenamento Nearline estiver ativado.
- Opcional: clique na opção de alternância toggle_off para definir uma política de retenção e insira o número de dias preferido. Entre em contato com o IO se precisar exceder os limites da política de retenção.
- Clique em Criar. Uma mensagem de confirmação aparece e você é direcionado de volta à 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 é atualizado de Not ready para Ready.
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
Confira 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
Confira 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 da 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 da API global.
Para criar um bucket de zona dupla, aplique a especificação no servidor da API global:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml
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 zona dupla 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.
Verificar a criação de buckets e recursos relacionados
Depois de criar o bucket, execute o comando a seguir 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 à chave de criptografia usada para criptografar objetos armazenados no bucket. 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 atua como uma referência para 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 é especificada.
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 comando a seguir 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