Configure montagens de volumes do Cloud Storage para serviços do Cloud Run

Esta página mostra como montar um contentor do Cloud Storage como um volume de armazenamento, usando montagens de volumes do Cloud Run.

A montagem do contentor como um volume no Cloud Run apresenta o conteúdo do contentor como ficheiros no sistema de ficheiros do contentor. Depois de montar o contentor como um volume, acede ao contentor como se fosse um diretório no seu sistema de ficheiros local, usando as operações e as bibliotecas do sistema de ficheiros da sua linguagem de programação em vez de usar as bibliotecas do cliente da API Google.

Pode montar o volume como só de leitura e também pode especificar opções de montagem para o volume.

Requisitos de memória

As montagens de volumes do Cloud Storage usam a memória do contentor do Cloud Run para as seguintes atividades:

  • Para toda a colocação em cache do FUSE do Cloud Storage, o Cloud Run usa a predefinição de cache de estatísticas com um tempo de vida (TTL) de 60 segundos. O tamanho máximo predefinido da cache de estatísticas é de 32 MB e o tamanho máximo predefinido da cache de tipos é de 4 MB.

  • Durante a leitura, o FUSE do Cloud Storage também consome memória para além das estatísticas e das caches de tipos, como uma matriz de 1 MiB para cada ficheiro que está a ser lido e para goroutines.

  • Quando escreve no Cloud Storage, todo o ficheiro é preparado na memória do Cloud Run antes de ser escrito no Cloud Storage.

Limitações

Uma vez que o Cloud Run usa o Cloud Storage FUSE para esta montagem de volume, existem alguns aspetos a ter em conta ao montar um contentor do Cloud Storage como um volume:

  • O Cloud Storage FUSE não oferece controlo de concorrência para várias escritas (bloqueio de ficheiros) no mesmo ficheiro. Quando várias escritas tentam substituir um ficheiro, a última escrita ganha e todas as escritas anteriores são perdidas.
  • O FUSE do Cloud Storage não é um sistema de ficheiros totalmente compatível com POSIX. Para mais detalhes, consulte a documentação do FUSE do Cloud Storage.

Caminhos não permitidos

O Cloud Run não lhe permite montar um volume em /dev, /proc ou /sys, nem nos respetivos subdiretórios.

Antes de começar

Precisa de um contentor do Cloud Storage para montar como volume.

Para um desempenho de leitura/escrita ideal no Cloud Storage, consulte o artigo Otimizar o desempenho da largura de banda da rede FUSE do Cloud Storage.

Funções necessárias

Para receber as autorizações de que precisa para configurar as montagens de volumes do Cloud Storage, peça ao seu administrador que lhe conceda as seguintes funções do IAM:

Para obter as autorizações de que a sua identidade de serviço precisa para aceder ao ficheiro e ao contentor do Cloud Storage, peça ao seu administrador para conceder à identidade de serviço a função de Visualizador de objetos de armazenamento (roles/storage.objectViewer). Se a identidade do serviço também precisar de realizar operações de escrita num contentor, conceda a função Utilizador de objetos de armazenamento (roles/storage.objectUser) em alternativa.

Para mais detalhes sobre as funções e as autorizações do Cloud Storage, consulte o artigo IAM para o Cloud Storage.

Para ver uma lista de funções e autorizações de IAM associadas ao Cloud Run, consulte os artigos Funções de IAM do Cloud Run e Autorizações de IAM do Cloud Run. Se o seu serviço do Cloud Run interage com Google Cloud APIs, como as bibliotecas cliente da Google Cloud, consulte o guia de configuração da identidade do serviço. Para mais informações sobre a atribuição de funções, consulte as autorizações de implementação e faça a gestão do acesso.

Monte um volume do Cloud Storage

Pode montar vários contentores em diferentes caminhos de montagem. Também pode montar um volume em mais do que um contentor usando os mesmos ou diferentes caminhos de montagem nos contentores.

