Upgrade di Kf

Questo documento descrive come eseguire l'upgrade di un'installazione Kf esistente e delle relative dipendenze.

Nell'ambito della procedura di upgrade, ti assicuri che la tua installazione di Kf utilizzi la versione più recente dell'operatore Kf:

  • Verifica che la tua versione Kf corrente possa eseguire l'upgrade a Kf v2.4.1.
  • Esegui l'upgrade a Kf 2.4.1.
  • Esegui l'upgrade delle dipendenze (se necessario).

Prima di iniziare

Ti serviranno:

  • Un cluster esistente con Kf installato.
  • Accedi a una macchina su cui sono installati gcloud, kf e kubectl.

Preparazione dell'upgrade

Connettiti al cluster di destinazione

gcloud container clusters get-credentials CLUSTER_NAME \
 --zone CLUSTER_ZONE \
 --project CLUSTER_PROJECT_ID

Conferma che l'attuale interfaccia a riga di comando Kf e le versioni del server corrispondano

Esegui kf debug, convalida l'interfaccia a riga di comando Kf e Le versioni server Kf corrispondono.

  • 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 v2.3.x, per continuare è necessario prima eseguire l'upgrade incrementale a Kf v2.3.x.

Verificare che Kf sia in buono stato prima di eseguire l'upgrade

Esegui kf doctor per verificare 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.

Facoltativamente, configmap Kf di backup se hai effettuato delle personalizzazioni

  1. Esegui un backup della configmap config-defaults eseguendo:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  2. 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 come parte delle versioni 2.4.0:

  • Se hai già installato l'operatore Kf come parte installando la versione 2.4.0, devi solo eseguire l'upgrade nell'ambito dell'aggiornamento alla versione 2.4.1.

    Consulta Eseguire l'upgrade dell'operatore Kf.

  • Se esegui l'upgrade dalla versione 2.3.2, devi installare la versione 2.4.1 dell'operatore Kf per eseguire l'upgrade a Kf gestito dall'operatore.

    Vedi Installare l'operatore Kf.

Esegui l'upgrade dell'operatore Kf attuale

L'operatore Kf esegue gli upgrade per tuo conto.

  1. 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, segui questi passaggi.

  1. Applica il file YAML dell'operatore:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Scegli se utilizzare i valori predefiniti o mantenere le personalizzazioni:

    1. Prepara kfsystem.yaml per l'upgrade utilizzando le impostazioni predefinite:

      Scarica il file kfsystem.yaml, compila le variabili seguenti, quindi esegui i comandi nella stessa directory in cui si trova il file per preparare automaticamente kfsystem.yaml per l'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}'}}}}}]"
      
    2. Prepara kfsystem.yaml per l'upgrade mantenendo le personalizzazioni:

      1. Scarica il file kfsystem.yaml.

      2. Esegui un backup del configmap config-defaults eseguendo:

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
      3. Esegui un backup del configmap config-secrets eseguendo:

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. Controlla le attuali configurazioni Config-defaults e config-secrets e trova le impostazioni corrispondenti in kfsystem.yaml.

      5. Copia le impostazioni esistenti da config-secrets e config-defaults. Tutte le impostazioni di config-secrets e config-defaults sono disponibili in kfsystem.yaml. Ora il campo googleProjectId è obbligatorio.

      6. Il campo wi.googleServiceAccount è l'account di servizio completo in config-secrets, ma per kfsystem il suffisso deve essere rimosso. Ad esempio, ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com diventerebbe ${CLUSTER_NAME}-sa in kfsystem.yaml.

      7. Dopo aver copiato le impostazioni, modifica il campo enabled in kfsystem in true.

      8. Salva le modifiche apportate a kfsystem.yaml.

      9. Configura l'operatore per Kf:

        kubectl apply -f kfsystem.yaml

Esegui l'upgrade delle dipendenze Kf

  1. Esegui l'upgrade di Tekton:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
  2. Esegui l'upgrade di Cloud Service Mesh:

    1. Segui i passaggi descritti nella guida all'upgrade di Cloud Service Mesh 1.9.
  3. Esegui l'upgrade di Config Connector.

    1. Scarica il file tar dell'operatore Config Connector richiesto.

    2. Estrai il file tar.

      tar zxvf release-bundle.tar.gz
    3. Installa l'operatore Config Connector nel cluster.

      kubectl apply -f operator-system/configconnector-operator.yaml
    4. Configura l'operatore Config Connector se installi Config Connector per la prima volta.

      1. Copia il seguente 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
      2. Applica la configurazione al cluster.

        kubectl apply -f configconnector.yaml
    5. Verifica che Config Connector sia completamente installato prima di continuare.

      • Config Connector esegue tutti i componenti in uno spazio dei nomi denominato cnrm-system. Verifica che i pod siano pronti eseguendo questo 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
    6. 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 v2.4.1

  1. Installa l'interfaccia a riga di comando:

    Linux

    Questo comando installa l'interfaccia a riga di comando 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 utilizzi bash, 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

    Questa operazione 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.4.1/kf-windows.exe kf.exe
  2. 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
    ...
    

Verifica dell'upgrade di Kf riuscito

  1. Se installi l'operatore Kf per la prima volta, Conferma che l'operatore ha installato:

    kubectl get deployment -n appdevexperience appdevexperience-operator

    Se non vedi l'operatore come nell'output di esempio riportato di seguito, rivedi il Installa l'operatore Kf per la prima volta.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. Esegui doctor per assicurarti che la versione appena installata sia integro:

    kf doctor --retries=20

    Il comando eseguirà più volte i controlli del cluster. È normale che alcuni tentativi non vadano a buon fine durante l'avvio dei nuovi controller.

    Se il comando ha esito negativo con il messaggio Error: environment failed checks, segui le indicazioni nell'output doctor per risolvere il problema e riprova a eseguire l'operazione fino a quando non riesce.

  3. Se hai apportato personalizzazioni a config-defaults o config-secrets, verifica che siano riportate:

    Confronta il file config-defaults-backup.yaml con kubectl diff -f config-defaults-backup.yaml per assicurarti che il cluster sia ancora configurato correttamente.

    Ad esempio, se hai mantenuto tutte le modifiche del precedente Kf e utilizzo approvato 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 è stato eseguito correttamente. In caso di problemi, consulta la pagina di assistenza per indicazioni.