Crea buckets de almacenamiento

En esta página, se explica cómo crear un bucket de almacenamiento para tus proyectos aislados de Google Distributed Cloud (GDC). Se abarcan los requisitos previos, los pasos de creación y verificación, y los lineamientos para la asignación de nombres. Esto te ayuda a establecer un almacenamiento de objetos compatible y bien configurado que satisfaga las necesidades de tus implementaciones aisladas.

Esta página está destinada a públicos como administradores de TI dentro del grupo de operadores de infraestructura o desarrolladores dentro del grupo de operadores de aplicaciones que desean aprovisionar y administrar buckets de almacenamiento de objetos para proyectos en entornos GDC aislados. Para obtener más información, consulta Públicos de la documentación de Google Distributed Cloud aislado.

Antes de comenzar

Los buckets de almacenamiento son recursos con alcance en un proyecto específico. El proyecto actúa como un contenedor, agrupa tus buckets y permite su administración a través del servidor de la API de Management. Antes de realizar las operaciones en esta página, debes crear un proyecto nuevo o seleccionar uno existente en el que tengas permisos suficientes.

Roles de IAM obligatorios

Comunícate con tu administrador de proyectos de IAM para solicitar los siguientes roles en tu espacio de nombres del proyecto:

  • Administrador de buckets de proyectos (project-bucket-admin): Crea, actualiza y borra buckets de almacenamiento.
  • Visualizador de objetos de buckets de proyectos (project-bucket-object-viewer): Visualiza y verifica los detalles de los buckets y objetos de almacenamiento.

Para obtener más información, consulta Otorga bucket buckets.

Prepara el entorno

Para ejecutar comandos en el servidor de la API de Management o el servidor de la API global, haz lo siguiente:

  1. Accede y genera el archivo kubeconfig para el servidor de la API de Management zonal si no tienes uno.
  2. Para los buckets de dos zonas, haz lo siguiente:
    • Verifica con tu operador de infraestructura (IO) que se haya creado el recurso personalizado BucketLocationConfig para tus zonas vinculadas.
    • Genera el archivo kubeconfig para el servidor de la API global.

Lineamientos para la asignación de nombres a bucket de almacenamiento

Los nombres de los buckets deben cumplir con las siguientes convenciones de nomenclatura:

  • Ser únicos dentro del proyecto. El servidor de la API de Management antepone un prefijo único al nombre completamente calificado del bucket, lo que garantiza que no haya conflictos dentro de la organización. En el improbable caso de que haya un conflicto de prefijo y nombre de bucket en las organizaciones, la creación del bucket falla con un error de "nombre de bucket en uso".
  • No incluyas ningún tipo de información de identificación personal (PII).
  • Cumple con los requisitos de DNS.
  • Tener al menos 1 y no más de 55 caracteres.
  • Comenzar con una letra y usar solo letras, números y guiones.

Crea un bucket

De forma predeterminada, los buckets usan la clase de almacenamiento Standard. Si tu operador de infraestructura (IO) habilitó Nearline Storage, también puedes seleccionar la clase de almacenamiento Nearline para los datos a los que se accede con menos frecuencia. Nearline Storage es compatible con buckets de una sola zona y de dos zonas.

Console

  1. En el menú de navegación, haz clic en Object Storage.
  2. En el selector de proyectos, elige el proyecto en el que deseas crear el bucket.
  3. Haz clic en Crear bucket.
  4. En el flujo de creación de bucket, asigna un nombre único en todos los buckets del proyecto.
  5. Ingresa una descripción.
  6. En Clase de almacenamiento, selecciona Standard o Nearline. La opción Nearline solo está visible si Nearline Storage está habilitado.
  7. Opcional: Haz clic en el botón de activación toggle_off para establecer una política de retención y, luego, ingresa la cantidad de días que prefieras. Comunícate con tu IO si necesitas superar los límites de la política de retención.
  8. Haz clic en Crear. Aparecerá un mensaje de éxito y se te redireccionará a la página Buckets.

Para verificar que creaste correctamente un bucket nuevo, actualiza la página Buckets después de unos minutos y verifica que el estado del bucket se actualice de Not ready a Ready.

API

Para crear un bucket zonal, aplica una especificación de bucket a tu espacio de nombres del proyecto:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml

El siguiente es un ejemplo de una especificación de bucket con la clase de almacenamiento 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

El siguiente es un ejemplo de una especificación de bucket con la clase de almacenamiento 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

El siguiente es un ejemplo de una especificación de bucket con la versión de encriptación 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 obtener más detalles, consulta la referencia de la API de Bucket.

El siguiente es un ejemplo de una especificación de bucket de dos zonas para el servidor de la 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 crear un bucket de dos zonas con Nearline Storage, establece storageClass: Nearline.

Ten en cuenta que solo se admite la encriptación V2 para los buckets de dos zonas y que todas las operaciones para crear, actualizar o borrar un recurso de bucket de dos zonas deben realizarse en el servidor de la API global.

Para crear un bucket de dos zonas, aplica la especificación en el servidor de la API global:

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

gdcloud

Para crear un bucket de una sola zona con gdcloud usando la clase de almacenamiento Nearline, haz lo siguiente:

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

Para crear un bucket de dos zonas con gdcloud usando la ubicación global, haz lo siguiente:

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

Si se omite --storage-class, se usa Standard de forma predeterminada.

Para obtener más detalles, consulta gdcloud storage buckets create.

Después de crear el bucket, ejecuta el siguiente comando para confirmar y verificar los detalles del bucket:

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

La sección Estado tiene dos campos importantes: Encriptación (para obtener detalles de encriptación) y Nombre completamente calificado (que contiene el FULLY_QUALIFIED_BUCKET_NAME).

Encriptación v1

La información es sobre la AEADKey denominada obj-FULLY_QUALIFIED_BUCKET_NAME, que sirve como referencia a la clave de encriptación que se usa para encriptar objetos almacenados en el bucket. A continuación, se muestra un ejemplo:

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

Encriptación v2

La información pertenece al secreto denominado kek-ref-FULLY_QUALIFIED_BUCKET_NAME, que actúa como referencia para las AEADKeys predeterminadas activas. Las AEADKeys predeterminadas activas se seleccionan de forma aleatoria para encriptar los objetos subidos al bucket cuando no se especifica una AEADKey específica.

A continuación, se muestra un ejemplo:

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

También puedes ejecutar el siguiente comando para verificar que se creen las AEADKeys necesarias:

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

Después de crear un bucket, puedes administrarlo en nombre de los operadores de aplicaciones (AO) mediante la creación de un archivo de política cuando otorgas acceso al bucket y asignas la política a un bucket.