Se estiver a usar vários contentores, especifique primeiro os volumes e, em seguida, especifique as montagens de volumes para cada contentor.

As montagens de volumes requerem o ambiente de execução de segunda geração. O Cloud Run seleciona automaticamente o ambiente de execução de segunda geração para o seu serviço se não for configurado explicitamente nenhum ambiente de execução.

Consola

  1. Na Google Cloud consola, aceda ao Cloud Run:

    Aceda ao Cloud Run

  2. Selecione Serviços no menu e clique em Implementar contentor para configurar um novo serviço. Se estiver a configurar um serviço existente, clique no serviço e, de seguida, em Editar e implementar nova revisão.

  3. Se estiver a configurar um novo serviço, preencha a página de definições iniciais do serviço e, de seguida, clique em Contentores, volumes, rede, segurança para expandir a página de configuração do serviço.

  4. Clique no separador Volumes.

    imagem

    • Clique em Adicionar volume.
    • No menu pendente Tipo de volume, selecione o contentor de armazenamento na nuvem como o tipo de volume.
    • No campo Nome do volume, introduza o nome que quer usar para o volume.
    • Procure e selecione o contentor do Cloud Storage a usar para o volume ou, opcionalmente, crie um novo contentor.
    • Se quiser tornar o contentor só de leitura, selecione a caixa de verificação Só de leitura.
    • Clique em Concluído.
    • Clique no separador Recipiente:
      • Clique no separador Montagens de volumes.
      • Clique em Montar volume.
      • Selecione o volume de armazenamento no menu.
      • Especifique o caminho onde quer montar o volume.
      • Clique em Concluído
  5. Clique em Criar ou Implementar.

gcloud

  • Para adicionar um volume e montá-lo:

    gcloud run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

    Substitua o seguinte:

    • SERVICE: o nome do seu serviço.
    • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /mnt/my-volume.
    • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
    • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • Para montar o volume como um volume só de leitura:

    --add-volume=name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,readonly=true
  • Se estiver a usar vários contentores, especifique primeiro os volumes e, em seguida, especifique as montagens de volumes para cada contentor:

    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

  1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize conforme necessário.

    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

    Substitua o seguinte:

    • IMAGE_URL: uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /mnt/my-volume.
    • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
    • IS_READ_ONLY: True para tornar o volume só de leitura ou False para permitir gravações.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
  3. Crie ou atualize o serviço com o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_service na sua configuração do 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"
  }

Substitua o seguinte:

  • SERVICE: o nome do seu serviço do Cloud Run.
  • REGION: a Google Cloud região.
  • IMAGE_URL: uma referência à imagem do contentor, por exemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Se usar o Artifact Registry, o repositório REPO_NAMEtem de já estar criado. O URL segue o formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para o volume de montagem.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /mnt/my-volume.
  • IS_READ_ONLY: True para tornar o volume só de leitura ou False para permitir gravações.
  • BUCKET_NAME: o nome do contentor do Cloud Storage.

Ler e escrever num volume

Se usar a funcionalidade de montagem de volumes do Cloud Run, acede a um volume montado através das mesmas bibliotecas no seu idioma de programação que usa para ler e escrever ficheiros no seu sistema de ficheiros local.

Isto é especialmente útil se estiver a usar um contentor existente que espera que os dados sejam armazenados no sistema de ficheiros local e usa operações regulares do sistema de ficheiros para aceder aos mesmos.

Os seguintes fragmentos pressupõem uma montagem de volume com um mountPath definido como /mnt/my-volume.

Nodejs

Use o módulo do sistema de ficheiros para criar um novo ficheiro ou anexar a um ficheiro existente no volume, /mnt/my-volume:

var fs = require('fs');
fs.appendFileSync('/mnt/my-volume/sample-logfile.txt', 'Hello logs!', { flag: 'a+' });

Python

