Prima di iniziare
Panoramica
Il cluster GKE deve soddisfare i seguenti requisiti:
Facoltativo, ma consigliato, il cluster deve essere dedicato a Kf. Ti consigliamo di installare solo Kf e le relative dipendenze per assicurarti che la matrice di compatibilità venga mantenuta.
Almeno quattro nodi. Se devi aggiungere nodi, consulta Ridimensionare un cluster.
Il tipo di macchina minimo con almeno quattro vCPU, ad esempio
e2-standard-4
. Se il tipo di macchina per il cluster non ha almeno quattro vCPU, cambia il tipo di macchina come descritto Migrazione dei carichi di lavoro a tipi di macchine diversi.Facoltativo, ma consigliato: registra il cluster in un canale di rilascio. Segui le istruzioni riportate nella sezione Registrazione di un cluster esistente in un canale di rilascio se hai una versione GKE statica.
Workload Identity abilitato.
Artifact Registry abilitato.
Tekton installato. Consulta la matrice di dipendenza per la versione.
Un account di servizio Google con il seguente criterio IAM (istruzioni per la creazione disponibili di seguito):
roles/iam.serviceAccountAdmin
serviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller]
(per il membroserviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller]
)
Abilita il supporto per Compute Engine
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Abilitare l'API Compute Engine.
Attiva e configura GKE
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
- Attiva l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
install e poi
inizializzare
con gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo
gcloud components update
.
Crea e prepara un nuovo cluster GKE
Configura le variabili di ambiente
Linux
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} export NODE_COUNT=4 export MACHINE_TYPE=e2-standard-4 export NETWORK=default export KF_VERSION=v2.2.0 export TEKTON_VERSION=v0.19.0
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 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 KF_VERSION -Value v2.2.0 Set-Variable -Name TEKTON_VERSION -Value v0.19.0
Creazione dell'account di servizio
Crea un account di servizio Google Cloud (GSA) che verrà associato a un account di servizio Kubernetes tramite Workload Identity. In questo modo non è necessario creare e iniettare una chiave dell'account di servizio.
Crea l'account di servizio che verrà utilizzato da Kf.
gcloud iam service-accounts create ${CLUSTER_NAME}-sa \ --project=${CLUSTER_PROJECT_ID} \ --description="GSA for Kf ${CLUSTER_NAME}" \ --display-name="${CLUSTER_NAME}"
Consenti all'account di servizio di modificare il proprio criterio. Il controller Kf lo utilizzerà per aggiungere nuovi spazi (nomi) al criterio, consentendo il riutilizzo per Workload Identity.
gcloud iam service-accounts add-iam-policy-binding ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com \ --project=${CLUSTER_PROJECT_ID} \ --role="roles/iam.serviceAccountAdmin" \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
Assegna il ruolo di monitoraggio delle metriche per l'accesso in scrittura a Cloud Monitoring.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"
Concedi il ruolo di logging per l'accesso in scrittura a Cloud Logging.
gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
Crea un cluster GKE
gcloud container clusters create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --zone=${CLUSTER_LOCATION} \ --num-nodes=${NODE_COUNT} \ --machine-type=${MACHINE_TYPE} \ --network=${NETWORK} \ --addons=HttpLoadBalancing,HorizontalPodAutoscaling,NetworkPolicy \ --enable-stackdriver-kubernetes \ --enable-ip-alias \ --enable-network-policy \ --enable-autorepair \ --enable-autoupgrade \ --scopes=https://www.googleapis.com/auth/cloud-platform \ --release-channel=regular \ --workload-pool="${CLUSTER_PROJECT_ID}.svc.id.goog" \ --service-account="${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
Imposta regole firewall
Kf richiede che alcune porte del firewall siano aperte. Il nodo master deve essere in grado di comunicare con i pod sulle porte 80, 443, 8080, 8443 e 6443.
Abilita Workload Identity
Ora che hai un account di servizio e un cluster GKE, associa il cluster con il cluster.
gcloud iam service-accounts add-iam-policy-binding \ "${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --project=${CLUSTER_PROJECT_ID} \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]"
Cluster GKE di destinazione
Configura l'accesso alla riga di comando kubectl eseguendo il seguente comando.
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --zone=${CLUSTER_LOCATION}
Crea un repository Artifact Registry
Crea un Artifact Registry per archiviare le immagini container.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --repository-format=docker \ --location=${COMPUTE_REGION}
Concedi l'autorizzazione all'account di servizio nel repository Artifact Registry.
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'
Configura l'autenticazione locale.
gcloud auth configure-docker ${COMPUTE_REGION}-docker.pkg.dev
Installa le dipendenze software sul cluster
Installazione di Tekton:
kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"
Installazione di kf
Per creare un cluster preparato per l'esecuzione di Kf, consulta Creare e preparare un cluster GKE per Kf.
Seleziona e prendi nota della release di Kf che ti interessa. Consulta la pagina Download di kf per le versioni disponibili
Installa l'interfaccia a riga di comando:
Linux
Verrà installato
kf
per tutti gli utenti del sistema. Segui le istruzioni nella scheda Cloud Shell per installarlo solo per te.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Questa operazione installerà
kf
per tutti gli utenti del sistema.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Questa operazione installerà
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/${KF_VERSION}/kf-linux ~/bin/kf
chmod a+x ~/bin/kf
echo "export PATH=$HOME/bin:$PATH" >> ~/.bashrc
source ~/.bashrc
Windows
Verrà scaricato
kf
nella directory corrente. Aggiungila al percorso se vuoi chiamarla da un punto diverso dalla directory corrente.gcloud storage cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exe
Installa i componenti del server:
Linux e Mac
kf.yaml verrà scaricato nella directory attuale.
gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yaml
kubectl apply -f /tmp/kf.yaml
Windows
kf.yaml verrà scaricato nella directory attuale.
gcloud storage cp gs://kf-releases/${KF_VERSION}/kf.yaml kf.yaml
kubectl apply -f kf.yaml
Configura i secret:
export WI_ANNOTATION=iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com kubectl annotate serviceaccount controller ${WI_ANNOTATION} \ --namespace kf \ --overwrite echo "{\"apiVersion\":\"v1\",\"kind\":\"ConfigMap\",\"metadata\":{\"name\":\"config-secrets\", \"namespace\":\"kf\"},\"data\":{\"wi.googleServiceAccount\":\"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com\"}}" | kubectl apply -f -
Configura i valori predefiniti di Kf. Questi valori possono essere modificati in un secondo momento. L'esempio riportato di seguito utilizza modelli dominio con un provider DNS con caratteri jolly per assegnare a ogni spazio il proprio nome di dominio:
export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} export DOMAIN='$(SPACE_NAME).$(CLUSTER_INGRESS_IP).nip.io' kubectl patch configmaps config-defaults \ -n=kf \ -p="{\"data\":{\"spaceContainerRegistry\":\"${CONTAINER_REGISTRY}\",\"spaceClusterDomains\":\"- domain: ${DOMAIN}\"}}"
Convalida l'installazione:
kf doctor --retries 10