Installa Kf al di fuori di Google Cloud

Questo documento descrive come installare Kf e le sue dipendenze in un cluster on-premise creato come parte di Google Distributed Cloud, su VMware o on bare metal.

Se hai già familiarità con il processo di installazione di Kf su un cluster GKE in Google Cloud, le principali differenze per la procedura on-premise sono:

  • Non è necessario installare Config Connector per un'installazione on-premise.
  • La procedura on-premise utilizza le credenziali Docker anziché Workload Identity.

Prima di iniziare

Requisiti di Google Distributed Cloud

Requisiti Kf

Esamina e comprendi le autorizzazioni di accesso dei componenti in Kf nella pagina Dipendenze e architettura di Kf.

  • Cloud Service Mesh.

  • Tekton per l'utilizzo da parte di Kf. Questo non è un servizio rivolto agli utenti.

  • Un account di servizio Google dedicato.

Imposta le variabili di ambiente

Linux e 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

Configura account di servizio

Creare l'account di servizio Google Cloud (GSA) e la chiave dell'account di servizio utilizzati per la lettura/scrittura delle build da Container Registry. Questo passaggio è diverso se utilizzi un Container Registry diverso perché potrebbe avere un modo diverso per ottenere le credenziali per accedere al registry.

  1. Crea l'account di servizio utilizzato da Kf:

    gcloud beta iam service-accounts create ${SA_NAME} \
        --project=${CLUSTER_PROJECT_ID} \
        --description="gcr.io admin for ${CLUSTER_NAME}" \
        --display-name="${CLUSTER_NAME}"
  2. Assegna all'account di servizio il ruolo storage.admin necessario per leggere/scrivere da Container Registry:

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
        --member="serviceAccount:${SA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
  3. Crea la chiave dell'account di servizio:

    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}

Installa le dipendenze software sul cluster

  1. Installa Cloud Service Mesh v1.12.

    1. Segui la guida all'installazione di Cloud Service Mesh.

    2. Dopo aver installato Cloud Service Mesh, devi creare un gateway in entrata utilizzando la guida all'installazione del gateway.

    3. Se su GKE on VMware, imposta loadBalancerIP su un IP allocato al cluster come descritto in Configurare indirizzi IP esterni per GKE on VMware.

  2. Installazione di Tekton:

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

Installazione di Kf

  1. Installa l'interfaccia a riga di comando Kf:

    Linux

    Questo comando installa l'interfaccia a riga di comando Kf per tutti gli utenti del sistema. Segui le istruzioni nella scheda Cloud Shell per installarlo autonomamente.

    gsutil cp gs://kf-releases/v2.9.0/kf-linux /tmp/kf
    chmod a+x /tmp/kf
    sudo mv /tmp/kf /usr/local/bin/kf
    

    Mac

    Questo comando installa kf per tutti gli utenti del sistema.

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

    Cloud Shell

    Questo comando installa kf sulla tua istanza di Cloud Shell se utilizzi bash. Potrebbe essere necessario modificare le istruzioni per altre shell.

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

    Windows

    Questo comando scarica kf nella directory corrente. Aggiungila al percorso se vuoi effettuare una chiamata da qualsiasi posizione diversa dalla directory attuale.

    gsutil cp gs://kf-releases/v2.9.0/kf-windows.exe kf.exe
    
  2. Installa l'operatore:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/operator.yaml"
  3. Configura l'operatore per Kf:

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

crea un secret Kubernetes per le credenziali Docker

Crea un secret Kubernetes nello spazio dei nomi Kf per le credenziali Docker create in precedenza in Configurazione account di servizio. Quindi, applica la patch del secret Kubernetes al deployment subresource-apiserver per i caricamenti dell'origine.

  1. Abilita e aggiorna l'operatore Kf per utilizzare Container Registry come Container Registry.

    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. Verifica che lo spazio dei nomi kf sia stato creato dall'operatore Kf. Il completamento dell'operazione potrebbe richiedere alcuni minuti.

    kubectl get namespace kf
  3. Creare un secret Kubernetes da utilizzare con i registri Docker.

    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. Aggiorna l'operatore Kf per specificare il secret contenente le credenziali Docker.

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

Convalida l'installazione

kf doctor --retries=20