Kf außerhalb von Google Cloud installieren

In diesem Dokument wird beschrieben, wie Sie Kf und seine Abhängigkeiten auf einem lokalen Cluster installieren, der im Rahmen von Google Distributed Cloud erstellt wurde, entweder auf VMware oder auf Bare-Metal-Hardware.

Wenn Sie bereits mit dem Installieren von Kf auf einem GKE-Cluster in Google Cloud vertraut sind, bestehen die Hauptunterschiede im lokalen Verfahren:

  • Sie müssen Config Connector nicht für eine lokale Installation installieren.
  • Beim lokalen Verfahren werden Docker-Anmeldedaten anstelle von Workload Identity verwendet.

Hinweise

Anforderungen für Google Distributed Cloud

Kf-Anforderungen

  • Cloud Service Mesh.

  • Tekton zur Verwendung durch Kf. Dies ist kein benutzerorientierter Dienst.

  • Ein dediziertes Google-Dienstkonto.

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
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export DOCKER_SERVER=YOUR_DOCKER_SERVER_URL
export SA_NAME=${CLUSTER_NAME}-sa
export SA_EMAIL=${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com

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
Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_NAME -Value kf-cluster
Set-Variable -Name DOCKER_SERVER -Value YOUR_DOCKER_SERVER_URL
Set-Variable -Name SA_NAME -Value ${CLUSTER_NAME}-sa
Set-Variable -Name SA_EMAIL -Value ${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com

Dienstkonto einrichten

Erstellen Sie das Google Cloud-Dienstkonto (GSA) und den Dienstkontoschlüssel, die für die Builds zum Lesen/Schreiben aus Container Registry verwendet werden. Dieser Schritt unterscheidet sich, wenn Sie eine andere Container-Registry verwenden, da diese könnte eine andere Methode zum Abrufen der Anmeldedaten für den Zugriff auf die Registry haben.

  1. Erstellen Sie das von Kf verwendete Dienstkonto:

    gcloud beta iam service-accounts create ${SA_NAME} \
        --project=${CLUSTER_PROJECT_ID} \
        --description="gcr.io admin for ${CLUSTER_NAME}" \
        --display-name="${CLUSTER_NAME}"
  2. Weisen Sie dem Dienstkonto die Rolle storage.admin zu, die zum Lesen/Schreiben aus Container Registry erforderlich ist:

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
  3. Erstellen Sie den Dienstkontoschlüssel:

    temp_dir=$(mktemp -d)
    key_path=${temp_dir}/key.json
    gcloud iam service-accounts keys create --iam-account ${SA_EMAIL} ${key_path}
    key_json=$(cat ${key_path})
    rm -rf ${temp_dir}

Softwareabhängigkeiten auf dem Cluster installieren

  1. Cloud Service Mesh installieren.

    1. Folgen Sie der Installationsanleitung für Cloud Service Mesh, um Cloud Service Mesh zu installieren.

    2. Legen Sie in Google Distributed Cloud die loadBalancerIP auf eine IP-Adresse fest, die dem Cluster zugewiesen ist, wie unter Externe IP-Adressen für Google Distributed Cloud konfigurieren beschrieben.

  2. Installieren Sie Tekton:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.47.1/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.11.21/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.11.21/kf-darwin /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf

    Cloud Shell

    Durch diesen Befehl 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/v2.11.21/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.11.21/kf-windows.exe kf.exe
  2. Installieren Sie den Operator:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/operator.yaml"
  3. Konfigurieren Sie den Operator für Kf:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.11.21/kfsystem.yaml"

Kubernetes-Secret für Docker-Anmeldedaten erstellen

Erstellen Sie im Kf-Namespace ein Kubernetes-Secret für die Docker-Anmeldedaten, die Sie oben unter Dienstkonto einrichten erstellt haben. Patchen Sie dann das Kubernetes-Secret für subresource-apiserver-Deployments für Quell-Uploads.

  1. Aktivieren und aktualisieren Sie den Kf-Operator, um Container Registry als die Container-Registry zu verwenden.

    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}'}}}}}]"
    
    export CONTAINER_REGISTRY=gcr.io/${CLUSTER_PROJECT_ID}
    kubectl patch kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry':'${CONTAINER_REGISTRY}'}}}]"
    
  2. Prüfen Sie, ob der Namespace kf vom Kf-Operator erstellt wurde. Dies kann einige Minuten dauern.

    kubectl get namespace kf
  3. Erstellen Sie ein Kubernetes-Secret für die Verwendung mit Docker-Registries.

    export secret_name=kf-gcr-key-${RANDOM}
    kubectl -n kf create secret docker-registry ${secret_name} \
       --docker-username=_json_key --docker-server ${DOCKER_SERVER} \
       --docker-password="${key_json}"
    
  4. Aktualisieren Sie den Kf-Operator, um das Secret anzugeben, das Docker-Anmeldedaten enthält.

    kubectl patch kfsystem kfsystem \
      --type='json' \
      -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'config': {'secrets':{'build':{'imagePushSecrets':'${secret_name}'}}}}}]"
    

Installation prüfen

kf doctor --retries=20