Upgrade di Apigee hybrid

Upgrade alla versione 1.2.0

Per eseguire l'upgrade di Apigee hybrid alla versione 1.2.0:

Passaggio 1: esegui l'upgrade di Kubernetes e scarica il pacchetto di release

  1. Esegui l'upgrade della piattaforma Kubernetes come segue. Se hai bisogno di aiuto, segui la documentazione della tua piattaforma:
    Piattaforma Esegui l'upgrade alla versione
    GKE 1.14.x
    Anthos 1.2
    AKS 1.14.x
  2. Scarica il pacchetto della release per il tuo sistema operativo:

    Mac 64 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_64.tar.gz

    Linux a 64 bit

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_64.tar.gz

    Mac a 32 bit:

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_32.tar.gz

    Linux a 32 bit

    curl -LO \
        https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_32.tar.gz

Passaggio 2: riconfigura la directory di installazione

  1. Identifica la directory di installazione di base creata durante l'installazione originale di Apigee hybrid. La directory di base è la directory in cui si trova la directory $APIGEEGTL_HOME. Nell'esempio seguente, la directory di base è /Users/myhome/hybrid:
    echo $APIGEECTL_HOME
    /Users/myhome/hybrid/apigeectl
  2. Estrai i contenuti del file gzip scaricato nella directory di base di Apigee hybrid:

    tar xvzf filename.tar.gz -C path-to-base-directory
  3. cd alla directory di base.
  4. Per impostazione predefinita, i contenuti del file tar vengono espansi in una directory con la versione e la piattaforma nel nome. Ad esempio: ./apigeectl_1.2.0-f7b96a8_linux_64.

  5. Rinomina la directory apigeectl corrente. Ad esempio, se la versione corrente è 1.1.1, rinomina la directory apigeectl in apigeectl_1.1.1.
  6. Rinomina la directory di installazione appena estratta in apigeectl. Ora è qui che punta l'ambiente $APIGEECTL_HOME.

Passaggio 3: aggiorna il file delle sostituzioni

  1. Crea una copia del file delle sostituzioni e assicurati di salvare il vecchio file nel caso in cui sia necessario eseguire il rollback. Nei passaggi successivi, apporterai le modifiche necessarie al file delle sostituzioni prima di applicarlo al cluster.
  2. Aggiorna il file delle sostituzioni con le modifiche descritte di seguito:

    Di seguito è riportato un riepilogo delle modifiche alla configurazione che devi apportare al file delle sostituzioni. Un esempio completo è riportato nella tabella che segue il riepilogo. Come vedrai, la proprietà envs[] è cambiata in modo significativo rispetto alle versioni precedenti:

    • La proprietà envs[].hostAlias è stata rimossa e sostituita dalla nuova proprietà virtualhosts.hostAliases[].
    • Devi aggiungere la nuova proprietà di configurazione obbligatoria virtualhosts.
    • Devi spostare le proprietà envs[].sslCertPath e envs[].sslKeyPath da envs a virtualhosts.
    • Devi aggiungere la stanza di configurazione virtualhosts.routingRules. La proprietà virtualhosts.routingRules sostituisce la proprietà envs[].paths precedente. Se nel file delle sostituzioni è presente envs[].paths, devi rimuoverlo. Per ulteriori informazioni sulla configurazione degli host virtuali, consulta Configurare gli host virtuali.

    La tabella seguente illustra le differenze tra un file di override 1.1.1 e un file della versione 1.2.0. L'esempio ha lo scopo di evidenziare i tipi di modifiche da apportare per la versione 1.2.0:

    Configurazione v1.1.x Configurazione della versione 1.2.0
    envs:
      - name: test1
        hostAlias: "api.example.com"
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        serviceAccountPaths:
          synchronizer: ./sa/sync.json
          udca: ./sa/udca.json
        paths:
          uri:
            prefixes:
              - /orders
              - /items
      - name: test2
        hostAlias: "api.example.com"
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        serviceAccountPaths:
          synchronizer: ./sa/sync.json
          udca: ./sa/udca.json
        paths:
          uri:
            prefixes:
              - /v0/hello
              - /httpbin
    virtualhosts:
      - name: default
        hostAliases: ["api.example.com"]
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        routingRules:
          - paths:
            - /orders
            - /items
            env: test1
          - paths:
            - /v0/hello
            - /httpbin
            env: test2
    
    envs:
      - name: test1
        serviceAccountPaths:
          synchronizer: ./sa/synchronizer.json
          udca: ./sa/udca.json
      - name: test2
        serviceAccountPaths:
          synchronizer: ./sa/synchronizer.json
          udca: ./sa/udca.json

