En esta página, se explica cómo crear un bucket de almacenamiento para tus proyectos de Google Distributed Cloud (GDC) aislado. Se abarcan los requisitos previos, los pasos de creación y verificación, y los lineamientos para asignar nombres. Esto te ayuda a establecer un almacenamiento de objetos que cumpla con las normativas y esté bien configurado para satisfacer las necesidades de tus implementaciones aisladas.
Esta página está dirigida a públicos como administradores de TI dentro del grupo de operadores de infraestructura o desarrolladores dentro del grupo de operadores de aplicaciones que buscan aprovisionar y administrar buckets de almacén de objetos para proyectos dentro de entornos de GDC aislado. Para obtener más información, consulta Públicos de la documentación de GDC aislado.
Antes de comenzar
Los buckets de almacenamiento son recursos que se limitan a un proyecto específico. El proyecto actúa como un contenedor, agrupa tus buckets y habilita su administración a través del servidor de la API de Management. Antes de realizar las operaciones de esta página, debes crear un proyecto nuevo o seleccionar uno existente en el que tengas los permisos suficientes.
Roles de IAM obligatorios
Comunícate con el administrador de IAM de tu proyecto para solicitar los siguientes roles en el espacio de nombres del proyecto:
- Administrador de proyectos de buckets (
project-bucket-admin): Crea, actualiza y borra buckets de almacenamiento. - Visualizador de proyectos de objetos de bucket (
project-bucket-object-viewer): Permite ver y verificar los detalles de los buckets y objetos de almacenamiento.
Para obtener más información, consulta Otorga acceso al bucket.
Prepara el entorno
Para ejecutar comandos en el servidor de la API de administración o en el servidor de la API global, haz lo siguiente:
- Accede y genera el archivo kubeconfig para el servidor de la API de administración zonal si no tienes uno.
- En el caso de los buckets de zona doble, haz lo siguiente:
- Verifica con tu operador de infraestructura (IO) que se haya creado el recurso personalizado
BucketLocationConfigpara tus zonas vinculadas. - Genera el archivo kubeconfig para el servidor de la API global.
- Verifica con tu operador de infraestructura (IO) que se haya creado el recurso personalizado
Lineamientos para asignar nombres a bucket de almacenamiento
Los nombres de los buckets deben cumplir con las siguientes convenciones de nombres:
- Ser único en el 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 caso poco probable de que haya un conflicto entre el prefijo y el nombre del bucket en las organizaciones, la creación del bucket fallará con un error de "nombre de bucket en uso".
- No incluyas información de identificación personal (PII).
- Ser compatible con DNS
- Tener entre 1 y 55 caracteres
- Comienza con una letra y usa solo letras, números y guiones.
Crea un bucket
De forma predeterminada, los buckets usan la clase de almacenamiento Standard. Si el 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 zona única y de zona doble.
Console
- En el menú de navegación, haz clic en Almacenamiento de objetos.
- En el selector de proyectos, elige el proyecto en el que deseas crear el bucket.
- Haz clic en Crear bucket.
- En el flujo de creación de bucket, asigna un nombre único para todos los buckets del proyecto.
- Ingresa una descripción.
- En Clase de almacenamiento, selecciona Estándar o Nearline. La opción Nearline solo se muestra si el almacenamiento Nearline está habilitado.
- 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 exceder los límites de la política de retención.
- Haz clic en Crear. Aparecerá un mensaje de éxito y se te dirigirá de nuevo a la página Buckets.
Para verificar que creaste correctamente un bucket nuevo, actualiza la página Buckets después de unos minutos y comprueba que el estado del bucket se actualice de Not ready a Ready.
gdcloud
Para crear un bucket de zona única con gdcloud con 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 zona doble 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.
API
Para crear un bucket zonal, aplica una especificación de bucket al espacio de nombres de tu proyecto:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f bucket.yaml
A continuación, se muestra 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
A continuación, se muestra 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.
A continuación, se muestra 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 regiones con almacenamiento Nearline, establece storageClass: Nearline.
Ten en cuenta que solo se admite la encriptación V2 para los buckets de doble región y que todas las operaciones para crear, actualizar o borrar un recurso de bucket de doble región se deben realizar en el servidor de la API global.
Para crear un bucket de zona doble, aplica la especificación al servidor de la API global:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml
Verifica la creación del bucket y los recursos relacionados
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 los detalles de encriptación) y Nombre completamente calificado (que contiene el FULLY_QUALIFIED_BUCKET_NAME).
Encriptación v1
La información se refiere a la AEADKey llamada obj-FULLY_QUALIFIED_BUCKET_NAME, que sirve como referencia a la clave de encriptación que se usa para encriptar los 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 Secret llamado 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 que se suben 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 hayan creado 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). Para ello, crea un archivo de política cuando otorgues acceso al bucket y asigna la política a un bucket.