Blog

So greifen Sie von Google Cloud Build über den Identity Aware Proxy auf private GKE-Cluster zu

Mark van Holsteijn

Mark van Holsteijn

Aktualisiert Oktober 16, 2025
3 Minuten

In diesem Blogbeitrag zeige ich Ihnen, wie Sie von Google Cloud Build aus über den Identity Aware Proxy auf einen privaten GKE-Cluster zugreifen können. Im vorigen Blogbeitrag habe ich erklärt, wie Sie mit einem einfachen HTTPS-Proxy eine Verbindung zu einem privaten GKE-Cluster über IAP herstellen können. In diesem Blog erkläre ich die Schritte in einer cloudbuild.yaml, um das folgende Setup zu erstellen. Verbinden Sie sich mit privaten GKE-Clustern von Cloud Build aus über Google IAP. den IAP- und GKE-Server-Proxy bereitstellen


Um das IAP und den GKE-Server-Proxy einzusetzen, folgen Sie den Anweisungen in der README von github.com/binxio/simple-iap-proxy. Danach müssen Sie in Ihrem Cloud-Build-Job:

  • die erforderlichen IAP-Parameter abrufen
  • ein Zertifikat erzeugen
  • Starten Sie den HTTPS-Proxy
  • setzen Sie den kubectl-Kontext so, dass er auf den Proxy zeigt, und schon sind Sie bereit für die Bereitstellung!

die erforderlichen IAP-Parameter abrufen

Um eine Verbindung über einen IAP-Proxy herzustellen, benötigen Sie Folgendes:

  • die Ziel-URL, an der der Reverse-Proxy lauscht
  • die Zielgruppe der IAP-Anwendung
  • und das Dienstkonto, das den Zugriff über den IAP-Proxy gewährt. Dieses Beispiel speichert diese Parameter als Google Secret Manager-Geheimnisse. Das folgende Snippet macht diese Werte als Umgebungsvariablen im Cloud Build-Job verfügbar.
availableSecrets:
  secretManager:
    - env: AUDIENCE
      versionName: projects/${PROJECT_ID}/secrets/simple-iap-proxy-audience/versions/latest
    - env: SERVICE_ACCOUNT
      versionName: projects/${PROJECT_ID}/secrets/simple-iap-proxy-service-account/versions/latest
    - env: TARGET_URL
      versionName: projects/${PROJECT_ID}/secrets/simple-iap-proxy-target-url/versions/latest

das Zertifikat generieren

Im ersten Schritt wird ein Zertifikat generiert, das der HTTPS-Proxy verwendet, um sichere Verbindungen herzustellen:

  - id: generate certificate
    name: gcr.io/binx-io-public/simple-iap-proxy:0.5.2
    args: [
      "generate-certificate",
      "--key-file", "server.key",
      "--certificate-file", "server.crt",
      "--dns-name", "simple-iap-proxy"
    ]

Starten Sie den HTTPS-Proxy

Der nächste Schritt startet den HTTPS-Proxy als Hintergrundprozess im Cloud-Build-Auftrag. Wie Sie sehen können, wird der Docker-Container im Netzwerk gestartet. Dadurch wird der Proxy-Endpunkt für die anderen Schritte des Auftrags zugänglich.

  - id: start simple-iap-proxy
    name: gcr.io/cloud-builders/docker
    secretEnv:
      - AUDIENCE
      - TARGET_URL
      - SERVICE_ACCOUNT
    entrypoint: /bin/sh
    args:
      - -c
      - >
        docker run -d --rm -v /workspace:/workspace -w /workspace
        --network cloudbuild --name simple-iap-proxy
        gcr.io/binx-io-public/simple-iap-proxy:0.5.2 client
        --to-gke
        --port 8080
        --target-url $$TARGET_URL
        --iap-audience $$AUDIENCE
        --service-account $$SERVICE_ACCOUNT
        --use-default-credentials
        --key-file server.key
        --certificate-file server.crt &&
        sleep 2

den kubectl-Kontext festlegen

Im letzten Schritt wird der kubectl-Kontext so eingestellt, dass er über den Proxy auf Ihren Cluster verweist:

  - id: get credentials for cluster
    name: gcr.io/cloud-builders/gcloud
    entrypoint: gcloud
    args: [
        "container", "clusters",
        "get-credentials", "${_CLUSTER_NAME}",
        "--internal-ip",
        "--zone", "${_CLUSTER_ZONE}"
    ]

  - id: setup kubectl to use proxy
    name: gcr.io/cloud-builders/kubectl
    entrypoint: /bin/sh
    args:
      - -c
      - context_name=$(kubectl config current-context) &&
        kubectl config set clusters.$context_name.certificate-authority-data "$(base64 < server.crt)" &&
        kubectl config set clusters.$context_name.proxy-url https://simple-iap-proxy:8080 &&
        kubectl cluster-info

bereit!

Das ist alles, was Sie wissen müssen. Sie können kubectl, helm oder jedes andere Tool verwenden, wie Sie wollen!

  - id: deploy to gke
    name: gcr.io/cloud-builders/kubectl
    entrypoint: kubectl
    args:
      - cluster-info

Fazit

Da Google Cloud Build das Starten von Containern im Hintergrund erlaubt, ist es möglich, den simple-iap-proxy-Client zu starten, um über den Identity Aware Proxy eine Verbindung zu einem privaten GKE-Cluster herzustellen.

Verfasst von

Mark van Holsteijn

Mark van Holsteijn is a senior software systems architect at Xebia Cloud-native solutions. He is passionate about removing waste in the software delivery process and keeping things clear and simple.

Contact

Let’s discuss how we can support your journey.