Ich habe einen GKE-Cluster mit folgendem Befehl erstellt:
gcloud container clusters create stage1 \
--enable-ip-alias \
--release-channel stable \
--zone us-central1 \
--node-locations us-central1-a,us-central1-b
Jetzt wollte ich meine PHP-Anwendung mit Cloud SQL verbinden. Um den Zugriff auf Cloud SQL von der im Pod laufenden PHP-Anwendung aus zu autorisieren, habe ich folgende Schritte ausgeführt
- Ein Geheimnis erstellt
kubectl create secret generic stage-cloudsql-secret \
--from-literal=db_host=<YOUR-PRIVATE-IP-ADDRESS>
- Dieses Geheimnis wurde im Abschnitt „Mein Pod im Container“ wie folgt aktualisiert:
env:
- name: DB_HOST
valueFrom:
secretKeyRef:
name: stage-cloudsql-secret
key: db_host
Ich habe die private CloudSQL-IP (zusammen mit dem DB-Namen, Benutzernamen und Passwort) in meiner PHP-Datei (env.php) aktualisiert, mein Docker-Image erstellt und den Pod im GKE-Cluster erstellt. Wenn der Pod erstellt wird, erhalte ich folgenden Fehler vom Container (Containerfehler):
SQLSTATE[HY000] [2002] Operation timed out
Anmerkung 1: Dies ist eine funktionierende Anwendung in einer gehosteten Umgebung und wir migrieren in die Google Cloud
Anmerkung 2: GKE und Cloud SQL befinden sich im selben VPC (Standard)
Notiz 3: IP-Aliasing im Cluster aktiviert
Anmerkung 4: Ich habe einen Container, der beim Start Daten in der Datenbank erstellt
Aktualisierung 1
Ich habe die in der Google Cloud-Dokumentation beschriebenen Schritte befolgt.Verknüpfung
Ich habe per SSH auf den Container zugegriffen und versucht, Cloud SQL über eine private IP zu erreichen (Ping). Aber ich konnte nicht
Aktualisierung 2
Nachdem ich den obigen Links gefolgt bin, habe ich die Art und Weise geändert, wie ich Geheimnisse erstelle (diesmal nur die private IP). Ich habe auch meine env.php wie unten aktualisiert
array (
'table_prefix' => '',
'connection' =>
array (
'default' =>
array (
'host' => getenv('DB_HOST'),
Zuvor „Host“ => [Private IP von Cloud SQL]
Dieses Mal, wenn der Pod erstellt wird, wird folgender Fehler angezeigt
SQLSTATE[HY000] [2002] Keine solche Datei oder kein solches Verzeichnis
Aktualisierung 3
Ich habe alle Schritte noch einmal wiederholt und es funktioniert