Kf-Kurzanleitung

In dieser Kurzanleitung richten Sie einen GKE-Cluster ein, installieren Kf und dessen Abhängigkeiten und stellen eine Cloud Foundry-Beispielanwendung bereit.

Hinweise

Übersicht

  • Ihr GKE-Cluster muss die folgenden Anforderungen erfüllen:

    • Der Cluster sollte Kf zugeordnet werden. Diese Einstellung ist optional, wird aber empfohlen. Wir empfehlen, nur Kf und dessen Abhängigkeiten zu installieren, damit die Kompatibilitätsmatrix erhalten bleibt.

    • Mindestens vier Knoten. Informationen zum Hinzufügen von Knoten finden Sie unter Größe eines Clusters anpassen.

    • Der minimale Maschinentyp mit mindestens vier vCPUs, z. B. e2-standard-4. Wenn der Maschinentyp für Ihren Cluster nicht mindestens vier vCPUs hat, ändern Sie den Maschinentyp, wie unter Arbeitslasten zu anderen Maschinentypen migrieren beschrieben.

    • Es wird empfohlen, den Cluster in einer Release-Version zu registrieren. Dies ist jedoch optional. Folgen Sie der Anleitung unter Vorhandenen Cluster in einer Release-Version registrieren, wenn Sie eine statische GKE-Version haben.

    • Workload Identity ist aktiviert.

    • Artifact Registry ist aktiviert.

    • Cloud Service Mesh (ASM).

    • Tekton ist installiert. Sehen Sie sich die Abhängigkeitsmatrix für die Version an.

    • Ein Google-Dienstkonto mit der folgenden IAM-Richtlinie (Anleitung zur Erstellung siehe unten):

      • roles/iam.serviceAccountAdmin
      • serviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller] (für Mitglied serviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller])

Der Abschnitt Bereinigen enthält eine Anleitung zum Löschen des Clusters.

Unterstützung für Compute Engine aktivieren

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Aktivieren Sie die Compute Engine API.

    API aktivieren

GKE aktivieren und konfigurieren

Führen Sie die folgenden Aufgaben aus, bevor Sie beginnen:

  • Aktivieren Sie die Google Kubernetes Engine API.
  • Google Kubernetes Engine API aktivieren
  • Wenn Sie die Google Cloud CLI für diese Aufgabe verwenden möchten, müssen Sie die gcloud CLI installieren und dann initialisieren. Wenn Sie die gcloud CLI bereits installiert haben, rufen Sie die neueste Version mit gcloud components update ab.

Neuen GKE-Cluster erstellen und vorbereiten

Umgebungsvariablen einrichten

Linux

export PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export COMPUTE_ZONE=us-central1-a
export COMPUTE_REGION=us-central1
export CLUSTER_LOCATION=${COMPUTE_ZONE}
export NODE_COUNT=4
export MACHINE_TYPE=e2-standard-4
export NETWORK=default
export KF_VERSION=v2.2.0
export TEKTON_VERSION=v0.19.0

Windows Powershell

Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_NAME -Value kf-cluster
Set-Variable -Name COMPUTE_ZONE -Value us-central1-a
Set-Variable -Name COMPUTE_REGION -Value us-central1
Set-Variable -Name CLUSTER_LOCATION -Value $COMPUTE_ZONE
Set-Variable -Name NODE_COUNT -Value 4
Set-Variable -Name MACHINE_TYPE -Value e2-standard-4
Set-Variable -Name NETWORK -Value default
Set-Variable -Name KF_VERSION -Value v2.2.0
Set-Variable -Name TEKTON_VERSION -Value v0.19.0

Dienstkonto einrichten

