Questo documento descrive come configurare un cluster GKE e poi installare Kf e le relative dipendenze utilizzando le nuove funzionalità in anteprima.
- Kf utilizzerà il nuovo stack di wrapping v2 per offrire i vantaggi di Cloud Native Buildpack per le applicazioni legacy.
- Rimuove Config Connector come dipendenza.
- Rimuove il ruolo IAM personalizzato
serviceAccountUpdater.
Prima di iniziare
Requisiti del cluster GKE
Facoltativo, ma consigliato, il cluster deve essere dedicato a Kf. Ti consigliamo di installare solo Kf e le relative dipendenze per garantire la manutenzione della matrice di compatibilità.
Almeno quattro nodi. Se devi aggiungere nodi, consulta Ridimensionamento di un cluster.
Il tipo di macchina minimo con almeno quattro vCPU, ad esempio
e2-standard-4. Se il tipo di macchina per il tuo cluster non ha almeno quattro vCPU, modificalo come descritto in 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 Registrare un cluster esistente in un canale di rilascio se hai una versione GKE statica.
Workload Identity abilitato.
Requisiti di Kf
Esamina e comprendi le autorizzazioni di accesso dei componenti in Kf nella pagina Dipendenze e architettura Kf.
La matrice delle dipendenze elenca le versioni specifiche.
Tekton per l'utilizzo da parte di Kf; non si tratta di un servizio rivolto agli utenti
Un service account Google dedicato
Abilitare il supporto di 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- Abilita l'API Compute Engine
- Abilita l'API Artifact Registry.
- Attiva l'API Google Kubernetes Engine. Attiva l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività,
installala e poi
inizializza
gcloud CLI. Se hai già installato gcloud CLI, scarica l'ultima
versione eseguendo il comando
gcloud components update. Le versioni precedenti di gcloud CLI potrebbero non supportare l'esecuzione dei comandi in questo documento. Crea il 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}"Concedi il ruolo delle metriche di monitoraggio al account di servizio 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 al account di servizio 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 Artifact Registry per archiviare le immagini container.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --repository-format=docker \ --location=${COMPUTE_REGION}Concedi all'account di servizio l'autorizzazione sul repository Artifact Registry.
gcloud artifacts repositories add-iam-policy-binding ${CLUSTER_NAME} \ --project=${CLUSTER_PROJECT_ID} \ --location=${COMPUTE_REGION} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role='roles/artifactregistry.writer'Installa Cloud Service Mesh.
Dopo aver installato Cloud Service Mesh, devi creare un gateway in entrata utilizzando la guida all'installazione del gateway.
Installa Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.1/release.yaml"
Installa l'interfaccia a riga di comando Kf:
Linux
Questo comando installa la CLI 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/v2.10.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.10.0/kf-darwin /tmp/kfchmod a+x /tmp/kfsudo mv /tmp/kf /usr/local/bin/kfCloud Shell
Questo comando installa
kfsull'istanza Cloud Shell se utilizzibash, le istruzioni potrebbero dover essere modificate per altre shell.mkdir -p ~/bingcloud storage cp gs://kf-releases/v2.10.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 posizione diversa dalla directory corrente.gcloud storage cp gs://kf-releases/v2.10.0/kf-windows.exe kf.exeInstalla l'operatore:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.10.0/operator.yaml"
Installa Kf
AppDevExperience Build(ADX Build).export CONTAINER_REGISTRY=${COMPUTE_REGION}-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME}cat << EOF | kubectl apply --filename - apiVersion: builds.appdevexperience.dev/v1alpha1 kind: BuildSystem metadata: name: buildsystem spec: secrets: workloadidentity: googleprojectid: ${CLUSTER_PROJECT_ID} googleserviceaccount: ${CLUSTER_NAME}-sa containerRegistry: ${CONTAINER_REGISTRY} enabled: true EOFConfigura ADX Build per Workload Identity.
gcloud iam service-accounts add-iam-policy-binding \ --project=${CLUSTER_PROJECT_ID} \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[adx-builds-system/controller]" \ "${GSA_NAME}@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"Configura l'operatore per Kf:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.10.0/kfsystem.yaml"
Configura i secret e i valori predefiniti:
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}'}}}}}]"Elimina il service account Google:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comElimina le associazioni di policy IAM:
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountAdmin"gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/monitoring.metricWriter"Elimina il repository di immagini container:
gcloud artifacts repositories delete ${CLUSTER_NAME} \ --location=${COMPUTE_REGION}Disinstalla Kf:
kubectl patch kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': false, }}]"Elimina il cluster GKE:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
Attivare il supporto di Artifact Registry
Abilita e configura GKE
Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:
Prepara un nuovo cluster GKE 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
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
Configurare account di servizio
Crea un Google Cloud service account che verrà associato a un service account Kubernetes tramite Workload Identity. In questo modo non è necessario creare e inserire una chiave del account di servizio.
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} \
--disk-size "122" \
--network=${NETWORK} \
--addons HorizontalPodAutoscaling,HttpLoadBalancing,GcePersistentDiskCsiDriver \
--enable-dataplane-v2 \
--enable-stackdriver-kubernetes \
--enable-ip-alias \
--enable-autorepair \
--enable-autoupgrade \
--scopes 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 l'apertura di alcune porte firewall. 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 lo spazio dei nomi dell'identità del cluster al cluster.
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf/controller]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"
gcloud iam service-accounts add-iam-policy-binding \
--project=${CLUSTER_PROJECT_ID} \
--role roles/iam.workloadIdentityUser \
--member "serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
"${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com"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
Installa le dipendenze software su un cluster
Installazione di kf
Convalida l'installazione
kf doctor --retries=20Esegui la pulizia
Questi passaggi dovrebbero rimuovere tutti i componenti creati nella sezione Crea e prepara un nuovo cluster GKE.