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 :
-
Récupérez les credentials depuis le Secret Kubernetes :
kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' | base64 -d | jq -
Utilisez le champ
spec.bucketNamecomme nom de bucket (et nonmetadata.name) :aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<spec.bucketName>/ -
Vérifiez que
accessKeyIDetaccessSecretKeysont 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 :
-
Utilisez les credentials spécifiques au bucket que vous souhaitez lister :
aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<spec.bucketName>/ -
Pour lister tous vos buckets, utilisez
kubectl:kubectl get buckets -
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> où <name> est le metadata.name de la ressource Bucket.
Solution :
-
Listez les Secrets disponibles :
kubectl get tenantsecrets | grep bucket- -
Extrayez les informations d'accès :
kubectl get tenantsecret bucket-<name> -o jsonpath='{.data.BucketInfo}' | base64 -d | jq -
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 :
-
Vérifiez votre connectivité vers l'endpoint :
curl -s -o /dev/null -w "%{time_total}" https://prod.s3.hikube.cloud -
Utilisez l'endpoint régional
https://prod.s3.hikube.cloud(pas de CDN intermédiaire). -
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) -
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 :
-
Vérifiez le statut de la ressource Bucket :
kubectl get bucket <name>
kubectl describe bucket <name> -
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' -
Utilisez ce nom réel pour accéder au bucket :
aws --endpoint-url https://prod.s3.hikube.cloud s3 ls s3://<real-bucket-name>/
Ne confondez pas metadata.name (nom Kubernetes) et spec.bucketName (nom réel dans S3). Seul le second fonctionne pour l'accès S3.