Escrever num ficheiro mantido no volume /mnt/my-volume:

f = open("/mnt/my-volume/sample-logfile.txt", "a")

Ir

Use o pacote os para criar um novo ficheiro mantido no volume, /mnt/my-volume:

f, err := os.Create("/mnt/my-volume/sample-logfile.txt")

Java

Use a classe Java.io.File para criar um ficheiro de registo no volume /mnt/my-volume:

import java.io.File;
File f = new File("/mnt/my-volume/sample-logfile.txt");

Configuração do volume através de opções de montagem

Opcionalmente, pode usar opções de montagem para configurar várias propriedades da montagem do volume. As opções de montagem disponíveis permitem-lhe configurar as definições da cache, montar um diretório específico, ativar o registo de depuração e outros comportamentos.

Especifique as opções de montagem

Pode especificar opções de montagem através da CLI do Google Cloud, YAML ou Terraform. As opções de montagem estão separadas por pontos e vírgulas (;) na CLI do Google Cloud e por vírgulas em YAML, conforme mostrado nos separadores seguintes:

gcloud

Para adicionar um volume e montá-lo com opções de montagem:

gcloud beta run services update SERVICE \
    --execution-environment gen2 \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="OPTION_1=VALUE_1;OPTION_N=VALUE_N" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Substitua o seguinte:

  • SERVICE: o nome do seu serviço.
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • OPTION_1: a primeira opção de montagem. Tenha em atenção que pode especificar quantas opções de montagem forem necessárias, com cada opção de montagem e par de valores separados por um ponto e vírgula.
  • VALUE_1: a definição que quer para a primeira opção de montagem.
  • OPTION_N: a opção de montagem seguinte.
  • VALUE_N: a definição para a opção de montagem seguinte.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.

YAML

  1. Se estiver a criar um novo serviço, ignore este passo. Se estiver a atualizar um serviço existente, transfira a respetiva configuração YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Atualize conforme necessário.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
      annotations:
        run.googleapis.com/launch-stage: BETA
    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

    Substitua o seguinte:

    • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.
    • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
    • IS_READ_ONLY: True para tornar o volume só de leitura ou False para permitir gravações.
    • BUCKET_NAME: o nome do contentor do Cloud Storage.
    • OPTION_1: a primeira opção de montagem. Tenha em atenção que pode especificar quantas opções de montagem precisar, com cada opção de montagem e par de valores separados por uma vírgula.
    • VALUE_1: a definição que quer para a primeira opção de montagem.
    • OPTION_N: a opção de montagem seguinte.
    • VALUE_N: a definição para a opção de montagem seguinte.
  3. Crie ou atualize o serviço com o seguinte comando:

    gcloud run services replace service.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte os comandos básicos do Terraform.

Adicione o seguinte a um recurso google_cloud_run_v2_service na sua configuração do Terraform:

  resource "google_cloud_run_v2_service" "default" {
    provider = google-beta
    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"]
        }
      }
    }
  }

Substitua o seguinte:

  • SERVICE: o nome do seu serviço do Cloud Run.
  • REGION: a Google Cloud região.
  • IMAGE_URL: uma referência à imagem do contentor que contém o conjunto de trabalhadores, como us-docker.pkg.dev/cloudrun/container/worker-pool:latest
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para o volume de montagem.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /mnt/my-volume.
  • IS_READ_ONLY: True para tornar o volume só de leitura ou False para permitir gravações.
  • BUCKET_NAME: o nome do contentor do Cloud Storage.
  • OPTION_1: a primeira opção de montagem. Tenha em atenção que pode especificar quantas opções de montagem precisar, com cada opção de montagem e par de valores separados por uma vírgula.
  • VALUE_1: a definição que quer para a primeira opção de montagem.
  • OPTION_N: a segunda opção de montagem, se aplicável.
  • VALUE_N: a definição da segunda opção de montagem.
  • OPTION_O: a terceira opção de montagem, se aplicável. Algumas opções de montagem não têm um valor.

