Teste um serviço do Cloud Run localmente

Durante o desenvolvimento, pode executar e testar a imagem do contentor localmente antes da implementação. Pode usar o Cloud Code ou o Docker instalado localmente para executar e testar localmente, incluindo a execução local com acesso aos Google Cloud serviços.

Antes de começar

Se estiver a tentar executar o código localmente pela primeira vez, pode não ter todas as autorizações necessárias para aceder à imagem a partir do registo de contentores suportado que está a usar.

Consulte a documentação do registo de contentores suportado sobre como obter acesso. Pode configurar o Docker para aceder ao Artifact Registry através do auxiliar de credenciais da CLI gcloud:

gcloud auth configure-docker LOCATION-docker.pkg.dev
Substitua LOCATION pelo nome da região do seu repositório de contentores, por exemplo, us-west2.

Teste localmente

Pode testar localmente através do Docker, do Docker com Google Cloud acesso, do emulador do Cloud Code ou da CLI do Google Cloud. Selecione o separador adequado para ver instruções.

Docker

Para testar a imagem de contentor localmente com o Docker:

  1. Use o comando do Docker:

    PORT=8080 && docker run -p 9090:${PORT} -e PORT=${PORT} IMAGE_URL

    Substitua IMAGE_URL por 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 .

    A variável de ambiente PORT especifica a porta que a sua aplicação vai usar para ouvir pedidos HTTP ou HTTPS. Este é um requisito do contrato de tempo de execução do contentor. Neste exemplo, usamos a porta 8080.

  2. Abra http://localhost:9090 no navegador.

Se está a trabalhar com contentores pela primeira vez, recomendamos que reveja o guia de introdução ao Docker. Para saber mais sobre os comandos do Docker, consulte a documentação do Docker.

Docker com acesso ao Google Cloud

Se estiver a usar Google Cloud bibliotecas de cliente para integrar a sua aplicação com os serviços Google Cloud e ainda não tiver protegido esses serviços para controlar o acesso externo, pode configurar o seu contentor local para autenticar com os serviços Google Cloud através das credenciais predefinidas da aplicação.

Para executar localmente:

  1. Consulte as instruções para configurar uma chave de conta de serviço.

  2. As seguintes flags de execução do Docker injetam as credenciais e a configuração do seu sistema local no contentor local:

    1. Use a flag --volume (-v) para injetar o ficheiro de credenciais no contentor (pressupõe que já definiu a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS no seu computador):
      -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro
    2. Use o sinalizador --environment (-e) para definir a variável GOOGLE_APPLICATION_CREDENTIALS no contentor:
      -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json
  3. Opcionalmente, use este comando run do Docker totalmente configurado:

    PORT=8080 && docker run \
    -p 9090:${PORT} \
    -e PORT=${PORT} \
    -e K_SERVICE=dev \
    -e K_CONFIGURATION=dev \
    -e K_REVISION=dev-00001 \
    -e GOOGLE_APPLICATION_CREDENTIALS=/tmp/keys/FILE_NAME.json \
    -v $GOOGLE_APPLICATION_CREDENTIALS:/tmp/keys/FILE_NAME.json:ro \
    IMAGE_URL

    Tenha em atenção que o caminho

    /tmp/keys/FILE_NAME.json
    apresentado no exemplo acima é uma localização razoável para colocar as suas credenciais no contentor.

    No entanto, outras localizações de diretórios também funcionam. O requisito crucial é que a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS tem de corresponder à localização de montagem de ligação no contentor.

    Tenha também em atenção que, com alguns Google Cloud serviços, pode querer usar uma configuração alternativa para isolar a resolução de problemas local do desempenho e dos dados de produção.

Emulador do Cloud Code

O plug-in Cloud Code para o VS Code e os IDEs JetBrains permite-lhe executar e depurar localmente a sua imagem de contentor num emulador do Cloud Run no seu IDE. O emulador permite-lhe configurar um ambiente representativo do seu serviço em execução no Cloud Run.

