Atualizar o Kf

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

Antes de começar

Você precisará dos seguintes itens:

  • Um cluster atual com o Kf instalado.
  • Acesso a uma máquina com gcloud, kf e kubectl instalados.

Validar a instalação do Kf atual

  1. Consiga as 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 a CLI do Kf e as versões do servidor Kf correspondentes.

    • A versão da CLI está listada em Kf Client.
    • A versão do servidor Kf está listada 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 forem correspondentes, faça o download e instale a versão da CLI do Kf que corresponde à versão do servidor e repita a verificação com a nova CLI. A versão da CLI precisa corresponder à versão do servidor antes de você continuar.

  3. Execute kf doctor para verificar o estado do cluster. Todos os testes devem ser aprovados antes de continuar.

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

    Se aparecer a mensagem Error: environment failed checks, siga as instruções na saída doctor para resolver o problema e repita o comando até que ele seja bem-sucedido.

Fazer upgrade

Para fazer upgrade do Kf, siga estas etapas:

  • Prepare o ambiente local e o upgrade.
  • Faça upgrade das dependências do Kf.
  • Faça upgrade do Kf e verifique se o upgrade foi feito.

Preparar o upgrade

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

    $ kf version
    kf version v2.0.0 linux
    
  2. Veja a nova versão do Kf na página de downloads.

    1. Faça o download do arquivo YAML da versão do Kf e salve-o como kf-release.yaml.

    2. Faça o download da versão do Kf para seu SO e nomeie-o como kf-next.

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

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

      $ kf-next version
      kf version v2.1.0 linux
      
  3. Faça um backup 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 o upgrade faria no cluster.

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

    Por exemplo, se você definir a propriedade spaceDefaultToV3Stack do configmap config-defaults como false em v2.0.0 do Kf, a versão v2.1.0 terá o valor padrão de true.

  6. Execute kubectl diff -f kf-release.yaml novamente para garantir que as alterações feitas produzam a saída esperada.

Fazer upgrade de dependências Kf

  1. Abra a página de downloads e encontre a matriz de dependências da versão do Kf do upgrade.

  2. Fazer upgrade do Tekton:

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

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

    3. Execute o comando abaixo do título "Installation one-liner" para fazer upgrade do Tekton.

  3. Faça upgrade do Anthos Service Mesh:

    1. Abra o guia de upgrade do Anthos Service Mesh.

    2. Na lista suspensa da versão, escolha a versão do Anthos Service Mesh listada na matriz de dependências do Kf.

    3. Siga o guia para fazer upgrade do ASM.

Fazer upgrade e verificar Kf

  1. Instale os componentes do Kf atualizados usando a configuração de versão modificada:

    kubectl apply -f kf-release.yaml
    
  2. Execute doctor para garantir a integridade da versão recém-instalada:

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

    O comando executará as verificações de cluster várias vezes. É normal que algumas tentativas falhem enquanto os novos controladores são 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 repita o comando até que a operação seja bem-sucedida.

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

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

    Por exemplo, se você mantiver todas as alterações da versão antiga do Kf e o uso aprovado de um novo pacote de compilação incluído com a próxima versão 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