Opções de montagem usadas frequentemente

As opções de montagem são usadas frequentemente para:

  • Configure as definições da cache
  • Monte apenas um diretório específico do contentor do Cloud Storage
  • Configure a propriedade do volume (uid, gid)
  • Desative os diretórios implícitos
  • Especifique os níveis de registo de depuração.

Configure as definições de colocação em cache

Pode alterar as definições de colocação em cache do volume definindo as opções de montagem relacionadas com a colocação em cache. A tabela seguinte lista as definições, juntamente com os valores predefinidos do Cloud Run :

Definição de cache Descrição Predefinição
metadata-cache-ttl-secs Tempo de vida (TTL) em segundos das entradas de metadados em cache. Por exemplo, metadata-cache-ttl-secs=120s. Para usar o ficheiro mais atualizado, especifique um valor de 0. Para usar sempre a versão em cache, especifique um valor de -1. Para saber mais, consulte o artigo Configurar a invalidação de cache. 60
stat-cache-max-size-mb Tamanho máximo em mebibytes (MiB) que a cache de estatísticas pode usar. A cache de estatísticas é sempre mantida totalmente na memória, o que afeta o consumo de memória. Especifique um valor de 32 se a sua carga de trabalho envolver até 20 000 ficheiros. Se a sua carga de trabalho usar mais de 20 000 ficheiros, aumente o tamanho em valores de 10 para cada 6000 ficheiros adicionais, em que a cache de estatísticas usa uma média de 1500 MiB por ficheiro.

Para permitir que a cache de estatísticas use a memória necessária, especifique um valor de -1. Para desativar a cache de estatísticas, especifique um valor de 0.
32
type-cache-max-size-mb O tamanho máximo em MiB por diretório que a cache de tipos pode usar. A cache de tipos é sempre mantida totalmente na memória, o que afeta o consumo de memória.

Especifique um valor de 4 se o número máximo de ficheiros num único diretório do contentor que está a montar contiver 20 000 ficheiros ou menos. Se o número máximo de ficheiros num único diretório que está a montar contiver mais de 20 000 ficheiros, aumente o valor em 1 para cada 5000 ficheiros, o que corresponde a uma média de cerca de 200 bytes por ficheiro.

Para permitir que a cache de tipos use a memória necessária, especifique um valor de -1.

Para desativar a cache de tipos, especifique um valor de 0.
4

O seguinte comando da CLI gcloud define o metadata-cache-ttl-secs como 120 segundos e aumenta a capacidade da cache de estatísticas e tipos para 52 e 7 MiB, respetivamente:

gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,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" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Substitua o seguinte:

  • SERVICE: o nome do seu serviço.
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.

Ative o registo de depuração

Por predefinição, o Cloud Storage FUSE regista eventos com Info ou superior. Pode alterar as definições de registo usando qualquer um dos seguintes níveis de gravidade do registo, apresentados por ordem do mais baixo para o mais alto:

  • trace
  • debug
  • info
  • warning
  • error
  • Para desativar todo o registo, especifique o valor off.

Quando especifica um nível de gravidade, o Cloud Storage FUSE gera registos para eventos que têm um nível de gravidade igual ou superior à gravidade especificada. Por exemplo, quando especifica o nível warning, o Cloud Storage FUSE gera registos de avisos e erros.

A definição da gravidade do registo para níveis superiores a info pode afetar o desempenho e gerar uma grande quantidade de dados de registo, pelo que recomendamos que o faça apenas quando necessário.

A seguinte linha de comandos ativa o registo de depuração:

gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="log-severity=debug" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Substitua o seguinte:

  • SERVICE: o nome do seu serviço.
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.

Desative os diretórios implícitos

