Esta página descreve as práticas recomendadas para executar tarefas agendadas do Cloud Run para projetos quando usar um perímetro dos VPC Service Controls. Google Cloud
O Cloud Scheduler não pode acionar trabalhos dentro de um perímetro do VPC Service Controls. Tem de seguir passos adicionais para configurar tarefas agendadas. Em particular, tem de encaminhar o pedido através de outro componente. Recomendamos que use um serviço do Cloud Run como proxy.
O diagrama seguinte mostra a arquitetura:
Antes de começar
Configure o Cloud Run para o VPC Service Controls. Esta é uma configuração única que todas as tarefas agendadas subsequentes usam. Também tem de fazer alguma configuração por serviço mais tarde, que é descrita nas instruções que se seguem.
Configure uma tarefa agendada
Para configurar uma tarefa agendada dentro de um perímetro dos VPC Service Controls:
Crie um trabalho e anote o nome do trabalho.
Conclua a configuração do VPC Service Controls específica do Cloud Run por tarefa. Tem de associar o seu trabalho a uma rede VPC e encaminhar todo o tráfego através dessa rede.
Se não tiver uma tarefa do Cloud Run existente que queira acionar, teste a funcionalidade implementando o contentor de tarefas do Cloud Run de exemplo
us-docker.pkg.dev/cloudrun/container/job:latest
no Cloud Run.Implemente o serviço do Cloud Run que funciona como um proxy. Consulte o Serviço de proxy de exemplo para ver um serviço de exemplo que aciona uma tarefa do Cloud Run em resposta a um pedido. Após a implementação, a consola apresenta o URL do serviço junto ao texto URL:.
Conclua a configuração dos VPC Service Controls específicos do Cloud Run por serviço. Tem de ligar o serviço a uma rede VPC e encaminhar todo o tráfego através dessa rede. Certifique-se de que define a entrada como Interna.
Crie uma tarefa cron do Cloud Scheduler que aciona o serviço de proxy do Cloud Run:
Clique em Criar tarefa.
Introduza os valores pretendidos para os campos Nome, Região, Frequência e Fuso horário. Para mais informações, consulte o artigo Crie uma tarefa cron com o Cloud Scheduler.
Clique em Configurar a execução.
Selecione o tipo de destino HTTP.
Para URL, introduza o URL do serviço proxy do Cloud Run que anotou no passo anterior.
Para o método HTTP, selecione Get.
Para o cabeçalho Auth, selecione Adicionar token OIDC
Para a conta de serviço, selecione Conta de serviço predefinida do Compute Engine ou uma conta de serviço personalizada que tenha a autorização
run.routes.invoke
ou a funçãoCloud Run Invoker
.Para o público-alvo, introduza o mesmo URL do serviço proxy do Cloud Run que anotou no passo anterior.
Deixe todos os outros campos em branco.
Clique em Criar para criar a tarefa cron do Cloud Scheduler.
Serviço de proxy de exemplo
A secção seguinte mostra um exemplo de um serviço Python que encaminha pedidos e aciona a tarefa do Cloud Run.
Crie um ficheiro denominado
main.py
e cole o seguinte código no mesmo. Atualize o nome da tarefa, a região e o ID do projeto para os valores de que precisa.import os from flask import Flask app = Flask(__name__) # pip install google-cloud-run from google.cloud import run_v2 @app.route('/') def hello(): client = run_v2.JobsClient() # UPDATE TO YOUR JOB NAME, REGION, AND PROJECT ID job_name = 'projects/YOUR_PROJECT_ID/locations/YOUR_JOB_REGION/jobs/YOUR_JOB_NAME' print("Triggering job...") request = run_v2.RunJobRequest(name=job_name) operation = client.run_job(request=request) response = operation.result() print(response) return "Done!" if __name__ == '__main__': app.run(debug=True, host="0.0.0.0", port=int(os.environ.get("PORT", 8080)))
Crie um ficheiro com o nome
requirements.txt
e cole o seguinte código no mesmo:google-cloud-run flask
Crie um Dockerfile com o seguinte conteúdo:
FROM python:3.9-slim-buster WORKDIR /app COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python3", "main.py"]
Crie e implemente o contentor. As implementações baseadas na origem podem ser difíceis de configurar num ambiente do VPC Service Controls devido à necessidade de configurar trabalhadores personalizados do Cloud Build. Se tiver um pipeline de compilação e implementação existente, use-o para compilar o código fonte num contentor e implementar o contentor como um serviço do Cloud Run.
Se não tiver uma configuração de compilação e implementação existente, compile o contentor localmente e envie-o para o Artifact Registry, por exemplo:
PROJECT_ID=YOUR_PROJECT_ID REGION=YOUR_REGION AR_REPO=YOUR_AR_REPO CLOUD_RUN_SERVICE=job-runner-service docker build -t $CLOUD_RUN_SERVICE . docker tag $CLOUD_RUN_SERVICE $REGION_ID-docker.pkg.dev/$PROJECT_ID/AR_REPO/$CLOUD_RUN_SERVICE docker push $REGION_ID-docker.pkg.dev/$PROJECT_ID/AR_REPO/$CLOUD_RUN_SERVICE
Tome nota do URL do serviço devolvido pelo comando deploy.
O que se segue?
Depois de usar esta funcionalidade, saiba mais lendo o seguinte:
- Veja os registos de tarefas
- Monitorize o desempenho das tarefas
- Crie uma tarefa
- Execute um trabalho
- Faça a gestão de serviços