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

Les buckets de stockage sont des ressources limitées à un projet spécifique. Le projet agit comme un conteneur, regroupant vos buckets et permettant leur gestion via le serveur d'API Management. Pour pouvoir effectuer les opérations décrites sur cette page, vous devez créer un projet ou en sélectionner un existant pour lequel vous disposez des autorisations suffisantes.

Rôles IAM requis

Contactez votre administrateur de projet IAM pour demander les rôles suivants dans l'espace de noms de votre projet :

  • Administrateur de bucket de projet (project-bucket-admin) : créez, mettez à jour et supprimez des buckets de stockage.
  • Lecteur d'objets de bucket de projet (project-bucket-object-viewer) : affichez et vérifiez les détails des buckets et des objets de stockage.

Pour en savoir plus, consultez la section Accorder l'accès à un bucket.

Préparer votre environnement

Pour exécuter des commandes sur le serveur d'API de gestion ou le serveur d'API global, procédez comme suit :

  1. Connectez-vous et générez le fichier kubeconfig pour le serveur d'API de gestion zonale si vous n'en avez pas.
  2. Pour les buckets à deux zones, procédez comme suit :
    • Vérifiez auprès de votre opérateur d'infrastructure (OI) que la ressource personnalisée BucketLocationConfig a été créée pour vos zones appairées.
    • Générez le fichier kubeconfig pour le serveur d'API global.

Consignes de dénomination des buckets de stockage

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

  • Être unique dans le projet. Le serveur d'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 à deux zones.

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 zonal, appliquez une spécification de bucket à l'espace de noms de votre projet :

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG 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 à deux zones pour le serveur d'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

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

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

Pour créer un bucket à deux zones, appliquez la spécification au serveur d'API global :

kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f bucket.yaml

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 à deux zones 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 la section gdcloud storage buckets create.

Après avoir créé le bucket, exécutez la commande suivante pour confirmer et vérifier les détails du bucket :

kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG describe buckets BUCKET_NAME -n PROJECT_NAMESPACE

La section Status (État) comporte deux champs importants : Encryption (Chiffrement) (pour les détails de 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 --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG 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.