Créer des buckets de stockage

Cette page explique comment créer un bucket de stockage pour vos projets Google Distributed Cloud (GDC) sous air gap. Elle aborde les prérequis, les étapes de création et de validation, ainsi que les consignes de dénomination. Cela vous permet d'établir un stockage d'objets conforme et bien configuré qui répond aux besoins de vos déploiements isolés.

Cette page s'adresse aux audiences telles que les administrateurs informatiques du groupe d'opérateurs d'infrastructure ou les développeurs du groupe d'opérateurs d'applications qui souhaitent provisionner et gérer des buckets de stockage d'objets pour des projets dans des environnements GDC sous air gap. Pour en savoir plus, consultez la documentation sur les audiences pour GDC sous air gap.

Avant de commencer

Un espace de noms de projet gère les ressources de bucket dans le serveur de l'API Management. Vous devez disposer d'un projet pour utiliser des buckets et des objets.

Vous devez également disposer des autorisations de bucket appropriées pour effectuer l'opération suivante. Consultez Accorder l'accès à un bucket.

Pour les buckets birégionaux, configurez kubectl pour accéder au serveur de l'API globale. Suivez les étapes décrites dans Ressources du serveur de l'API globale et définissez la variable d'environnement GLOBAL_API_SERVER sur le fichier kubeconfig.

Consignes de dénomination des buckets de stockage

Les noms de buckets doivent respecter les conventions de dénomination suivantes :

  • Être unique au sein du projet. Le serveur de l'API de gestion ajoute un préfixe unique au nom de domaine complet du bucket, ce qui évite les conflits au sein de l'organisation. Dans le cas peu probable d'un conflit entre un préfixe et un nom de bucket entre plusieurs organisations, la création du bucket échoue et une erreur "bucket name in use" (nom de bucket déjà utilisé) s'affiche.
  • Éviter d'inclure des informations permettant d'identifier l'utilisateur.
  • Être conforme au DNS.
  • Comporter au moins 1 caractère et au maximum 55.
  • Commencer par une lettre et n'utiliser que des lettres, des chiffres et des traits d'union.

Créer un bucket

Par défaut, les buckets utilisent la classe de stockage Standard. Si le stockage Nearline a été activé par votre opérateur d'infrastructure, vous pouvez également sélectionner la classe de stockage Nearline pour les données moins fréquemment consultées. Le stockage Nearline est compatible avec les buckets à zone unique et birégionaux.

Console

  1. Dans le menu de navigation, cliquez sur Object Storage (Stockage d'objets).
  2. Dans le sélecteur de projet, sélectionnez le projet dans lequel vous souhaitez créer le bucket.
  3. Cliquez sur Create Bucket (Créer un bucket).
  4. Dans le flux de création de bucket, attribuez un nom unique à tous les buckets du projet.
  5. Saisissez une description.
  6. Sous Storage class (Classe de stockage), sélectionnez Standard ou Nearline. L'option Nearline n'est visible que si le stockage Nearline est activé.
  7. Facultatif : Cliquez sur le bouton bascule toggle_off pour définir une règle de conservation et saisissez le nombre de jours de votre choix. Contactez votre OI si vous devez dépasser les limites de la règle de conservation.
  8. Cliquez sur Create (Créer). Un message de réussite s'affiche et vous êtes redirigé vers la page Buckets.

Pour vérifier que vous avez bien créé un bucket, actualisez la page Buckets après quelques minutes et vérifiez que l'état du bucket passe de Not ready à Ready.

API

Pour créer un bucket, appliquez une spécification de bucket à l'espace de noms de votre projet :

kubectl apply -f bucket.yaml

Voici un exemple de spécification de bucket utilisant la classe de stockage 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

Voici un exemple de spécification de bucket utilisant la classe de stockage 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

Voici un exemple de spécification de bucket avec la version de chiffrement 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

Pour en savoir plus, consultez la documentation de référence de l'API Bucket.

Voici un exemple de spécification de bucket birégional dans l'API globale d'administrateur d'organisation :

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

Pour créer un bucket birégional à l'aide du stockage Nearline, définissez storageClass: Nearline.

Notez que seul le chiffrement V2 est compatible avec les buckets birégionaux et que toutes les opérations de création, de mise à jour ou de suppression d'une ressource de bucket birégional doivent être effectuées sur le serveur de l'API globale.

gdcloud

Pour créer un bucket à zone unique avec gdcloud à l'aide de la classe de stockage Nearline :

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

Pour créer un bucket birégional avec gdcloud à l'aide de l'emplacement global :

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

Si --storage-class est omis, Standard est utilisé par défaut.

Pour en savoir plus, consultez gdcloud storage buckets create.

Une fois le bucket créé, vous pouvez exécuter la commande suivante pour confirmer et vérifier les détails du bucket :

kubectl describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

La section Status (État) comporte deux champs importants : Encryption (Chiffrement) pour les détails du chiffrement et Fully Qualified Name (Nom de domaine complet) qui contient le FULLY_QUALIFIED_BUCKET_NAME.

Chiffrement v1

Les informations concernent l'AEADKey nommé obj-FULLY_QUALIFIED_BUCKET_NAME, qui sert de référence à la clé de chiffrement utilisée pour chiffrer les objets stockés dans le bucket. Voici un exemple :

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

Chiffrement v2

Les informations concernent le secret nommé kek-ref-FULLY_QUALIFIED_BUCKET_NAME, qui sert de référence pour les AEADKeys par défaut actifs. Les AEADKeys par défaut actifs sont sélectionnés de manière aléatoire pour chiffrer les objets importés dans le bucket lorsqu'aucun AEADKey spécifique n'est spécifié.

Voici un exemple :

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

Vous pouvez également exécuter la commande suivante pour vérifier que les AEADKeys nécessaires sont créés :

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

Après avoir créé un bucket, vous pouvez le gérer au nom des opérateurs d'applications en créant un fichier de stratégie lorsque vous accordez l'accès au bucket et en attribuant la stratégie à un bucket.