Nell'ambito della procedura di upgrade, assicurati che l'installazione di Kf utilizzi la versione più recente dell'operatore Kf:
- Verifica che la tua versione attuale di Kf possa eseguire l'upgrade alla versione 2.4.1 di Kf.
- Esegui l'upgrade a Kf 2.4.1.
- Esegui l'upgrade delle dipendenze (se necessario).
Prima di iniziare
Avrai bisogno di:
- Un cluster esistente con Kf installato.
- Accedi a una macchina su cui sono installati
gcloud
,kf
ekubectl
.
Preparazione dell'upgrade
Connettiti al cluster di destinazione
gcloud container clusters get-credentials CLUSTER_NAME \
--zone CLUSTER_ZONE \
--project CLUSTER_PROJECT_ID
Verificare la corrispondenza delle versioni correnti del server e della CLI di Kf
Esegui kf debug
e convalida la corrispondenza delle versioni dell'interfaccia a riga di comando Kf e del server Kf.
- La versione dell'interfaccia a riga di comando è indicata in
Kf Client
. - La versione del server Kf è indicata in
kf["app.kubernetes.io/version"]
.
$ kf debug
...
Version:
Kf Client: v2.3.2
Server version: v1.20.6-gke.1000
kf["app.kubernetes.io/version"]: v2.3.2
...
Se i valori del client Kf e del server Kf non corrispondono, ma la versione del server è 2.3.x, installa l'interfaccia a riga di comando Kf 2.4.1 prima di continuare.
Se il valore del server Kf è precedente alla versione 2.3.x, devi prima eseguire l'upgrade incrementale alla versione 2.3.x di Kf per continuare.
Verificare che Kf sia in buono stato prima di eseguire l'upgrade
Esegui kf doctor
per controllare lo stato del cluster. Assicurati che tutti i test siano stati superati prima di continuare.
$ kf doctor
...
=== RUN doctor/user
=== RUN doctor/user/ContainerRegistry
--- PASS: doctor/user
--- PASS: doctor/user/ContainerRegistry
...
Se visualizzi messaggi FAIL
o Error: environment failed checks
, segui le indicazioni nell'output kf doctor
o consulta la guida alla risoluzione dei problemi per risolvere il problema e riprova a eseguire il comando fino a quando non viene eseguito correttamente.
Se hai apportato personalizzazioni, puoi eseguire il backup delle mappe di configurazione Kf
Esegui un backup del configmap
config-defaults
eseguendo:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
Esegui un backup del configmap
config-secrets
eseguendo:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
Esegui l'upgrade dell'operatore Kf
L'operatore Kf è stato rilasciato per la prima volta nelle versioni 2.4.0:
Se hai già installato l'operatore Kf nell'ambito dell'installazione della versione 2.4.0, devi solo eseguirne l'upgrade nell'ambito dell'upgrade alla versione 2.4.1.
Consulta Eseguire l'upgrade dell'operatore Kf.
Se esegui l'upgrade da 2.3.2, devi installare la versione 2.4.1 dell'operatore Kf per eseguire l'upgrade a Kf gestito dall'operatore.
Consulta Installare l'operatore Kf.
Esegui l'upgrade dell'operatore Kf attuale
L'operatore Kf esegue gli upgrade per tuo conto.
Applica il file yaml dell'operatore:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
Installare l'operatore Kf per la prima volta
Per eseguire l'upgrade a Kf gestito dall'operatore, svolgi i seguenti passaggi.
Applica il file yaml dell'operatore:
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
Scegli se utilizzare i valori predefiniti o mantenere le personalizzazioni:
Prepara
kfsystem.yaml
per l'upgrade utilizzando i valori predefiniti:Scarica il file
kfsystem.yaml
, compila le variabili riportate di seguito ed esegui i comandi nella stessa directory del file per preparare automaticamentekfsystem.yaml
all'upgrade.export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID export CLUSTER_NAME=YOUR_CLUSTER_NAME export CONTAINER_REGISTRY=YOUR_CLUSTER_COMPUTE_REGION-docker.pkg.dev/${CLUSTER_PROJECT_ID}/${CLUSTER_NAME} kubectl apply -f kfsystem.yaml kubectl patch \ kfsystem kfsystem \ --type='json' \ -p="[{'op': 'replace', 'path': '/spec/kf', 'value': {'enabled': true, 'config': {'spaceContainerRegistry': '${CONTAINER_REGISTRY}', 'secrets':{'workloadidentity':{'googleserviceaccount':'${CLUSTER_NAME}-sa', 'googleprojectid':'${CLUSTER_PROJECT_ID}'}}}}}]"
Prepara
kfsystem.yaml
per l'upgrade mantenendo le personalizzazioni:Scarica il file
kfsystem.yaml
.Esegui un backup del configmap
config-defaults
eseguendo:kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
Esegui un backup del configmap
config-secrets
eseguendo:kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
Controlla i file ConfigMap config-defaults e config-secrets attuali e trova le impostazioni corrispondenti in
kfsystem.yaml
.Copia le impostazioni esistenti da
config-secrets
econfig-defaults
. Tutte le impostazioni diconfig-secrets
econfig-defaults
sono disponibili inkfsystem.yaml
. Il campogoogleProjectId
è ora obbligatorio.Il campo
wi.googleServiceAccount
è l'account di servizio completo inconfig-secrets
, ma perkfsystem
il suffisso deve essere rimosso. Ad esempio,${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
diventerà${CLUSTER_NAME}-sa
inkfsystem.yaml
.Dopo aver copiato le impostazioni, cambia il campo
enabled
inkfsystem
intrue
.Salva le modifiche in
kfsystem.yaml
.Configura l'operatore per Kf:
kubectl apply -f kfsystem.yaml
Esegui l'upgrade delle dipendenze di Kf
Esegui l'upgrade di Tekton:
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
Esegui l'upgrade di Cloud Service Mesh:
- Segui i passaggi descritti nella guida all'upgrade di Cloud Service Mesh 1.9.
Esegui l'upgrade di Config Connector.
Scarica il file tar dell'operatore Config Connector richiesto.
Estrai il file tar.
tar zxvf release-bundle.tar.gz
Installa l'operatore Config Connector sul cluster.
kubectl apply -f operator-system/configconnector-operator.yaml
Configura l'operatore Config Connector se è la prima volta che installi Config Connector.
Copia il seguente codice YAML in un file denominato
configconnector.yaml
:# configconnector.yaml apiVersion: core.cnrm.cloud.google.com/v1beta1 kind: ConfigConnector metadata: # the name is restricted to ensure that there is only one # ConfigConnector resource installed in your cluster name: configconnector.core.cnrm.cloud.google.com spec: mode: cluster googleServiceAccount: "KF_SERVICE_ACCOUNT_NAME" # Replace with the full service account resolved from ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Applica la configurazione al cluster.
kubectl apply -f configconnector.yaml
Verifica che Config Connector sia completamente installato prima di continuare.
Config Connector esegue tutti i suoi componenti in uno spazio dei nomi denominato
cnrm-system
. Verifica che i pod siano pronti eseguendo il seguente comando:kubectl wait -n cnrm-system --for=condition=Ready pod --all
Se Config Connector è installato correttamente, l'output è simile al seguente:
pod/cnrm-controller-manager-0 condition met
Configura Workload Identity se installi Config Connector per la prima volta.
kubectl annotate serviceaccount \ --namespace cnrm-system \ --overwrite \ cnrm-controller-manager \ iam.gke.io/gcp-service-account=${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
Esegui l'upgrade all'interfaccia a riga di comando Kf 2.4.1
Installa l'interfaccia a riga di comando:
Linux
Questo comando installa la CLI di 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.4.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.4.1/kf-darwin /tmp/kf
chmod a+x /tmp/kf
sudo mv /tmp/kf /usr/local/bin/kf
Cloud Shell
Questo comando installa
kf
nell'istanza Cloud Shell. Se utilizzibash
, le istruzioni potrebbero dover essere modificate per altre shell.mkdir -p ~/bin
gcloud storage cp gs://kf-releases/v2.4.1/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/v2.4.1/kf-windows.exe kf.exe
Verifica che le versioni dell'interfaccia a riga di comando Kf e del server Kf corrispondano:
- La versione dell'interfaccia a riga di comando è indicata in
Kf Client
. - La versione del server Kf è indicata in
kf["app.kubernetes.io/version"]
.
$ kf debug ... Version: Kf Client: v2.4.1 Server version: v1.20.6-gke.1000 kf["app.kubernetes.io/version"]: v2.4.1 ...
- La versione dell'interfaccia a riga di comando è indicata in
Verificare che l'upgrade di Kf sia andato a buon fine
Se installi l'operatore Kf per la prima volta, conferma che l'operatore sia stato installato:
kubectl get deployment -n appdevexperience appdevexperience-operator
Se non vedi l'operatore come nell'esempio di output riportato di seguito, consulta i passaggi per installare l'operatore Kf per la prima volta.
NAME READY UP-TO-DATE AVAILABLE AGE appdevexperience-operator 1/1 1 1 1h
Esegui
doctor
per assicurarti che la versione appena installata sia in buono stato:kf doctor --retries=20
Il comando eseguirà i controlli del cluster più volte. È normale che alcuni tentativi non vadano a buon fine durante l'avvio dei nuovi controller.
Se il comando non va a buon fine con il messaggio
Error: environment failed checks
, segui le indicazioni nell'outputdoctor
per risolvere il problema e riprova a eseguire il comando finché non va a buon fine.Se hai apportato personalizzazioni a
config-defaults
oconfig-secrets
, verifica che siano state trasferite:Confronta il file
config-defaults-backup.yaml
conkubectl diff -f config-defaults-backup.yaml
per assicurarti che il cluster sia ancora configurato correttamente.Ad esempio, se hai mantenuto tutte le modifiche della vecchia versione di Kf e hai approvato l'utilizzo di un nuovo buildpack in bundle con la versione successiva di Kf:
$ kubectl diff -f config-defaults-backup.yaml diff -u -N /tmp/LIVE/v1.ConfigMap.kf.config-defaults /tmp/MERGED/v1.ConfigMap.kf.config-defaults --- /tmp/LIVE/v1.ConfigMap.kf.config-defaults +++ /tmp/MERGED/v1.ConfigMap.kf.config-defaults @@ -131,6 +131,8 @@ enable_route_services: false spaceBuildpacksV2: | - - name: new_buildpack - url: https://github.com/cloudfoundry/new-buildpack - name: staticfile_buildpack url: https://github.com/cloudfoundry/staticfile-buildpack - name: java_buildpack exit status 1
Se i passaggi di verifica vengono superati, l'upgrade del cluster è andato a buon fine. In caso di problemi, consulta la pagina di assistenza per indicazioni.