Prima di iniziare
Panoramica
Il cluster GKE deve soddisfare i seguenti requisiti:
Facoltativo, ma consigliato, il cluster deve essere dedicato a Kf. Consigliamo di installare Kf e le sue dipendenze solo per garantire il mantenimento 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 cluster non ha almeno quattro vCPU, cambia il tipo di macchina come descritto in Migrazione di carichi di lavoro in tipi di macchine diversi.(Facoltativo, ma consigliato) registra il cluster in un canale di rilascio. Segui le istruzioni riportate in Registrare un cluster esistente in un canale di rilascio se hai una versione GKE statica.
Workload Identity (Identità carico di lavoro) attivata.
Artifact Registry abilitato.
Tekton installato. Consulta la matrice delle dipendenze per la versione.
Un account di servizio Google con il seguente criterio IAM (istruzioni per la creazione collegate sotto):
roles/iam.serviceAccountAdmin
serviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller]
(per il membroserviceAccount:${CLUSTER_PROJECT}.svc.id.goog[kf/controller]
)
La sezione Pulizia contiene istruzioni sull'eliminazione del cluster.
Abilita il supporto per Compute Engine
- Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
- Abilitare l'API Compute Engine.
Abilita e configura GKE
Prima di iniziare, assicurati di aver eseguito le seguenti attività:
- Abilita l'API Google Kubernetes Engine. Abilita l'API Google Kubernetes Engine
- Se vuoi utilizzare Google Cloud CLI per questa attività, installa e initialize gcloud CLI. Se hai già installato gcloud CLI, scarica 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
Configurazione 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 inserire 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 (name) 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 alle 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"
Assegna il ruolo 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 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 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 disponi di un account di servizio e di un cluster GKE, associa lo spazio dei nomi di identità del cluster al 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 questo 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 l'archiviazione delle immagini container.
gcloud artifacts repositories create ${CLUSTER_NAME} \ --repository-format=docker \ --location=${COMPUTE_REGION}
Concedi l'autorizzazione all'account di servizio sul 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
Installa Tekton:
kubectl apply -f "https://github.com/tektoncd/pipeline/releases/download/${TEKTON_VERSION}/release.yaml"
Installazione di Kf
Consulta Creare e preparare un cluster GKE per Kf per creare un cluster pronto per l'esecuzione di Kf.
Seleziona e prendi nota della release Kf desiderata. Consulta la pagina Download Kf per conoscere 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 installarla in modo autonomo.gsutil cp gs://kf-releases/${KF_VERSION}/kf-linux /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Mac
Verrà installato
kf
per tutti gli utenti del sistema.gsutil 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
gsutil 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
Il file
kf
verrà scaricato nella directory attuale. Aggiungila al percorso se vuoi effettuare chiamate da qualsiasi posizione diversa dalla directory corrente.gsutil cp gs://kf-releases/${KF_VERSION}/kf-windows.exe kf.exe
Installa i componenti del server:
Linux e Mac
Verrà scaricato kf.yaml nella directory attuale.
gsutil cp gs://kf-releases/${KF_VERSION}/kf.yaml /tmp/kf.yaml
kubectl apply -f /tmp/kf.yaml
Windows
Verrà scaricato kf.yaml nella directory attuale.
gsutil 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 Kf. Questi valori possono essere modificati in un secondo momento. L'esempio seguente utilizza modelli di dominio con un provider DNS con caratteri jolly per fornire 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 dell'installazione:
kf doctor --retries 10
Push di un'applicazione
Prerequisiti
Per completare questa sezione è necessario:
- Kf installato in un cluster GKE compatibile. Vedi Installare Kf per le istruzioni.
- Un elemento
.kubeconfig
che ha come target il cluster Kf. Se hai creato il cluster seguendo le istruzioni riportate in questo documento, questa operazione sarà già eseguita. Puoi generare esplicitamente la configurazione congcloud container clusters get-credentials ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
- L'interfaccia a riga di comando
kf
installata e nel tuo percorso. Vedi Installare Kf per le istruzioni. - L'interfaccia a riga di comando
git
installata e nel tuo percorso.
Prepara lo spazio
Crea nuovo spazio:
kf create-space test-space
Scegli lo spazio come target:
kf target -s test-space
Esegui il push dell'app di test Cloud Foundry
Clona il repository app di test:
git clone https://github.com/cloudfoundry-samples/test-app go-test-app cd go-test-app
Esegui il push dell'app:
kf push test-app
Trova l'URL dell'applicazione:
Utilizza la formattazione dell'output per recuperare solo il percorso:
kf app test-app --output 'jsonpath={.status.urls[0]}'
Oppure questo, per un approccio più tradizionale sui CF:
kf apps
Apri l'URL nel browser.
Esegui la pulizia
Questi passaggi devono rimuovere tutti i componenti creati nella sezione Creare e preparare un nuovo cluster GKE.
Elimina il cluster GKE:
gcloud container clusters delete ${CLUSTER_NAME} --zone ${CLUSTER_LOCATION}
Elimina l'account di servizio Google:
gcloud iam service-accounts delete ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Elimina le associazioni di criteri IAM:
gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \ --member="serviceAccount:${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \ --role="roles/storage.admin" 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}