BLEIBEN SIE INFORMIERT
mit den ORDIX Newslettern!

Melden Sie sich für unsere Newsletter an und erhalten Sie exklusive Updates zu IT-Trends, spannenden Seminaren und Neuigkeiten der ORIDX AG.

BLEIBEN SIE INFORMIERT
mit den ORDIX Newslettern!

Melden Sie sich für unsere Newsletter an und erhalten Sie exklusive Updates zu IT-Trends, spannenden Seminaren und Neuigkeiten der ORDIX AG.

3 Minuten Lesezeit (623 Worte)

Apache Guacamole serverless betreiben – mit Cloud Run zur skalierbaren Remote-Desktop-Lösung

Sicherer Remote-Zugriff ist für viele Unternehmen essenziell – sei es für den Support, das Homeoffice oder den Zugriff auf virtuelle Maschinen in der Cloud. Klassische Lösungen wie VPNs oder RDP-Clients bringen jedoch oft Komplexität, Wartungsaufwand und Sicherheitsrisiken mit sich. Apache Guacamole bietet hier einen modernen Ansatz: Die clientlose Remote-Desktop-Gateway-Software ermöglicht den Zugriff auf entfernte Systeme direkt über den Webbrowser – ganz ohne zusätzliche Software auf dem Client.

Um Guacamole zu betreiben, wird zwischen zwei zentralen Bereitstellungsmethoden unterschieden: Der manuellen Installation direkt auf einem Linux-Server und dem Betreiben von Containern. Erstere Methode ist komplizierter, erfordert einen eigenen Server und lässt sich schlecht skalieren.

Für den Containerbetrieb gibt es mehrere Methoden zur Bereitstellung. Hierbei gibt es drei zentrale Optionen: Der Betrieb mit Docker oder Docker Compose, der Betrieb mit Kubernetes und das Deployment auf Cloud-Plattformen.

Für alle containerisierten Apache-Guacamole-Instanzen sind jedoch diese drei Kernkomponenten gleich:

  1. Guacamole-Web: Die Webanwendung ist die Benutzeroberfläche von Guacamole, die im Browser läuft. Sie ermöglicht den Zugriff auf entfernte Systeme und verwaltet Benutzer:innen und Verbindungen.
  2. Guacamole-Server (guacd): guacd ist der Dienst, der die eigentlichen Remote-Verbindungen (z. B. RDP, VNC, SSH) herstellt und die Kommunikation zwischen Browser und Zielsystem übernimmt.
  3. Die Datenbank: Die Datenbank speichert Benutzer:innen, Verbindungen und Berechtigungen. Sie ist zentral für die Verwaltung und den Betrieb in produktiven Umgebungen.

Mit einer einfachen Docker-/Docker Compose-Anwendung werden schnell die Grenzen der maximalen Verbindungen erreicht und die Container sind überlastet. Kubernetes ist wiederum sehr komplex und teuer.

Die Google Cloud Platform (GCP) bietet für genau diesen Anwendungsfall ein optimales Tool, um kostengünstig zu skalieren und nur für die genutzten Ressourcen zu bezahlen: Cloud Run. Cloud Run skaliert auf Basis der eingehenden Anfragen die Container entweder hoch oder runter. Ohne eingehende Anfragen skaliert Cloud Run die Container sogar auf 0, es entstehen also auch keine Kosten.

Die Datenbank sollte jedoch ausgelagert werden, da sie persistente Daten enthält. Die GCP bietet dafür Cloud SQL an. In dem Cloud Run Service sollte dementsprechend Guacamole-Web, guacd und der Proxy, der zur Verbindung zur Datenbank benötigt wird, laufen.

Seit Mai 2023 lassen sich in einem Cloud-Run-Dienst mehrere Container gemeinsam betreiben – sogenannte Sidecar-Container.

Dabei handelt es sich um zusätzliche Container, die zusammen mit der Hauptanwendung laufen und unterstützende Aufgaben übernehmen, wie z. B. die Verbindung zur Datenbank oder das Logging. Diese Möglichkeit ist der Schlüssel, um Guacamole effizient in Cloud Run zu betreiben.

Folgende Grafik zeigt den Aufbau der Applikation: 

Wie so eine vereinfachte Cloud-Run-Definition aussehen kann, zeigt die folgende service.yaml

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: guacamole-multi
spec:
  template:
    metadata:
      annotations:
        run.e10f949fcaacdb195442bfb5062d59de-gdprlock/container-dependencies: '{"guacamole": ["guacd", "cloudsql-proxy"]}'
    spec:
      serviceAccountName: sa-name@proj-name-dxs9.iam.gserviceaccount.com
      containers:
      - name: guacamole
        image: guacamole/guacamole:1.5.5
        ports:
        - containerPort: 8080
        env:
        - name: GUACD_HOSTNAME
          value: "localhost"
        - name: GUACD_PORT
          value: "4822"
        - name: MYSQL_HOSTNAME
          value: "localhost"
        - name: MYSQL_PORT
          value: "3306"
        - name: MYSQL_DATABASE
          value: "guacamole_sql"
        - name: MYSQL_USER
          value: "mysql-user"
        - name: MYSQL_PASSWORD
          value: mysql-password
      - name: guacd
        image: guacamole/guacd:1.5.5
      - name: cloudsql-proxy
        image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2
        args:
        - "--address=0.0.0.0"
        - "--port=3306"
        - "--credentials-file=/secrets/cloudsql/sa-key.json"
        - "proj-name:region:cloud-sql-instance"
        volumeMounts:
        - name: cloudsql-sa-key
          mountPath: /secrets/cloudsql
          readOnly: true
      volumes:
      - name: cloudsql-sa-key
        secret:
          secretName: service-account-key-json
          items:
          - key: latest
            path: sa-key.json
 

Der serverlose Betrieb von Apache Guacamole mit Cloud Run zeigt, wie klassische Anwendungen durch moderne Cloud-Technologien neu gedacht werden können. Die Lösung ist nicht nur technisch interessant, sondern auch wirtschaftlich sinnvoll – besonders für Unternehmen mit dynamischen Anforderungen.

In Zukunft könnten weitere Integrationen wie Identity-Aware Proxy (IAP) oder automatisiertes Monitoring die Lösung noch robuster und sicherer machen. Auch eine CI/CD-Pipeline für automatisierte Deployments mit Ansible oder Terraform ist denkbar, um die Bereitstellung weiter zu optimieren. 

Seminarempfehlungen

Ähnliche Beiträge

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Dienstag, 01. Juli 2025

Sicherheitscode (Captcha)