Para fazer com que o Cloud Storage se pareça mais com um sistema de ficheiros padrão, o Cloud Run ativa os diretórios implícitos por predefinição quando monta um contentor do Cloud Storage. Pode desativar os diretórios implícitos através da opção de montagem implicit-dirs. A desativação dos diretórios implícitos pode melhorar o desempenho e o custo, mas tem desvantagens de compatibilidade.

A funcionalidade de diretórios implícitos permite que o Cloud Run reconheça ficheiros do Cloud Storage preexistentes cujos nomes de ficheiros imitam uma estrutura de diretórios, como /mydir/myfile.txt. Se desativar os diretórios implícitos, o Cloud Run não consegue listar nem ler esses ficheiros.

Desativar os diretórios implícitos reduz o número de pedidos ao Cloud Storage, o que pode melhorar o desempenho e o custo da sua aplicação. Leia a documentação Ficheiros e diretórios do Cloud Storage FUSE para saber mais.

A seguinte linha de comandos desativa os diretórios implícitos:

gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="implicit-dirs=false" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Substitua o seguinte:

  • SERVICE: o nome do seu serviço.
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.

Monte um diretório específico no seu contentor do Cloud Storage

Por predefinição, o Cloud Run monta todo o contentor do Cloud Storage, o que dá aos serviços do Cloud Run acesso a todo o respetivo conteúdo. Em alguns casos, pode querer montar apenas um diretório específico. Por exemplo, no caso em que o contentor contém um grande número de ficheiros, a montagem de um diretório específico pode melhorar o desempenho.

Também pode implementar esta opção para fins de isolamento, quando precisa que diferentes serviços tenham acesso a diferentes diretórios no contentor de armazenamento.

A seguinte linha de comandos especifica o diretório a montar:

gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="only-dir=images" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Substitua o seguinte:

  • SERVICE: o nome do seu serviço.
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.

Define o volume UID e GID

Use as opções de montagem uid e gid para alterar o identificador do utilizador e o identificador do grupo para o volume. Isto é útil se quiser definir a propriedade do ficheiro para um utilizador ou um grupo específico que corresponda à identidade de um ou vários contentores em execução. Por predefinição, os volumes são propriedade do utilizador root.

A seguinte linha de comandos define uid e gid:

gcloud beta run services update SERVICE \
    --add-volume name=VOLUME_NAME,type=cloud-storage,bucket=BUCKET_NAME,mount-options="uid=UID;gid=GID" \
    --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH

Substitua o seguinte:

  • SERVICE: o nome do seu serviço.
  • VOLUME_NAME: qualquer nome que pretender para o seu volume. O valor VOLUME_NAME é usado para mapear o volume para a montagem do volume.
  • BUCKET_NAME: o nome do seu contentor do Cloud Storage.
  • MOUNT_PATH: o caminho relativo onde está a montar o volume, por exemplo, /cache.

Defina outras opções de montagem

Segue-se a lista completa de todas as opções de montagem suportadas pelo Cloud Run.

Diretório

  • implicit-dirs
  • only-dir
  • rename-dir-limit

Depurar

  • debug_fuse_errors
  • debug_fuse
  • debug_gcs
  • debug-invariants
  • debug_mutex

Cache

  • stat-cache-capacity
  • stat-cache-ttl
  • type-cache-ttl
  • enable-nonexistent-type-cache

Autorizações

  • uid
  • gid
  • file-mode
  • dir-mode

Outras

  • billing-project
  • client-protocol
  • experimental-enable-json-read
  • experimental-opentelemetry-collector-address
  • http-client-timeout
  • limit-bytes-per-sec
  • limit-ops-per-sec
  • max-conns-per-host
  • max-idle-conns-per-host
  • max-retry-sleep
  • -o
  • retry-multiplier
  • sequential-read-size-mb
  • stackdriver-export-interval

Para ver a documentação completa das opções de montagem suportadas, consulte as opções de montagem da linha de comandos do FUSE do Cloud Storage.

Veja as definições de montagens de volumes