Pode configurar propriedades como a atribuição de CPU e memória, especificar variáveis de ambiente e definir ligações à base de dados do Cloud SQL.

  1. Instale o Cloud Code para o VS Code ou um IDE da JetBrains.
  2. Siga as instruções para desenvolver e depurar localmente no seu IDE.
  3. VS Code: desenvolvimento e depuração locais
  4. IntelliJ: desenvolvimento e depuração locais

CLI gcloud

A CLI do Google Cloud contém um ambiente de desenvolvimento local para emular o Cloud Run, que pode criar um contentor a partir da origem, executar o contentor na sua máquina local e recriar automaticamente o contentor após alterações ao código fonte.

Para iniciar o ambiente de programação local:

  1. Altere o diretório para o diretório que contém o código-fonte do seu serviço.

  2. Invocar o comando:

    gcloud beta code dev
    Se existir um Dockerfile no diretório local, este é usado para criar o contentor. Se não estiver presente nenhum Dockerfile, o contentor é criado com os buildpacks do Google Cloud.

Para ver o serviço em funcionamento, visite http://localhost:8080/ no seu navegador. Se especificou uma porta personalizada com a opção --local-port, lembre-se de abrir o navegador nessa porta.

Para parar o servidor local:

  • Mac OS e Linux: Control-C
  • Windows: Control-Break

Personalize a configuração do serviço

Pode personalizar a configuração do Cloud Run do serviço em execução localmente através de um ficheiro YAML. O formato YAML é o mesmo que pode ser usado para implementar um serviço do Cloud Run, mas apenas suporta um subconjunto das definições do serviço do Cloud Run. gcloud beta code dev procura e usa qualquer ficheiro que termine em *.service.dev.yaml no diretório atual. Se não forem encontrados ficheiros, o sistema usa qualquer ficheiro que termine com *.service.yaml.

Pode configurar as seguintes definições para o desenvolvimento local:

O campo do contentor image não é necessário para o desenvolvimento local, porque a imagem é criada e fornecida ao serviço quando o comando é executado.

Pode usar o seguinte ficheiro de exemplo service.dev.yaml para o desenvolvimento local:

  apiVersion: serving.knative.dev/v1
  kind: Service
  metadata:
    name: my-service-name
  spec:
    template:
      spec:
        containers:
        - env:
          - name: FOO
            value: bar

Teste com credenciais

Para conceder autorização ao contentor para usar Google Cloud serviços, tem de conceder ao contentor uma credencial de acesso.

  • Para conceder ao contentor acesso a uma credencial através da sua própria conta, inicie sessão através do gcloud e use a flag --application-default-credential:

    gcloud auth application-default login
    gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --application-default-credential

  • Para dar as credenciais da aplicação como uma conta de serviço, use a flag --service-account:

    gcloud beta code dev --dockerfile=PATH_TO_DOCKERFILE --service-account=SERVICE_ACCOUNT_EMAIL

Confirme que o código está a ser executado localmente

Quando testa localmente no Cloud Run, pode confirmar no seu código que o contentor está a ser executado localmente verificando a variável de ambiente K_REVISION, que o Cloud Run disponibiliza a todos os contentores.

Docker

Para confirmar que está a executar o seu código localmente na CLI do Google Cloud, pode tentar consultar a variável de ambiente K_REVISION, mas, como não foi definido, não vai estar presente nenhum valor.

Docker com acesso ao Google Cloud

Se usou os valores exatos da secção acima no passo 3 para confirmar que está a executar o código localmente na CLI do Google Cloud, pode consultar a variável de ambiente K_REVISION e procurar o valor dev-00001 para confirmar que está a ser executado localmente.

Emulador do Cloud Code

Para confirmar que está a executar o seu código localmente no Cloud Code, pode consultar a variável de ambiente K_REVISION e procurar um valor de local para confirmar que está a ser executado localmente.

CLI gcloud

Para confirmar que está a executar o seu código localmente na CLI Google Cloud, pode consultar a variável de ambiente K_REVISION e procurar um valor que comece com dev- para confirmar que está a ser executado localmente.

O que se segue?