É possível se conectar a uma instância do Redis a partir do Cloud Run usando a saída de VPC direta ou Acesso VPC sem servidor.
Configuração
Se você já instalou a Google Cloud CLI e criou um Redis é possível pular essas etapas.
Instale a CLI gcloud e inicialize:
gcloud init
Siga o Guia de início rápido para criar uma instância do Redis. Anote a zona, o endereço IP e a porta da instância do Redis.
Preparar a saída de rede VPC para configuração
Para se conectar à instância do Redis, o serviço do Cloud Run precisa acessar a rede VPC autorizada da instância do Redis. Para ativar esse acesso, você precisa da saída VPC direta ou de um conector de acesso VPC sem servidor. Compare os dois métodos de saída de rede.
Encontre o nome da rede autorizada da instância do Redis executando o seguinte comando:
gcloud redis instances describe INSTANCE_ID --region REGION --format "value(authorizedNetwork)"
Anote o nome da rede.
Se você estiver usando o acesso VPC sem servidor, criar um conector. Use a mesma região e rede VPC que foram usadas pela instância do Redis. Anote o nome do conector.
Exemplo de aplicativo
Este aplicativo de servidor HTTP de amostra estabelece uma conexão com uma instância do Redis a partir de um serviço do Cloud Run.
Clone o repositório da linguagem de programação escolhida e navegue até a pasta que contém o código de exemplo:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples
cd golang-samples/memorystore/redis
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples
cd nodejs-docs-samples/memorystore/redis
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples
cd python-docs-samples/memorystore/redis
Este aplicativo de amostra incrementa um contador do Redis sempre que o endpoint
/
é acessado.
Go
Este aplicativo usa o cliente
github.com/gomodule/redigo/redis
. Instale-o executando o comando a seguir:
go get github.com/gomodule/redigo/redis
Node.js
Este aplicativo usa o módulo redis
(em inglês).
Python
Este aplicativo usa o Flask
para veiculação na Web e o pacote redis-py
(links em inglês) para se comunicar com a instância do Redis.
Como implantar o aplicativo no Cloud Run
Para implantar o aplicativo:
Copie
Dockerfile
no diretório de origem:cp cloud_run_deployment/Dockerfile .
Crie uma imagem de contêiner usando o Cloud Build com o seguinte comando:
gcloud builds submit --tag gcr.io/PROJECT_ID/visit-count
Implantar o contêiner no Cloud Run.
Se você estiver usando a saída de VPC direta, execute o seguinte comando:
gcloud run deploy \ --image gcr.io/PROJECT_ID/visit-count \ --platform managed \ --allow-unauthenticated \ --region REGION \ --network NETWORK \ --subnet SUBNET \ --set-env-vars REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
em que:
PROJECT_ID
é o código do seu projeto do Google Cloud;REGION
é a região em que sua instância do Redis está localizado.NETWORK
é o nome do bloco Rede VPC à qual sua instância do Redis está anexada.SUBNET
é o nome da sub-rede. A sub-rede precisa ter/26
ou mais. A saída de VPC direta oferece suporte a intervalos IPv4 RFC 1918, RFC 6598, e Classe E.REDIS_IP
eREDIS_PORT
são o endereço IP e o número da porta da instância do Redis.
Se você estiver usando um conector de acesso VPC sem servidor, execute o seguinte comando:
gcloud run deploy \ --image gcr.io/PROJECT_ID/visit-count \ --platform managed \ --allow-unauthenticated \ --region REGION \ --vpc-connector CONNECTOR_NAME \ --set-env-vars REDISHOST=REDIS_IP,REDISPORT=REDIS_PORT
em que:
PROJECT_ID
é o código do seu projeto do Google Cloud;REGION
é a região em que o conector de acesso VPC sem servidor e a instância do Redis estão localizados;CONNECTOR_NAME
é o nome do conector.REDIS_IP
eREDIS_PORT
são o endereço IP e o número da porta da instância do Redis.
Após a conclusão da implantação, a linha de comando exibirá o URL do serviço do Cloud Run. Acesse esse URL em um navegador da Web (ou use uma ferramenta como curl
) e veja a contagem da instância do Redis aumentar a cada vez que o serviço é acessado.