Erstellen Sie ein GCP-Dienstkonto, das über Workload Identity mit einem Kubernetes-Dienstkonto verknüpft wird. Dadurch müssen Sie keinen Dienstkontoschlüssel erstellen und einfügen.

  1. Erstellen Sie das von Kf verwendete Dienstkonto.

    gcloud iam service-accounts create ${CLUSTER_NAME}-sa \
      --project=${CLUSTER_PROJECT_ID} \
      --description="GSA for Kf ${CLUSTER_NAME}" \
      --display-name="${CLUSTER_NAME}"
  2. Legen Sie fest, dass das Dienstkonto seine eigene Richtlinie ändern darf. Der Kf-Controller verwendet diese Option, um der Richtlinie neue (Name)spaces hinzuzufügen und die Wiederverwendung von Workload Identity zuzulassen.

    gcloud iam service-accounts add-iam-policy-binding ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com \
      --project=${CLUSTER_PROJECT_ID} \
      --role="roles/iam.serviceAccountAdmin" \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
  3. Weisen Sie den Monitoring-Messwerten eine Rolle für den Schreibzugriff auf Cloud Monitoring zu.

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  4. Weisen Sie Logging eine Rolle für den Schreibzugriff auf Cloud Logging zu.

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"

GKE-Cluster erstellen

gcloud container clusters create ${CLUSTER_NAME} \
  --project=${CLUSTER_PROJECT_ID} \
  --zone=${CLUSTER_LOCATION} \
  --num-nodes=${NODE_COUNT} \
  --machine-type=${MACHINE_TYPE} \
  --network=${NETWORK} \
  --addons=HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy \
  --enable-stackdriver-kubernetes \
  --enable-ip-alias \
  --enable-network-policy \
  --enable-autorepair \
  --enable-autoupgrade \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --release-channel=regular \
  --workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \
  --service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"

Firewallregeln festlegen

Für die Kf-Datei sind einige Firewallports erforderlich Der Masterknoten muss mit Pods über die Ports 80, 443, 8080, 8443 und 6443 kommunizieren können.

Workload Identity aktivieren

Nachdem Sie nun ein Dienstkonto und einen GKE-Cluster haben, verknüpfen Sie den Identitäts-Namespace des Clusters mit dem Cluster.

gcloud iam service-accounts add-iam-policy-binding \
  "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
  --project=${CLUSTER_PROJECT_ID} \
  --role="roles/iam.workloadIdentityUser" \
  --member="serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]"

GKE-Zielcluster

Konfigurieren Sie den Zugriff auf die kubectl-Befehlszeile mit dem folgenden Befehl:

gcloud container clusters get-credentials ${CLUSTER_NAME} \
    --project=${CLUSTER_PROJECT_ID} \
    --zone=${CLUSTER_LOCATION}

Artifact Registry-Repository erstellen

  1. Erstellen Sie eine Artifact Registry für Container-Images, die gespeichert werden sollen.

    gcloud artifacts repositories create ${CLUSTER_NAME} \
      --repository-format=docker \
      --location=${COMPUTE_REGION}
  2. Gewähren Sie dem Dienstkonto die Berechtigung für das Artifact Registry-Repository.

    gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \
      --location=${COMPUTE_REGION} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role='roles/artifactregistry.writer'
  3. Konfigurieren Sie die lokale Authentifizierung.

    gcloud auth configure-docker ${COMPUTE_REGION}-docker.pkg.dev

Softwareabhängigkeiten auf dem Cluster installieren

  1. Service Mesh installieren.

  2. Installieren Sie Tekton:

    kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"