Consola

  1. Na Google Cloud consola, aceda à página de serviços do Cloud Run:

    Aceda ao Cloud Run

  2. Na lista de serviços, clique no serviço que lhe interessa para abrir a página Detalhes do serviço.

  3. Clique no separador Volumes.

  4. Localize a definição Volume mounts na página de detalhes dos volumes.

gcloud

  1. Use o seguinte comando:

    gcloud run services describe SERVICE_NAME
  2. Localize a definição Volume mounts na configuração devolvida.

Otimizar o desempenho da largura de banda da rede FUSE do Cloud Storage

Para um melhor desempenho de leitura e escrita, ligue o serviço do Cloud Run a uma rede VPC através da VPC direta e encaminhe todo o tráfego de saída através da sua rede VPC. Pode fazê-lo através de qualquer uma das seguintes opções:

Tempo de arranque do contentor e montagens do FUSE do Cloud Storage

A utilização do Cloud Storage FUSE pode aumentar ligeiramente o tempo de arranque a frio do contentor do Cloud Run, porque o Cloud Run inicia a montagem do volume antes de iniciar os contentores. O contentor só é iniciado se o FUSE do Cloud Storage for montado com êxito.

Tenha em atenção que o FUSE do Cloud Storage monta com êxito um volume apenas depois de estabelecer uma ligação ao Cloud Storage. Quaisquer atrasos na rede podem ter um impacto no tempo de arranque do contentor. Da mesma forma, se a tentativa de ligação falhar, o Cloud Storage FUSE não é montado e o serviço Cloud Run não é iniciado. Além disso, se o Cloud Storage FUSE demorar mais de 30 segundos a ser montado, o serviço do Cloud Run não é iniciado porque o Cloud Run tem um limite de tempo total de 30 segundos para realizar todas as montagens.

Características de desempenho do FUSE do Cloud Storage

Se definir dois volumes, cada um a apontar para um contentor diferente, são iniciados dois processos do Cloud Storage FUSE. As montagens e os processos ocorrem em paralelo.

As operações que usam o Cloud Storage FUSE são afetadas pela largura de banda da rede, porque o Cloud Storage FUSE comunica com o Cloud Storage através da API Cloud Storage. Algumas operações, como listar o conteúdo de um contentor, podem ser lentas se a largura de banda da rede for baixa. Da mesma forma, a leitura de um ficheiro grande pode demorar algum tempo, uma vez que também está limitada pela largura de banda da rede.

Quando escreve num contentor, o Cloud Storage FUSE prepara totalmente o objeto na memória. Isto significa que a gravação de ficheiros grandes é limitada pela quantidade de memória disponível para a instância do contentor (o limite máximo de memória do contentor é de 32 GiB).

A gravação é descarregada para o contentor apenas quando executa um close ou um fsync. Em seguida, o objeto completo é carregado para o contentor. A única exceção à nova carregamento completo de um objeto para o contentor é no caso de um ficheiro com conteúdo anexado quando o ficheiro tem 2 MiB ou mais.

Para obter mais informações, consulte os seguintes recursos:

Limpe e remova volumes e montagens de volumes

Pode limpar todos os volumes e montagens ou remover volumes individuais e montagens de volumes.

Limpe todos os volumes e montagens de volumes

Para limpar todos os volumes e montagens de volumes do seu serviço de contentor único, execute o seguinte comando:

gcloud run services update SERVICE \
    --clear-volumes
    --clear-volume-mounts

Se tiver vários contentores, siga as convenções da CLI de sidecars para limpar volumes e montagens de volumes:

gcloud run services update SERVICE \
    --container=container1 \
    --clear-volumes
    -–clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    -–clear-volume-mounts

Remova volumes individuais e montagens de volumes

Para remover um volume, também tem de remover todas as montagens de volumes que usam esse volume.

Para remover volumes individuais ou montagens de volumes, use os flags remove-volume e 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