He creado un clúster de GKE con el siguiente comando:
gcloud container clusters create stage1 \
--enable-ip-alias \
--release-channel stable \
--zone us-central1 \
--node-locations us-central1-a,us-central1-b
Ahora quería conectar mi aplicación PHP a la nube SQL. Para autorizar el acceso a la nube SQL desde la aplicación PHP que se ejecuta en el pod, he realizado los siguientes pasos
- Creó un secreto
kubectl create secret generic stage-cloudsql-secret \
--from-literal=db_host=<YOUR-PRIVATE-IP-ADDRESS>
- Actualicé este secreto de mi pod en la sección del contenedor de la siguiente manera:
env:
- name: DB_HOST
valueFrom:
secretKeyRef:
name: stage-cloudsql-secret
key: db_host
Actualicé la IP privada de CloudSQL (junto con el nombre de la base de datos, el nombre de usuario y la contraseña) en mi archivo PHP (env.php), construí mi imagen de la ventana acoplable y creé el pod en el clúster de GKE. Cuando se crea el pod, aparece el siguiente error del contenedor (contenedor fallido):
SQLSTATE[HY000] [2002] Operation timed out
Nota 1: Esta es una aplicación que funciona en un entorno alojado y estamos migrando a la nube de Google.
Nota 2: GKE y Cloud SQL están en la misma VPC (predeterminado)
Nota 3: alias de IP habilitado en el clúster
Nota 4: Tengo un contenedor que crea datos en la base de datos cuando se inicia
Actualización 1
Seguí los pasos mencionados en la documentación de la nube de Google.Enlace
Tengo SSH en el contenedor e intenté acceder (Ping) a la nube SQL usando una IP privada. pero no pude
Actualización 2
Después de seguir los enlaces anteriores, cambié la forma en que creo el secreto (esta vez solo la IP privada). También actualicé mi env.php como se muestra a continuación
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => getenv('DB_HOST'),
Anteriormente 'host' => [IP privada de Cloud SQL]
Esta vez, cuando se crea el pod, muestra el siguiente error
SQLSTATE[HY000] [2002] No existe tal archivo o directorio
Actualización 3
He rehecho todos los pasos nuevamente y está funcionando.