Kf installieren

  1. Unter GKE-Cluster für Kf erstellen und vorbereiten finden Sie Informationen dazu, wie Sie einen Cluster zur Ausführung von Kf erstellen.

  2. Wählen Sie den gewünschten Kf-Release aus und notieren Sie ihn sich. Auf der Seite Kf-Downloads finden Sie die verfügbaren Versionen.

  3. Installieren Sie die Befehlszeile:

    Linux

    Dadurch wird kf für alle Nutzer im System installiert. Folgen Sie der Anleitung auf dem Cloud Shell-Tab, um Kf nur für die eigene Nutzung zu installieren.

    gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Mac

    Dadurch wird kf für alle Nutzer im System installiert.

    gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-darwin /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Cloud Shell

    Dadurch wird kf auf Ihrer Cloud Shell-Instanz installiert, wenn Sie bash verwenden. Für andere Shells muss die Anleitung möglicherweise geändert werden.

    mkdir -p ~/bin
    gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux ~/bin/kf
    chmod a+x ~/bin/kf
    echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
    source ~/.bashrc

    Windows

    Dadurch wird kf in das aktuelle Verzeichnis heruntergeladen. Fügen Sie es dem Pfad hinzu, wenn Sie es von außerhalb des aktuellen Verzeichnisses aufrufen möchten.

    gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exe
  4. Installieren Sie die Serverkomponenten:

    Linux und Mac

    Dadurch wird kf.yaml in das aktuelle Verzeichnis heruntergeladen.

    gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yaml
    kubectl apply -f /tmp/kf.yaml

    Windows

    Dadurch wird kf.yaml in das aktuelle Verzeichnis heruntergeladen.

    gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yaml
    kubectl apply -f kf.yaml
  5. Richten Sie Secrets ein:

    export WI_ANNOTATION=iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
    
    kubectl annotate serviceaccount controller ${WI_ANNOTATION} \
    --namespace kf \
    --overwrite
    
    echo "{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"config-secrets\", \"namespace\":\"kf\"},\"data\":{\"wi.googleServiceAccount\":\"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com\"}}" | kubectl apply -f -
  6. Richten Sie die Kf-Standardeinstellungen ein. Diese Werte können später geändert werden. Im folgenden Beispiel werden Domainvorlagen mit einem Platzhalter-DNS-Anbieter verwendet, um für jeden Bereich einen eigenen Domainnamen bereitzustellen:

    export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
    export DOMAIN='$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io'
    
    kubectl patch configmaps config-defaults \
    -n=kf \
    -p="{\"data\":{\"spaceContainerRegistry\":\"${CONTAINER_REGISTRY}\",\"spaceClusterDomains\":\"- domain: ${DOMAIN}\"}}"
  7. Prüfen Sie die Installation:

    kf doctor --retries 10

Anwendung per Push übertragen

Voraussetzungen

Für diesen Abschnitt ist Folgendes erforderlich:

  1. Kf ist in einem kompatiblen GKE-Cluster installiert. Eine Anleitung finden Sie unter Kf installieren.
  2. Ein .kubeconfig-Objekt für den Kf-Cluster. Wenn Sie den Cluster gemäß den Anweisungen in diesem Dokument erstellt haben, ist dies bereits geschehen. Sie können die Konfiguration mit gcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION} ausdrücklich generieren lassen.
  3. Die kf-Befehlszeile ist installiert und befindet sich in Ihrem Pfad. Eine Anleitung finden Sie unter Kf installieren.
  4. Die git-Befehlszeile ist installiert und befindet sich in Ihrem Pfad.

Bereich vorbereiten

  1. Erstellen Sie einen neuen Bereich:

    kf create-space test-space
  2. Steuern Sie den Bereich an:

    kf target -s test-space

Cloud Foundry-Testanwendung per Push übertragen

  1. Klonen Sie das test-app-Repository:

    git clone https://github.com/cloudfoundry-samples/test-app go-test-app
    cd go-test-app
  2. Übertragen Sie die Anwendung per Push:

    kf push test-app
  3. Ermitteln Sie die URL der Anwendung:

    1. Verwenden Sie die Ausgabeformatierung, um nur die Route abzurufen:

      kf app test-app --output 'jsonpath={.status.urls[0]}'

    2. Oder verwenden Sie für einen herkömmlichen Ansatz von CF Folgendes:

      kf apps

  4. Rufen Sie die URL in Ihrem Browser auf.

Bereinigen

Bei diesen Schritten werden alle Komponenten entfernt, die im Abschnitt Neuen GKE-Cluster erstellen und vorbereiten erstellt wurden.

  1. Löschen Sie den GKE-Cluster:

    gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
  2. Löschen Sie das Google-Dienstkonto:

    gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
  3. Löschen Sie IAM-Richtlinienbindungen:

    gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/storage.admin"
    
    gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/iam.serviceAccountAdmin"
    
    gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/monitoring.metricWriter"
  4. Löschen Sie das Container-Image-Repository:

    gcloud artifacts repositories delete ${CLUSTER_NAME} \
      --location=${COMPUTE_REGION}