Questo documento descrive come installare Kf e le relative dipendenze su un cluster on-premise creato nell'ambito di Google Distributed Cloud, su VMware o su bare metal.
Se hai già familiarità con la procedura di installazione di Kf su un cluster GKE in Google Cloud, le principali differenze per la procedura on-premise sono:
- Non devi 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
Un cluster utente che soddisfi i requisiti di Cloud Service Mesh.
Configurato per logging e monitoraggio.
Registrato in un parco risorse:
Requisiti di Kf
Tekton per l'utilizzo da parte di Kf. Questo non è un servizio rivolto agli utenti.
Un account di servizio Google dedicato.
Prepara un nuovo cluster on-premise e i servizi correlati
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.comWindows 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.comConfigura account di servizio
Crea il Google Cloud service account (GSA) e la chiave del account di servizio utilizzati dalle build per leggere/scrivere da Container Registry. Questo passaggio è diverso se utilizzi un altro registro container, perché potrebbe avere un modo diverso per ottenere le credenziali di accesso al registro.
Crea il 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}"Assegna al account di servizio il ruolo
storage.adminnecessario 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"Crea la chiave del account di servizio:
temp_dir=$(mktemp -d)
key_path=${temp_dir}/key.jsongcloud 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
Installa Cloud Service Mesh.
Segui la guida all'installazione di Cloud Service Mesh per installare Cloud Service Mesh.
Se utilizzi Google Distributed Cloud, imposta
loadBalancerIPsu un indirizzo IP allocato al cluster come descritto in Configura gli indirizzi IP esterni per Google Distributed Cloud.
Installa Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.1/release.yaml"
Installa Kf
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 installarla solo per te.
gcloud storage cp gs://kf-releases/v2.9.0/kf-linux /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfMac
Questo comando installa
kfper tutti gli utenti del sistema.gcloud storage cp gs://kf-releases/v2.9.0/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
Questo comando installa
kfsull'istanza di Cloud Shell. Se utilizzibash, potrebbe essere necessario modificare le istruzioni per altre shell.mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.9.0/kf-linux ~/bin/kfchmod a+x ~/bin/kfecho "export PATH=$HOME/bin:$PATH" >> ~/.bashrcsource ~/.bashrcWindows
Questo comando scarica
kfnella directory corrente. Aggiungilo al percorso se vuoi chiamarlo da una directory diversa da quella corrente.gcloud storage cp gs://kf-releases/v2.9.0/kf-windows.exe kf.exeInstalla l'operatore:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.9.0/operator.yaml"
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
che hai creato sopra nella sezione Configurazione del service account. Poi applica una patch al secret Kubernetes al deployment subresource-apiserver per i caricamenti di origine.
Attiva e aggiorna l'operatore Kf per utilizzare Container Registry come registro container.
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}'}}}]"Verifica che l'operatore Kf abbia creato lo spazio dei nomi
kf. Il completamento potrebbe richiedere alcuni minuti.kubectl get namespace kf
Crea 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}"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