Cloud SQL Proxy in GKE – Ein vollständiger Leitfaden

Cloud SQL Proxy in GKE: Eine umfassende Anleitung

Der Cloud SQL Proxy ist ein essenzieller Dienst, der eine gesicherte Kommunikationsbrücke zwischen Ihren Workloads in Google Kubernetes Engine (GKE) und Ihren Cloud SQL-Datenbanken herstellt. Er offeriert dabei eine Reihe von Vorteilen:

  • Unkomplizierte Konnektivität: Der Proxy gestattet es GKE-Pods, über eine lokale TCP-Verbindung mit Cloud SQL-Datenbanken zu interagieren, ohne dass an den Pods oder Datenbanken tiefgreifende Anpassungen notwendig sind.
  • Erhöhte Sicherheit: Er fungiert als sicheres Gateway, das den Datenverkehr zwischen Pods und Datenbanken verschlüsselt und den Zugriff auf autorisierte Pods beschränkt, was eine zusätzliche Sicherheitsebene darstellt.
  • Automatische Skalierung: Der Proxy passt sich dynamisch an die wachsende Zahl von Pods an, die auf Cloud SQL-Datenbanken zugreifen.
  • Leichte Verwaltung: Die Administration des Proxys ist über die Google Cloud Console oder durch kubectl-Befehle realisierbar, was die Einsatzbereitschaft und Wartung vereinfacht.

Einrichtung des Cloud SQL Proxys

Vorbedingungen

Für die Installation und Nutzung des Cloud SQL Proxys werden folgende Voraussetzungen benötigt:

  • Ein funktionsfähiger GKE-Cluster
  • Eine aktive Cloud SQL-Datenbank
  • Die Cloud SQL Proxy-Erweiterung für GKE

Installationsschritte

Die Einrichtung des Cloud SQL Proxys erfolgt in folgenden Schritten:

  1. Erweiterung einspielen: Integrieren Sie die Cloud SQL Proxy-Erweiterung via Google Cloud Console oder kubectl.
  2. 
                kubectl apply -f https://gke-deploy.cloud.google.com/release/latest/crds.yaml
    kubectl apply -f https://gke-deploy.cloud.google.com/release/latest/kube-deploy.yaml
  3. Proxy aktivieren: Stellen Sie den Proxy in Ihrem GKE-Cluster bereit.
  4. 
                kubectl apply -f <(cat <<EOF
                apiVersion: "sql.cnrm.cloud.google.com/v1beta1"
                kind: SQLProxy
                metadata:
                  name: <proxy-name>
                  namespace: <namespace>
                spec:
                  mysql:
                    connectionPool: 50
                    secret:
                      name: <secret-name>
                EOF
                )
                
  5. Geheimnis erstellen: Legen Sie ein Geheimnis an, welches die Zugangsdaten für die Cloud SQL-Datenbank enthält.
  6. 
                kubectl create secret generic <secret-name> --namespace <namespace> \
                  --from-literal=username=<db-user> \
                  --from-literal=password=<db-password>
                
  7. Datenbankzugriff gewähren: Autorisieren Sie das Proxy-Dienstkonto für den Zugriff auf die Cloud SQL-Datenbank.
  8. 
                gcloud sql databases patch <db-name> \
                  --host=<db-host> \
                  --user=<db-user> \
                  --database=<db-name> \
                  --add-authorized-network=10.0.0.0/8
                

Konfigurationsoptionen

Der Proxy ist konfigurierbar und bietet folgende Optionen:

  • Verbindungspool: Definiert die maximale Anzahl gleichzeitiger Verbindungen pro Datenbankverbindung.
  • Geheimnis: Referenziert das Kubernetes Secret, das die Anmeldeinformationen für die Cloud SQL-Datenbank beinhaltet.
  • Anmeldeinformationen: Legt fest, welche Credentials verwendet werden, um die Verbindung zur Datenbank herzustellen.
  • IP-Whitelist: Definiert eine Liste von IP-Adressen, die auf den Proxy zugreifen dürfen.

Verwendung des Proxys

