Questo documento descrive come installare Kf e le sue dipendenze in un cluster on-premise Google Distributed Cloud o Google Distributed Cloud.
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 è 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
Un cluster di utenti per Google Distributed Cloud che soddisfi i requisiti di Cloud Service Mesh.
Configurato per il logging e il monitoraggio.
Registrato nel tuo parco risorse GKE Enterprise:
Scopri come registrare un cluster.
Requisiti Kf
Esamina e comprendi le autorizzazioni di accesso dei componenti in Kf nella pagina Dipendenze e architettura di Kf.
Tekton da utilizzare con Kf. Non si tratta di un servizio rivolto agli utenti.
Un account di servizio Google dedicato.
Prepara un nuovo cluster Google Distributed Cloud 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.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
Crea l'account di servizio Google Cloud (GSA) e la chiave dell'account di servizio utilizzati per consentire alle build di leggere/scrivere da Container Registry. Questo passaggio è diverso se stai usando un altro Container Registry perché potrebbe avere un modo diverso di ottenere le credenziali per accedere al registro.
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}"
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"
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
Installa Cloud Service Mesh.
Per installare Cloud Service Mesh, segui la guida all'installazione di Cloud Service Mesh.
Se utilizzi Google Distributed Cloud, imposta
loadBalancerIP
su un IP allocato al cluster come descritto in Configurare gli indirizzi IP esterni per Google Distributed Cloud.
Installa Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.26.0/release.yaml"
Installazione di 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 nella scheda Cloud Shell per installarlo autonomamente.
gcloud storage cp gs://kf-releases/v2.6.1/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.gcloud storage cp gs://kf-releases/v2.6.1/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 utilizzibash
, potrebbe essere necessario modificare le istruzioni per altre shell.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.6.1/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 voglio chiamare se da una posizione diversa dalla directory attuale.gcloud storage cp gs://kf-releases/v2.6.1/kf-windows.exe kf.exe
Installa l'operatore:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.6.1/operator.yaml"
Configura l'operatore per Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.6.1/kfsystem.yaml"
Crea un secret di Kubernetes per le credenziali Docker
Crea un secret Kubernetes nello spazio dei nomi Kf per le credenziali Docker
che hai creato sopra in Configurazione dell'account di servizio. Poi applica la patch al secret Kubernetes al deployment subresource-apiserver
per i caricamenti delle sorgenti.
Attiva e aggiorna l'operatore Kf in modo che utilizzi Container Registry come registry dei container.
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 lo spazio dei nomi
kf
sia stato creato dall'operatore Kf. L'operazione potrebbe richiedere alcuni minuti.kubectl get namespace kf
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}"
Aggiorna l'operatore Kf per specificare il segreto 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