Cette page explique comment installer un bucket Cloud Storage en tant que volume de stockage, à l'aide des installations de volume Cloud Run.
L'installation du bucket en tant que volume dans Cloud Run présente le contenu du bucket sous forme de fichiers dans le système de fichiers du conteneur. Après avoir installé le bucket en tant que volume, vous y accédez comme s'il s'agissait d'un répertoire de votre système de fichiers local, en utilisant les opérations et les bibliothèques du système de fichiers de votre langage de programmation au lieu d'utiliser les bibliothèques clientes des API Google.
Vous pouvez installer votre volume en lecture seule et spécifier des options d'installation pour votre volume.
Exigences relatives à la mémoire
Les installations de volume Cloud Storage utilisent la mémoire du conteneur Cloud Run pour les activités suivantes :Pour toute la mise en cache de Cloud Storage FUSE, Cloud Run utilise par défaut le paramètre de cache de statistiques avec une valeur TTL (Time To Live) de 60 secondes. La taille maximale par défaut du cache de statistiques est de 32 Mo. La taille maximale par défaut du cache de types est de 4 Mio.
Lors de la lecture à partir de Cloud Storage, Cloud Storage FUSE effectue des appels d'API pour lire un objet directement, sans télécharger l'intégralité du fichier dans un répertoire local. Cloud Storage FUSE établit une connexion TCP et lit l'intégralité de l'objet Cloud Storage, ou seulement les parties du fichier que vous spécifiez dans votre application ou le système d'exploitation via un décalage. Lors de la lecture, Cloud Storage FUSE consomme également de la mémoire en plus des caches de statistiques et de types, par exemple un tableau de 1 Mio pour chaque fichier qu'il lit et pour
goroutines.Lors de l'écriture dans Cloud Storage, Cloud Storage FUSE accepte
streaming-writes, un chemin d'écriture, par défaut. Cloud Storage FUSE importe les données directement dans Cloud Storage sans effectuer de préproduction complète du fichier. Chaque fichier que vous ouvrez pour des écritures en flux continu consomme environ 64 Mio de mémoire pendant le processus d'importation. Cela réduit à la fois la latence et l'utilisation de l'espace disque, ce qui est particulièrement avantageux pour les écritures séquentielles volumineuses.
Limites
Étant donné que Cloud Run utilise Cloud Storage FUSE pour cette installation de volume, vous devez prendre en compte les éléments suivants lors de l'installation d'un bucket Cloud Storage en tant que volume :
- Cloud Storage FUSE ne permet pas de contrôler la simultanéité pour plusieurs écritures (verrouillage de fichiers) dans un même fichier. Lorsque plusieurs écritures tentent de remplacer un fichier, la dernière écriture l'emporte et toutes les écritures précédentes sont perdues.
- Cloud Storage FUSE n'est pas un système de fichiers entièrement compatible avec POSIX. Pour plus de détails, consultez la documentation de Cloud Storage FUSE.
Chemins d'accès non autorisés
Cloud Run ne vous permet pas d'installer un volume sur /dev, /proc ou /sys, ou dans leurs sous-répertoires.
Avant de commencer
Vous avez besoin d'un bucket Cloud Storage à installer en tant que volume.
Pour optimiser les performances de lecture/écriture dans Cloud Storage, consultez Optimiser les performances de la bande passante réseau de Cloud Storage FUSE.
Rôles requis
Pour obtenir les autorisations nécessaires pour configurer des installations de volume Cloud Storage, demandez à votre administrateur de vous accorder les rôles IAM suivants :
- Développeur Cloud Run (
roles/run.developer) sur le service Cloud Run - Utilisateur du compte de service (
roles/iam.serviceAccountUser) sur l'identité du service
Pour obtenir les autorisations nécessaires à votre identité de service pour accéder au fichier et au bucket Cloud Storage, demandez à votre administrateur d'accorder à l'identité du service le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer). Si l'identité de service doit également effectuer des opérations d'écriture dans un bucket, attribuez-lui plutôt le rôle Utilisateur d'objets Storage (roles/storage.objectUser).
Pour en savoir plus sur les rôles et les autorisations Cloud Storage, consultez la page IAM pour Cloud Storage.
Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec les APICloud de Confiance , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.
Installer un volume Cloud Storage
Vous pouvez installer plusieurs buckets sur différents chemins d'installation. Vous pouvez également installer un volume sur plusieurs conteneurs à l'aide de chemins d'installation identiques ou différents sur l'ensemble des conteneurs.Si vous utilisez plusieurs conteneurs, spécifiez les volumes, puis spécifiez les installations de volume pour chaque conteneur.
Les installations de volume nécessitent l'environnement d'exécution de deuxième génération. Si aucun environnement d'exécution n'est explicitement configuré, Cloud Run sélectionne automatiquement l'environnement d'exécution de deuxième génération pour votre service.
Console
Dans la console Cloud de Confiance by S3NS , accédez à Cloud Run :
Sélectionnez Services dans le menu de navigation Cloud Run :
Si vous configurez un nouveau service, cliquez sur Déployer un conteneur et remplissez la page initiale des paramètres du service. Cliquez ensuite sur Conteneurs, mise en réseau, sécurité pour développer la page de configuration du service, puis cliquez sur Volumes.
Si vous configurez un service existant, cliquez sur celui-ci, puis sur l'onglet Conteneurs.
Cliquez sur Installer un volume.
Sélectionnez Bucket Cloud Storage comme type de volume.
Dans le champ Chemin d'installation, saisissez le chemin d'accès où vous souhaitez installer le volume.
Parcourez les bucket Cloud Storage et sélectionnez celui à utiliser pour le volume, ou sélectionnez un répertoire spécifique. Vous pouvez également créer un bucket.
Si vous souhaitez passer le bucket en lecture seule, cochez la case Lecture seule.
Vous pouvez également développer Options d'installation pour spécifier des options d'installation.
Cliquez sur Enregistrer.
Cliquez sur Créer pour un nouveau service. Cliquez sur Afficher les différences et redéployer, puis sur Déployer les modifications pour un service existant.
gcloud
Pour ajouter un volume et l'installer, procédez comme suit :
gcloud run deploy SERVICE \ --image IMAGE_URL \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,readonly=READ_ONLY
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
IMAGE_URL: référence à l'image de conteneur, par exempleus-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/mnt/my-volume. - BUCKET_NAME : nom du bucket Cloud Storage.
- READ_ONLY :
truepour passer le volume en lecture seule oufalsepour autoriser les écritures.
Si vous utilisez plusieurs conteneurs, spécifiez d'abord vos volumes, puis les installations de volumes pour chaque conteneur :
gcloud run services update SERVICE \ --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \ --container CONTAINER_1 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \ --container CONTAINER_2 \ --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Modifiez-les si nécessaire.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME
Remplacez les éléments suivants :
IMAGE_URL: référence à l'image de conteneur, par exempleus-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/mnt/my-volume. - VOLUME_NAME : nom de votre choix pour votre volume. La valeur VOLUME_NAME permet de mapper le volume à l'installation du volume.
- IS_READ_ONLY :
Truepour passer le volume en lecture seule ouFalsepour autoriser les écritures. - BUCKET_NAME: nom du bucket Cloud Storage.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Par défaut, la commande
gcloud run services replaceutilise le fichierservice.yamls'il est présent.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Ajoutez les éléments suivants à une ressourcegoogle_cloud_run_v2_service dans votre configuration Terraform : resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
gcs {
bucket = google_storage_bucket.default.name
read_only = IS_READ_ONLY
}
}
}
}
resource "google_storage_bucket" "default" {
name = "BUCKET_NAME"
location = "REGION"
}
Remplacez les éléments suivants :
- SERVICE : nom de votre service Cloud Run.
- REGION : région Cloud de Confiance .
IMAGE_URL: référence à l'image de conteneur, par exempleus-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- VOLUME_NAME : nom de votre choix pour votre volume. La valeur VOLUME_NAME permet de mapper le volume à l'installation du volume.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/mnt/my-volume. - IS_READ_ONLY :
Truepour passer le volume en lecture seule ouFalsepour autoriser les écritures. - BUCKET_NAME: nom du bucket Cloud Storage.
Nouveau message
Pour spécifier des installations de volume dans votre fichier compose.yaml, ajoutez l'attribut volumes à la définition de votre service. Les volumes ou configs de premier niveau sont mappés aux buckets Cloud Storage.
services: web: image: IMAGE volumes: - VOLUME_NAME:MOUNT_PATH volumes: VOLUME_NAME:
Remplacez les éléments suivants :
- IMAGE : URL de votre image de conteneur
- VOLUME_NAME : nom du volume.
- MOUNT_PATH : chemin d'accès où vous souhaitez installer le volume.
Déployer les services
Pour déployer les services, exécutez la commande
gcloud run compose up:gcloud run compose up compose.yamlRépondez
yaux invites pour installer les composants requis ou activer les API.Facultatif : Rendez votre service public si vous souhaitez autoriser un accès non authentifié à celui-ci.
Une fois le déploiement terminé, l'URL du service Cloud Run s'affiche. Copiez cette URL et collez-la dans votre navigateur pour afficher le conteneur en cours d'exécution. Vous pouvez désactiver l'authentification par défaut depuis la console Cloud de Confiance .
Lire et écrire dans un volume
Si vous utilisez la fonctionnalité d'installation de volume Cloud Run, vous accédez à un volume installé à l'aide des mêmes bibliothèques dans votre langage de programmation que celles que vous utilisez pour lire et écrire des fichiers sur votre système de fichiers local.
Ceci est particulièrement utile si vous utilisez un conteneur existant qui attend que des données soient stockées sur le système de fichiers local et utilise des opérations standards du système de fichiers pour y accéder.
Les extraits suivants supposent une installation de volume avec un mountPath défini sur /mnt/my-volume.
Nodejs
Utilisez le module système de fichiers pour créer un fichier ou ajouter des données à un fichier existant dans le volume /mnt/my-volume :
var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });Python
Écrivez les données dans un fichier conservé dans le volume /mnt/my-volume :
f = open("/mnt/my-volume/sample-logfile.txt", "a")Go
Utilisez le package os pour créer un fichier conservé dans le volume /mnt/my-volume :
f, err := os.Create("/mnt/my-volume/sample-logfile.txt")Java
Utilisez la classe Java.io.File pour créer un fichier journal dans le volume /mnt/my-volume :
import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");Configuration du volume à l'aide des options d'installation
Vous pouvez éventuellement utiliser des options d'installation pour configurer différentes propriétés de l'installation de votre volume. Les options d'installation disponibles vous permettent de configurer les paramètres de cache, d'installer un répertoire spécifique, d'activer la journalisation de débogage et d'autres comportements.
Spécifier les options d'installation
Vous pouvez spécifier des options d'installation à l'aide de la console Cloud de Confiance , de Google Cloud CLI, de YAML ou de Terraform. Les options d'installation sont séparées par des points-virgules (;) dans la Google Cloud CLI et par des virgules dans YAML, comme indiqué dans les onglets suivants :
Console
Pour spécifier des options d'installation pour un volume existant :
Dans la console Cloud de Confiance by S3NS , accédez à la page Services de Cloud Run :
Cliquez sur le service pour ouvrir la page d'informations correspondante.
Cliquez sur l'onglet Conteneurs.
- Cliquez sur l'icône de modification à côté du volume que vous souhaitez modifier.
- Développez Options d'installation.
- Configurez les options d'installation en mettant à jour les champs appropriés ou en ajoutant des options d'installation manuellement.
- Cliquez sur Enregistrer.
Cliquez sur Afficher les différences et redéployer, puis sur Déployer les modifications.
gcloud
Pour ajouter un volume et l'installer avec des options d'installation :
gcloud run deploy SERVICE \ --image IMAGE_URL \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,readonly=READ_ONLY,mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N"
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
IMAGE_URL: référence à l'image de conteneur, par exempleus-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache. - BUCKET_NAME : nom du bucket Cloud Storage.
- READ_ONLY :
truepour passer le volume en lecture seule oufalsepour autoriser les écritures. - OPTION_1 : première option d'installation. Notez que vous pouvez spécifier autant d'options d'installation que nécessaire, chaque paire option d'installation/valeur étant séparée par un point-virgule.
- VALUE_1 : paramètre que vous souhaitez utiliser pour la première option d'installation.
- OPTION_N : option d'installation suivante.
- VALUE_N : paramètre de l'option d'installation suivante.
YAML
Si vous créez un service, ignorez cette étape. Si vous mettez à jour un service existant, téléchargez sa configuration YAML :
gcloud run services describe SERVICE --format export > service.yaml
Modifiez-les si nécessaire.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/execution-environment: gen2 spec: containers: - image: IMAGE_URL volumeMounts: - name: VOLUME_NAME mountPath: MOUNT_PATH volumes: - name: VOLUME_NAME csi: driver: gcsfuse.run.googleapis.com readOnly: IS_READ_ONLY volumeAttributes: bucketName: BUCKET_NAME mountOptions: OPTION_1=VALUE_1,OPTION_N=VALUE_N
Remplacez les éléments suivants :
IMAGE_URL: référence à l'image de conteneur, par exempleus-docker.pkg.dev/cloudrun/container/hello:latest. Si vous utilisez Artifact Registry, le dépôt REPO_NAME doit déjà être créé. L'URL respecte le formatLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache. - VOLUME_NAME : nom de votre choix pour votre volume. La valeur VOLUME_NAME permet de mapper le volume à l'installation du volume.
- IS_READ_ONLY :
Truepour passer le volume en lecture seule ouFalsepour autoriser les écritures. - BUCKET_NAME: nom du bucket Cloud Storage.
- OPTION_1 : première option d'installation. Notez que vous pouvez spécifier autant d'options d'installation que nécessaire, chaque paire d'option et de valeur d'installation étant séparée par une virgule.
- VALUE_1 : paramètre que vous souhaitez utiliser pour la première option d'installation.
- OPTION_N : option d'installation suivante.
- VALUE_N : paramètre de l'option d'installation suivante.
Créez ou mettez à jour le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Par défaut, la commande
gcloud run services replaceutilise le fichierservice.yamls'il est présent.
Terraform
Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez Commandes Terraform de base.
Ajoutez les éléments suivants à une ressourcegoogle_cloud_run_v2_service dans votre configuration Terraform : resource "google_cloud_run_v2_service" "default" {
name = "SERVICE"
location = "REGION"
template {
containers {
image = "IMAGE_URL"
volume_mounts {
name = "VOLUME_NAME"
mount_path = "MOUNT_PATH"
}
}
volumes {
name = "VOLUME_NAME"
gcs {
bucket = google_storage_bucket.default.name
read_only = IS_READ_ONLY
mount_options = ["OPTION_1=VALUE_1", "OPTION_N=VALUE_N", "OPTION_O"]
}
}
}
}
Remplacez les éléments suivants :
- SERVICE : nom de votre service Cloud Run.
- REGION : région Cloud de Confiance .
IMAGE_URL: référence à l'image de conteneur contenant le pool de nœuds de calcul, par exempleus-docker.pkg.dev/cloudrun/container/worker-pool:latest.- VOLUME_NAME : nom de votre choix pour votre volume. La valeur VOLUME_NAME permet de mapper le volume à l'installation du volume.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/mnt/my-volume. - IS_READ_ONLY :
Truepour passer le volume en lecture seule ouFalsepour autoriser les écritures. - BUCKET_NAME: nom du bucket Cloud Storage.
- OPTION_1 : première option d'installation. Notez que vous pouvez spécifier autant d'options d'installation que nécessaire, chaque paire d'option et de valeur d'installation étant séparée par une virgule.
- VALUE_1 : paramètre que vous souhaitez utiliser pour la première option d'installation.
- OPTION_N : deuxième option d'installation, le cas échéant.
- VALUE_N : paramètre de la deuxième option d'installation.
- OPTION_O : troisième option d'installation, le cas échéant. Certaines options d'installation n'ont pas de valeur.
Options d'installation couramment utilisées
Les options d'installation sont couramment utilisées pour :
- Configurer les paramètres du cache
- Installer uniquement un répertoire spécifique du bucket Cloud Storage
- Configurez la propriété du volume (
uid,gid). - Désactiver les répertoires implicites
- Spécifiez les niveaux de journalisation de débogage.
Configurer les paramètres de mise en cache
Vous pouvez modifier les paramètres de mise en cache de votre volume en définissant les options d'installation liées à la mise en cache. Le tableau suivant répertorie les paramètres, ainsi que les valeurs Cloud Run par défaut :
| Paramètre de cache | Description | Par défaut |
|---|---|---|
cache-dir |
Nom du volume en mémoire à utiliser comme répertoire sous-jacent pour conserver les fichiers de votre bucket Cloud Storage au format cr-volume:{volume name}. Par exemple, si vous souhaitez utiliser un volume en mémoire nommé in-memory-1 comme répertoire de cache, spécifiez cr-volume:in-memory-1. Pour savoir comment configurer des volumes en mémoire, consultez Configurer des montages de volume en mémoire pour les services. Lorsque vous activez ces fonctionnalités, Cloud Run modifie la comptabilisation des ressources du processus Cloud Storage FUSE et la prend en compte dans les limites de mémoire du conteneur. Pour augmenter la limite de mémoire du conteneur, consultez Configurer des limites de mémoire pour les services. |
|
file-cache-download-chunk-size-mb |
Spécifie la taille en Mio de chaque requête de lecture que chaque goroutine envoie à Cloud Storage lors du téléchargement de l'objet dans le cache de fichiers. | 200 |
file-cache-enable-parallel-downloads |
Accélère les lectures de fichiers volumineux en utilisant le répertoire de cache de fichiers comme tampon de préchargement utilisant plusieurs nœuds de calcul afin de télécharger plusieurs parties d'un fichier en parallèle. | vrai |
file-cache-max-parallel-downloads |
Nombre maximal de goroutines pouvant être lancées à un même moment pour tous les jobs de téléchargement de fichiers. | Le double du nombre de cœurs de processeur de votre machine ou 16, selon la valeur la plus élevée. |
file-cache-parallel-downloads-per-file |
Nombre de requêtes de téléchargement simultanées par fichier. | 16 |
file-cache-cache-file-for-range-read |
Indique si l'objet complet doit être téléchargé de manière asynchrone et stocké dans le répertoire de cache Cloud Storage FUSE lorsque la première lecture est effectuée à partir d'un décalage différent de zéro. | faux |
stat-cache-max-size-mb |
Taille maximale en mébioctets (Mio) que le cache de statistiques peut utiliser. Le cache de statistiques est toujours entièrement conservé en mémoire, ce qui a un impact sur la consommation de mémoire. Spécifiez la valeur 32 si votre charge de travail implique jusqu'à 20 000 fichiers. Si votre charge de travail utilise plus de 20 000 fichiers, augmentez la taille par incréments de 10 pour chaque tranche supplémentaire de 6 000 fichiers, sachant que le cache de statistiques utilise en moyenne 1 500 octets par fichier.Pour permettre au cache de statistiques d'utiliser autant de mémoire que nécessaire, spécifiez la valeur -1. Pour désactiver le cache de statistiques, spécifiez la valeur 0. |
32 |
type-cache-max-size-mb |
Taille maximale en Mio par répertoire que le cache de types peut utiliser. Le cache de types est toujours entièrement conservé en mémoire, ce qui a un impact sur la consommation de mémoire. Spécifiez la valeur 4 si le nombre maximal de fichiers dans un seul répertoire du bucket que vous installez contient 20 000 fichiers ou moins. Si le nombre maximal de fichiers dans un même répertoire que vous installez contient plus de 20 000 fichiers, augmentez la valeur de 1 pour chaque tranche de 5 000 fichiers (soit une moyenne d'environ 200 octets par fichier).Pour permettre au cache de types d'utiliser autant de mémoire que nécessaire, spécifiez la valeur -1.Pour désactiver le cache de types, spécifiez la valeur 0. |
4 |
La commande Google Cloud CLI suivante définit metadata-cache-ttl-secs sur 120 secondes et augmente la capacité du cache de statistiques et de types à 52 et 7 Mio, respectivement :
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="metadata-cache-ttl-secs=120;stat-cache-max-size-mb=52;type-cache-max-size-mb=7"
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- BUCKET_NAME : nom du bucket Cloud Storage.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache.
Activer la journalisation du débogage
Par défaut, Cloud Storage FUSE consigne les événements de niveau Info ou supérieur. Vous pouvez modifier les paramètres de journalisation en utilisant l'un des niveaux de gravité de journal suivants, classés du plus bas au plus élevé :
tracedebuginfowarningerror- Pour désactiver toute journalisation, spécifiez la valeur
off.
Lorsque vous spécifiez un niveau de gravité, Cloud Storage FUSE génère des journaux pour les événements dont le niveau de gravité est supérieur ou égal à la gravité spécifiée. Par exemple, lorsque vous spécifiez le niveau warning, Cloud Storage FUSE génère des journaux pour les avertissements et les erreurs.
Définir la gravité des journaux sur des niveaux supérieurs à info peut avoir un impact sur les performances et générer une grande quantité de données de journalisation. Nous vous recommandons donc de ne le faire qu'en cas de besoin. Pour assurer la compatibilité avec Cloud Logging, le format de journal est text. Le format json n'est pas accepté.
La ligne de commande suivante active la journalisation du débogage :
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug"
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- BUCKET_NAME : nom du bucket Cloud Storage.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache.
Désactiver les répertoires implicites
Pour que Cloud Storage ressemble davantage à un système de fichiers standard, Cloud Run active les répertoires implicites par défaut lors de l'installation d'un bucket Cloud Storage. Vous pouvez désactiver les répertoires implicites à l'aide de l'option d'installation implicit-dirs. La désactivation des répertoires implicites peut améliorer les performances et réduire les coûts, mais elle présente des inconvénients en termes de compatibilité.
La fonctionnalité de répertoires implicites permet à Cloud Run de reconnaître les fichiers Cloud Storage préexistants dont les noms imitent une structure de répertoires, comme /mydir/myfile.txt. Si vous désactivez les répertoires implicites, Cloud Run ne pourra pas lister ni lire ces fichiers.
La désactivation des répertoires implicites réduit le nombre de requêtes adressées à Cloud Storage, ce qui peut améliorer les performances et le coût de votre application. Pour en savoir plus, consultez la documentation sur les fichiers et répertoires Cloud Storage FUSE.
La ligne de commande suivante désactive les répertoires implicites :
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false"
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- BUCKET_NAME : nom du bucket Cloud Storage.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache.
Installer un répertoire spécifique dans votre bucket Cloud Storage
Par défaut, Cloud Run installe l'intégralité du bucket Cloud Storage, ce qui permet aux services Cloud Run d'accéder à l'ensemble de son contenu. Dans certains cas, vous pouvez n'installer qu'un répertoire spécifique. Par exemple, si le bucket contient un grand nombre de fichiers, l'installation d'un répertoire spécifique peut améliorer les performances.
Vous pouvez également l'implémenter à des fins d'isolation lorsque vous avez besoin que différents services aient accès à différents répertoires du bucket de stockage.
La ligne de commande suivante spécifie le répertoire à installer :
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images"
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- BUCKET_NAME : nom du bucket Cloud Storage.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache.
Régler le volume UID et GID
Utilisez les options d'installation uid et gid pour modifier l'identifiant utilisateur et l'identifiant de groupe du volume. Cela est utile si vous souhaitez définir la propriété du fichier sur un utilisateur ou un groupe spécifique correspondant à l'identité d'un ou de plusieurs conteneurs en cours d'exécution. Par défaut, les volumes appartiennent à la racine.
La ligne de commande suivante définit uid et gid :
gcloud run services update SERVICE \ --add-volume mount-path=MOUNT_PATH,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID"
Remplacez les éléments suivants :
- SERVICE : nom de votre service.
- MOUNT_PATH : chemin relatif où vous installez le volume, par exemple
/cache. - BUCKET_NAME : nom du bucket Cloud Storage.
- UID : ID utilisateur à utiliser pour installer le volume.
- GID : ID de groupe à utiliser pour installer le volume.
Définir d'autres options d'installation
Voici la liste complète de toutes les options d'installation compatibles avec Cloud Run.
Annuaire
implicit-dirsonly-dirrename-dir-limit
Debug
debug_fuse_errorsdebug_fusedebug_gcsdebug-invariantsdebug_mutex
Cache
stat-cache-capacitystat-cache-ttltype-cache-ttlenable-nonexistent-type-cache
Autorisations
uidgidfile-modedir-mode
Autre
billing-projectclient-protocolexperimental-enable-json-readexperimental-opentelemetry-collector-addresshttp-client-timeoutlimit-bytes-per-seclimit-ops-per-secmax-conns-per-hostmax-idle-conns-per-hostmax-retry-sleep-oretry-multipliersequential-read-size-mbstackdriver-export-interval
Pour obtenir une description détaillée de ces options, consultez Options d'installation de la ligne de commande Cloud Storage FUSE. La page Cloud Storage FUSE liste toutes les options FUSE disponibles, dont certaines ne sont pas compatibles avec Cloud Run.
Afficher les paramètres des installations de volumes
Console
Dans la console Cloud de Confiance by S3NS , accédez à la page Services de Cloud Run :
Dans la liste des services, cliquez sur le service qui vous intéresse pour ouvrir la page d'informations sur le service.
Cliquez sur l'onglet Conteneurs pour afficher les détails du volume.
gcloud
Pour afficher les paramètres d'installation du volume, exécutez la commande suivante :
gcloud run services describe SERVICE_NAME
Recherchez le paramètre correspondant aux montages de volumes dans le résultat renvoyé.
Optimiser les performances de la bande passante réseau de Cloud Storage FUSE
Pour de meilleures performances de lecture et d'écriture, connectez votre service Cloud Run à un réseau VPC à l'aide du VPC direct et acheminez tout le trafic sortant via votre réseau VPC. Pour ce faire, utilisez l'une des options suivantes:
- Activez l'accès privé à Google en veillant à définir le paramètre
vpc-egresssurall-traffic. - Utilisez l'une des options décrites sur la page des bonnes pratiques de mise en réseau, dans la section Trafic interne vers une API Google.
Délai de démarrage du conteneur et installations Cloud Storage FUSE
L'utilisation de Cloud Storage FUSE peut légèrement augmenter le temps de démarrage à froid de votre conteneur Cloud Run, car Cloud Run démarre l'installation de volumes avant le démarrage du ou des conteneurs. Votre conteneur ne démarrera que si Cloud Storage FUSE est installé correctement.
Notez que Cloud Storage FUSE n'installe un volume qu'après avoir établi une connexion à Cloud Storage. Tout retard de mise en réseau peut avoir un impact sur le temps de démarrage du conteneur. De même, si la tentative de connexion échoue, Cloud Storage FUSE ne pourra pas être installé et le service Cloud Run ne démarrera pas. En outre, si l'installation de Cloud Storage FUSE prend plus de 30 secondes, le service Cloud Run ne démarre pas, car Cloud Run a un délai total de 30 secondes pour effectuer toutes les installations.
Caractéristiques des performances de Cloud Storage FUSE
Si vous définissez deux volumes, chacun pointant vers un bucket différent, deux processus Cloud Storage FUSE seront lancés. Les montages et les processus se produisent en parallèle.
Les opérations utilisant Cloud Storage FUSE sont affectées par la bande passante réseau, car Cloud Storage FUSE communique avec Cloud Storage à l'aide de l'API Cloud Storage. Certaines opérations, telles que la liste du contenu d'un bucket, peuvent être lentes si la bande passante réseau est faible. De même, la lecture d'un fichier volumineux peut prendre du temps, car cette opération est également limitée par la bande passante du réseau.
Lorsque vous écrivez dans un bucket, Cloud Storage FUSE prépare entièrement l'objet en mémoire. Cela signifie que l'écriture de fichiers volumineux est limitée par la quantité de mémoire disponible pour l'instance de conteneur (la limite de mémoire maximale du conteneur est de 32 Gio).
L'écriture n'est effacée dans le bucket que lorsque vous effectuez une opération close ou fsync : l'objet complet est alors importé dans le bucket. La seule exception à un objet en cours de réimportation dans le bucket concerne un fichier avec du contenu ajouté lorsque sa taille est supérieure ou égale à 2 Mio.
Pour en savoir plus, consultez les ressources suivantes :
- Documentation Cloud Storage FUSE
- Performances de Cloud Storage FUSE
- Sémantique de Cloud Storage FUSE
Effacer et supprimer des volumes et des installations de volume
Vous pouvez effacer tous les volumes et installations, ou supprimer des volumes et des installations de volume individuels.
Effacer tous les volumes et installations de volume
Pour effacer tous les volumes et installations de volume de votre service à conteneur unique, exécutez la commande suivante :
gcloud run services update SERVICE \ --clear-volumes \ --clear-volume-mounts
gcloud run services update SERVICE \ --container=container1 \ --clear-volumes \ --clear-volume-mounts \ --container=container2 \ --clear-volumes \ --clear-volume-mounts
Supprimer des volumes et des installations de volume individuels
Pour supprimer un volume, vous devez également supprimer tous les montages de volume qui l'utilisent.
Pour supprimer des volumes ou des installations de volume individuels, utilisez les options remove-volume et remove-volume-mount :
gcloud run services update SERVICE \ --remove-volume VOLUME_NAME \ --container=container1 \ --remove-volume-mount MOUNT_PATH \ --container=container2 \ --remove-volume-mount MOUNT_PATH