Um den Cloud SQL Proxy zu nutzen, erstellen Sie einen Pod, der die Cloud SQL Proxy-Erweiterung verwendet:


        apiVersion: apps/v1
        kind: Deployment
        metadata:
          name: <deployment-name>
          namespace: <namespace>
        spec:
          replicas: 1
          selector:
            matchLabels:
              app: <app-name>
          template:
            metadata:
              labels:
                app: <app-name>
            spec:
              containers:
              - name: <container-name>
                image: <image-name>
                args: ["<db-connection-string>"]
                env:
                - name: PORT
                  value: "8080"
                - name: DB_USER
                  value: <db-user>
                - name: DB_PASSWORD
                  valueFrom:
                    secretKeyRef:
                      name: <secret-name>
                      key: password
                readinessProbe:
                  exec:
                    command: ["sh", "-c", "nc -vz 127.0.0.1 $PORT"]
                  initialDelaySeconds: 1
                  periodSeconds: 10
                startupProbe:
                  exec:
                    command: ["sh", "-c", "nc -vz 127.0.0.1 $PORT"]
                  periodSeconds: 1
              extensions:
              - name: cloudsqlproxy
                definition: sql.cnrm.cloud.google.com/v1beta1~SQLProxy
                config:
                  secret: <proxy-secret-name>
    

Vorteile des Einsatzes

Der Einsatz des Cloud SQL Proxys in GKE bringt folgende Vorteile:

  • Vereinfachte Konnektivität: Ermöglicht eine einfache Verbindung zwischen GKE-Pods und Cloud SQL-Datenbanken ohne zusätzliche Konfigurationen.
  • Verbesserte Sicherheit: Bietet zusätzlichen Schutz durch Verschlüsselung und Zugriffsbeschränkungen.
  • Automatische Skalierbarkeit: Passt sich automatisch an steigende Anforderungen an.
  • Einfache Verwaltung: Ermöglicht eine unkomplizierte Bereitstellung und Verwaltung über die Google Cloud Console oder kubectl.

Fazit

Der Cloud SQL Proxy erweist sich als wertvolles Werkzeug, das eine sichere und skalierbare Verbindung zwischen GKE-Workloads und Cloud SQL-Datenbanken ermöglicht. Er bietet eine effiziente und verlässliche Methode, um Cloud-Datenbanken in einer Kubernetes-Umgebung zu verwalten, indem er einen einfachen und sicheren Zugang für Pods zu den Datenbanken bereitstellt.

Häufig gestellte Fragen

  1. Was genau ist der Cloud SQL Proxy?
    Der Cloud SQL Proxy ist ein Dienst, der sichere Verbindungen zwischen GKE-Workloads und Cloud SQL-Datenbanken ermöglicht.
  2. Welche Vorteile bietet der Cloud SQL Proxy?
    Er vereinfacht Verbindungen, erhöht die Sicherheit, ist skalierbar und erleichtert die Verwaltung.
  3. Wie wird der Cloud SQL Proxy installiert?
    Installieren Sie die Cloud SQL Proxy-Erweiterung für GKE und deployen Sie den Proxy in Ihrem Cluster.
  4. Wie konfiguriert man den Cloud SQL Proxy?
    Die Konfiguration erfolgt über den Verbindungspool, ein Geheimnis, die Anmeldeinformationen und eine IP-Whitelist.
  5. Wie verwendet man den Cloud SQL Proxy?
    Erstellen Sie einen Pod, der die Cloud SQL Proxy-Erweiterung nutzt, um eine Datenbankverbindung herzustellen.
  6. Welche Sicherheitsvorkehrungen werden durch den Cloud SQL Proxy getroffen?
    Der Datenverkehr wird verschlüsselt und der Zugriff auf autorisierte Pods beschränkt.
  7. Ist der Cloud SQL Proxy skalierbar?
    Ja, er passt sich automatisch an die steigende Zahl von Pods an, die auf die Datenbanken zugreifen.
  8. Wie wird der Cloud SQL Proxy verwaltet?
    Die Verwaltung erfolgt über die Google Cloud Console oder über kubectl-Befehle.