Tenho um cluster GKE criado com o seguinte comando:
gcloud container clusters create stage1 \
--enable-ip-alias \
--release-channel stable \
--zone us-central1 \
--node-locations us-central1-a,us-central1-b
Agora eu queria conectar meu aplicativo PHP ao Cloud SQL. Para autorizar o acesso ao Cloud SQL a partir do aplicativo PHP em execução no pod, executei as seguintes etapas
- Criou um segredo
kubectl create secret generic stage-cloudsql-secret \
--from-literal=db_host=<YOUR-PRIVATE-IP-ADDRESS>
- Atualizei este segredo em meu pod na seção do contêiner da seguinte maneira:
env:
- name: DB_HOST
valueFrom:
secretKeyRef:
name: stage-cloudsql-secret
key: db_host
Atualizei o IP privado do CloudSQL (junto com o nome do banco de dados, nome de usuário e senha) em meu arquivo PHP (env.php), construí minha imagem docker e criei o pod no cluster do GKE. Quando o pod é criado, recebo o seguinte erro do contêiner (contêiner com falha):
SQLSTATE[HY000] [2002] Operation timed out
Nota 1: Este aplicativo está funcionando em ambiente hospedado e estamos migrando para a nuvem do Google
Nota 2: GKE e Cloud SQL estão na mesma VPC (padrão)
Nota 3: Aliasing de IP ativado no cluster
Nota 4: Eu tenho um contêiner que cria dados no banco de dados quando iniciado
Atualização 1
Segui as etapas mencionadas na documentação do Google Cloud.Link
Eu tenho SSH no contêiner e tentei acessar (Ping) no Cloud SQL usando IP privado. Mas eu não consegui
Atualização 2
Depois de seguir os links acima, mudei a forma como crio o segredo (desta vez apenas o IP privado). Também atualizei meu env.php conforme abaixo
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => getenv('DB_HOST'),
Anteriormente 'host' => [IP privado do Cloud SQL]
Desta vez, quando o pod é criado, ele mostra o seguinte erro
SQLSTATE[HY000] [2002] Arquivo ou diretório inexistente
Atualização 3
Refiz todos os passos novamente e está funcionando