Aller au contenu principal
Version: 3.0.0-alpha (Diátaxis)

Dépannage — Buckets S3

AccessDenied lors de l'accès au bucket

Cause : les credentials utilisées sont incorrectes, ou le nom de bucket utilisé ne correspond pas au nom réel dans le backend S3.

Solution :

  1. Récupérez les credentials depuis le Secret Kubernetes :

    kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' | base64 -d | jq
  2. Utilisez le champ spec.bucketName comme nom de bucket (et non metadata.name) :

    aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<spec.bucketName>/
  3. Vérifiez que accessKeyID et accessSecretKey sont correctement configurés dans votre outil S3.


ListBucket échoue sur la racine

Cause : chaque bucket possède ses propres credentials isolées. Il n'est pas possible de lister tous les buckets avec un seul jeu de credentials.

Solution :

  1. Utilisez les credentials spécifiques au bucket que vous souhaitez lister :

    aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<spec.bucketName>/
  2. Pour lister tous vos buckets, utilisez kubectl :

    kubectl get buckets
  3. Pour chaque bucket, récupérez les credentials individuelles depuis le Secret correspondant.


Credentials introuvables

Cause : le nom du Secret suit le pattern bucket-<name><name> est le metadata.name de la ressource Bucket.

Solution :

  1. Listez les Secrets disponibles :

    kubectl get tenantsecrets | grep bucket-
  2. Extrayez les informations d'accès :

    kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' | base64 -d | jq
  3. Pour extraire uniquement les clés :

    kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' \
    | base64 -d \
    | jq -r '.spec.secretS3 | "\(.accessKeyID) \(.accessSecretKey)"'

Upload lent ou timeout

Cause : problème réseau, taille de fichier importante sans multipart upload, ou endpoint distant.

Solution :

  1. Vérifiez votre connectivité vers l'endpoint :

    curl -s -o /dev/null -w "%{time_total}" https://prod.s3.hikube.cloud
  2. Utilisez l'endpoint régional https://prod.s3.hikube.cloud (pas de CDN intermédiaire).

  3. Pour les fichiers volumineux, activez le multipart upload :

    aws --endpoint-url https://prod.s3.hikube.cloud s3 cp large-file.tar.gz s3://<bucket-name>/ \
    --expected-size $(stat -c%s large-file.tar.gz)
  4. Avec mc, le multipart est automatique pour les fichiers de plus de 64 Mo.


Bucket non trouvé après création

Cause : le nom réel du bucket dans le backend S3 (spec.bucketName) diffère du metadata.name de la ressource Kubernetes.

Solution :

  1. Vérifiez le statut de la ressource Bucket :

    kubectl get bucket <name>
    kubectl describe bucket <name>
  2. Récupérez le nom réel du bucket depuis le Secret :

    kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' \
    | base64 -d \
    | jq -r '.spec.bucketName'
  3. Utilisez ce nom réel pour accéder au bucket :

    aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<real-bucket-name>/
attention

Ne confondez pas metadata.name (nom Kubernetes) et spec.bucketName (nom réel dans S3). Seul le second fonctionne pour l'accès S3.