Atualize o Kf

Este documento descreve como atualizar uma instalação existente do Kf e as respetivas dependências.

Antes de começar

Vai precisar de:

  • Um cluster existente com o Kf instalado.
  • Acesso a um computador com o gcloud, o kf e o kubectl instalados.

Valide a instalação do Kf existente

  1. Obtenha credenciais de autenticação para interagir com o cluster:

    gcloud container clusters get-credentials CLUSTER_NAME \
      --zone CLUSTER_ZONE \
      --project CLUSTER_PROJECT_ID
  2. Execute kf debug e valide se as versões da CLI Kf e do servidor Kf correspondem.

    • A versão da CLI é apresentada em Kf Client.
    • A versão do servidor Kf é apresentada em kf["app.kubernetes.io/version"].
    $ kf debug
    ...
    Version:
      Kf Client:                        v2.0.0
      Server version:                   v1.17.13-gke.1401
      kf["app.kubernetes.io/version"]:  v2.0.0
    ...
    

    Se os valores do cliente Kf e do servidor Kf não corresponderem, transfira e instale a versão da CLI Kf que corresponde à versão do servidor e, em seguida, repita a verificação com a nova CLI. A versão da CLI tem de corresponder à versão do servidor antes de continuar.

  3. Execute kf doctor para verificar o estado do cluster. Certifique-se de que todos os testes são aprovados antes de continuar.

    $ kf doctor
    ...
    === RUN doctor/user
    === RUN doctor/user/ContainerRegistry
    --- PASS: doctor/user
       --- PASS: doctor/user/ContainerRegistry
    ...
    

    Se vir a mensagem Error: environment failed checks, siga as orientações no resultado doctor para resolver o problema e tente novamente o comando até que seja bem-sucedido.

Atualizar

Para atualizar o Kf, siga estes passos:

  • Prepare o ambiente local e a atualização.
  • Atualize as dependências do Kf.
  • Atualize o Kf e verifique se a atualização foi bem-sucedida.

Prepare a atualização

  1. Execute kf version para obter a versão atual do Kf.

    $ kf version
    kf version v2.0.0 linux
    
  2. Encontre a versão mais recente seguinte do Kf na página de transferências.

    1. Transfira o ficheiro YAML da versão do Kf e guarde-o como kf-release.yaml.

    2. Transfira a versão do Kf para o seu SO e atribua-lhe o nome kf-next.

    3. Execute chmod para tornar kf-next executável:

      chmod +x kf-next
    4. Execute o kf-next version para garantir que a versão transferida corresponde à versão do Kf que quer instalar:

      $ kf-next version
      kf version v2.1.0 linux
      
  3. Faça uma cópia de segurança do configmap config-defaults executando:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  4. Execute kubectl diff -f kf-release.yaml e inspecione as alterações que a atualização faria ao seu cluster.

  5. Edite kf-release.yaml e modifique-o para manter as alterações que quer manter.

    Por exemplo, se definir a propriedade config-defaults configmapspaceDefaultToV3Stack como falsa em v2.0.0 do Kf, a versão v2.1.0 teria o valor predefinido de true.

  6. Execute kubectl diff -f kf-release.yaml novamente para garantir que as alterações feitas produzem o resultado esperado.

Atualize as dependências do Kf

  1. Abra a página de transferências e encontre a matriz de dependências para a versão do Kf para a qual está a fazer a atualização.

  2. Atualize o Tekton:

    1. Abra a página de lançamento do Tekton.

    2. Encontre a versão do Tekton listada na matriz de dependências do Kf.

    3. Execute o comando no título "Instalação de uma linha" para atualizar o Tekton.

  3. Atualize o Cloud Service Mesh:

    1. Abra o guia de atualização do Cloud Service Mesh.

    2. No menu pendente de versões, escolha a versão do Cloud Service Mesh apresentada na matriz de dependências do Kf.

    3. Siga o guia para atualizar o ASM.

Atualize e valide o Kf

  1. Instale os componentes do Kf atualizados através da configuração de lançamento modificada:

    kubectl apply -f kf-release.yaml
  2. Execute doctor para garantir que a versão recém-instalada está em bom estado:

    kf-next doctor --retries=12 --delay=5s

    O comando executa verificações de clusters várias vezes. É normal que algumas das tentativas falhem enquanto os novos controladores estão a ser iniciados.

    Se o comando falhar com a mensagem Error: environment failed checks, siga as orientações na saída doctor para resolver o problema e tente novamente o comando até ter êxito.

  3. Substitua a CLI kf existente no seu sistema pela CLI kf-next.

    chmod +x kf-next
    mv kf-next $(which kf)
  4. Compare o ficheiro config-defaults-backup.yaml com kubectl diff -f config-defaults-backup.yaml para garantir que o cluster continua configurado corretamente.

    Por exemplo, se manteve todas as alterações da sua versão antiga do Kf e aprovou a utilização de um novo buildpack incluído na versão seguinte do 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