É possível se conectar a uma instância do Redis do Cloud Run usando a saída VPC direta ou o acesso VPC sem servidor.
Configuração
Se você já tiver instalado a Google Cloud CLI e criado uma instância do Redis, pule 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 da 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, crie um conector. Use a mesma região e rede VPC 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
Implante o contêiner no Cloud Run.
Se você estiver usando a saída direta da VPC, 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 a instância do Redis está localizada.NETWORK
é o nome da rede VPC autorizada à qual a instância do Redis está anexada.SUBNET
é o nome da sub-rede. A sub-rede precisa ser/26
ou maior. A saída de VPC direta é compatível com 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.