Passaggio 4: applica l'upgrade al cluster

  1. Se hai attivato Apigee Connect nell'installazione della versione 1.1.1, devi rimuovere il deployment:
    1. Innanzitutto, elenca i deployment Apigee:
      kubectl -n namespace get ad
    2. Elimina il deployment di Apigee Connect:
      kubectl -n namespace delete ad apigee-connect-name
  2. Elenca i pod:
    kubectl get pods -n namespace
  3. Elimina il pod apigee-cps-setup dal cluster. Utilizza il nome completo del pod, che include il nome della tua organizzazione, come restituito nel comando precedente. Ad esempio:
    kubectl -n namespace delete pod apigee-cps-setup-org
  4. Elimina il pod apigee-cps-create-user nello stesso spazio dei nomi:
    kubectl -n namespace delete pod apigee-cps-create-user
  5. Ripulisci i job completati per lo spazio dei nomi dell'ambiente di runtime ibrido, dove namespace è lo spazio dei nomi specificato nel file degli override, se ne hai specificato uno. In caso contrario, lo spazio dei nomi predefinito è apigee:
    kubectl delete job -n namespace \
      $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  6. Elimina i job completati per lo spazio dei nomi apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  7. Elimina i job completati per lo spazio dei nomi istio-system:
    kubectl delete job -n istio-system \
      $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  8. cd alla directory ./hybrid-files:
  9. Inizializza apigeectl per la nuova versione:
    $APIGEECTL_HOME/apigeectl init -f overrides/overrides-file.yaml
  10. Controlla per determinare quando l'inizializzazione è completa:
    $APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides-file.yaml
  11. Quando check-ready risponde con "Tutti i contenitori sono pronti", puoi provare un'installazione di prova. Esegui il comando apply con il flag --dry-run=true. Eseguire un'esercitazione simulata consente di verificare la presenza di eventuali errori prima che vengano apportate modifiche al cluster:
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml --dry-run=true
  12. Se non sono presenti errori, puoi applicare al cluster i componenti di runtime specifici di Apigee:
    $APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml
  13. Esegui di nuovo check-ready per determinare quando l'upgrade è completato.

Rollback di un upgrade

Per eseguire il rollback di un upgrade precedente:

  1. Ripulisci i job completati per lo spazio dei nomi dell'ambiente di runtime ibrido, dove namespace è lo spazio dei nomi specificato nel file degli override, se ne hai specificato uno. In caso contrario, lo spazio dei nomi predefinito è apigee:
    kubectl delete job -n namespace \
      $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  2. Elimina i job completati per lo spazio dei nomi apigee-system:
    kubectl delete job -n apigee-system \
      $(kubectl get job -n apigee-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  3. Elimina i job completati per lo spazio dei nomi istio-system:
    kubectl delete job -n istio-system \
      $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
  4. Elimina il deployment di Apigee Operators. Questa operazione non avrà alcun effetto sul tuo traffico di runtime:
    kubectl -n apigee-system delete deployment apigee-controller-manager
  5. Modifica la variabile $APIGEECTL_HOME in modo che punti alla directory che contiene la versione originale di apigeectl. Ad esempio:
    export APIGEECTL_HOME=path-to-original-apigeectl-directory
  6. Nella directory principale dell'installazione di cui vuoi eseguire il rollback, esegui apigeectl init quindi apigeectl apply. Assicurati di utilizzare il file delle sostituzioni originale per la versione di destinazione del rollback:
      $APIGEECTL_HOME/apigeectl init -f overrides/original-overrides.yaml
      $APIGEECTL_HOME/apigeectl apply -f overrides/original-overrides.yaml