Kf in Google Cloud installieren (Vorabversion)

In diesem Dokument wird beschrieben, wie Sie einen GKE-Cluster einrichten und dann Kf und seine Abhängigkeiten mithilfe neuer Funktionen in der Vorabversion installieren.

  • Kf verwendet den neuen verpackten v2-Stack, um die Vorteile cloudnativer Buildpacks für Legacy-Anwendungen zu liefern.
  • Config Connector wurde als Abhängigkeit entfernt.
  • Die benutzerdefinierte IAM-Rolle serviceAccountUpdater wurde entfernt.

Vorbereitung

Anforderungen an GKE-Cluster

Kf-Anforderungen

Überprüfen Sie auf der Seite Kf-Abhängigkeiten und ‑Architektur die Zugriffsberechtigungen von Komponenten in Kf.

In der Abhängigkeitsmatrix werden die einzelnen Versionen aufgelistet.

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. Verify 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. Verify that billing is enabled for your Google Cloud project.

  6. Aktivieren Sie die Compute Engine API.

    API aktivieren

  7. Unterstützung für Artifact Registry aktivieren

    1. Aktivieren Sie die Artifact Registry API.

      Artifact Registry 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 diesen Task 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.

    Umgebungsvariablen einrichten

    Linux und Mac

    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} # Replace ZONE with REGION to switch
    export NODE_COUNT=4
    export MACHINE_TYPE=e2-standard-4
    export NETWORK=default
    

    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 # Replace ZONE with REGION to switch
    Set-Variable -Name NODE_COUNT -Value 4
    Set-Variable -Name MACHINE_TYPE -Value e2-standard-4
    Set-Variable -Name NETWORK -Value default
    

    Dienstkonto einrichten

    Erstellen Sie ein Google Cloud -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. Weisen Sie den Monitoring-Messwerten im Dienstkonto 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"
    3. Weisen Sie für den Schreibzugriff auf Cloud Logging dem Dienstkonto die Logging-Rolle 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} \
      --disk-size "122" \
      --network=${NETWORK} \
      --addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver \
      --enable-dataplane-v2 \
      --enable-stackdriver-kubernetes \
      --enable-ip-alias \
      --enable-autorepair \
      --enable-autoupgrade \
      --scopes 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 Kf müssen einige Firewallports geöffnet sein. 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 \
      --project=${CLUSTER_PROJECT_ID} \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \
      "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
    
    gcloud iam service-accounts add-iam-policy-binding \
      --project=${CLUSTER_PROJECT_ID} \
      --role roles/iam.workloadIdentityUser \
      --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
      "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"

    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, in der Container-Images gespeichert werden.

      gcloud artifacts repositories create ${CLUSTER_NAME} \
        --project=${CLUSTER_PROJECT_ID} \
        --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} \
        --project=${CLUSTER_PROJECT_ID} \
        --location=${COMPUTE_REGION} \
        --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role='roles/artifactregistry.writer'

    Softwareabhängigkeiten auf einem Cluster installieren

    1. Installieren Sie Cloud Service Mesh.

      1. Öffnen Sie die Cloud Service Mesh-Installationsanleitung.

      2. Nach der Installation von Cloud Service Mesh müssen Sie ein Ingress-Gateway mithilfe der Gateway-Installationsanleitung erstellen.

    2. Installieren Sie Tekton:

      kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.29.0/release.yaml"

    Kf installieren

    1. Installieren Sie die Kf-Befehlszeile:

      Linux

      Mit diesem Befehl wird die Kf-Befehlszeile 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/v2.7.3/kf-linux /tmp/kf
      chmod a+x /tmp/kf
      sudo mv /tmp/kf /usr/local/bin/kf

      Mac

      Mit diesem Befehl wird kf für alle Nutzer im System installiert.

      gcloud storage cp gs://kf-releases/v2.7.3/kf-darwin /tmp/kf
      chmod a+x /tmp/kf
      sudo mv /tmp/kf /usr/local/bin/kf

      Cloud Shell

      Mit diesem Befehl wird kf auf Ihrer Cloud Shell-Instanz installiert, wenn Sie bash verwenden. Für andere Shells muss die Anleitung möglicherweise angepasst werden.

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

      Windows

      Mit diesem Befehl 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/v2.7.3/kf-windows.exe kf.exe
    2. Installieren Sie den Operator:

      kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/operator.yaml"
    3. Installieren Sie Kf AppDevExperience Build (ADX-Build).

      export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
      cat << EOF | kubectl apply --filename -
      apiVersion: builds.appdevexperience.dev/v1alpha1
      kind: BuildSystem
      metadata:
          name: buildsystem
      spec:
        secrets:
          workloadidentity:
            googleprojectid: ${CLUSTER_PROJECT_ID}
            googleserviceaccount: ${CLUSTER_NAME}-sa
        containerRegistry: ${CONTAINER_REGISTRY}
        enabled: true
      EOF
    4. Konfigurieren Sie den ADX-Build für Workload Identity.

      gcloud iam service-accounts add-iam-policy-binding \
        --project=${CLUSTER_PROJECT_ID} \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[adx-builds-system/controller]" \
        "${GSA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
    5. Konfigurieren Sie den Operator für Kf:

      kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.7.3/kfsystem.yaml"
    6. Richten Sie Secrets und Standardeinstellungen ein:

      export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}
      
      kubectl patch \
      kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'featureFlags': {'enable_appdevexperience_builds': true}, 'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
      

    Installation prüfen

    kf doctor --retries=20

    Bereinigen

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

    1. Löschen Sie das Google-Dienstkonto:

      gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
    2. 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/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"
    3. Löschen Sie das Container-Image-Repository:

      gcloud artifacts repositories delete ${CLUSTER_NAME} \
        --location=${COMPUTE_REGION}
    4. Deinstallieren Sie Kf:

      kubectl patch kfsystem kfsystem \
        --type='json' \
        -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': false, }}]"
    5. Löschen Sie den GKE-Cluster:

      gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}