Atualizar o Kf

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

Como parte do procedimento de upgrade, você garante que a instalação do Kf use a versão mais recente do operador Kf:

  • Confirme que a versão atual do Kf pode fazer upgrade para o Kf v2.4.1.
  • Faça upgrade para o Kf v2.4.1.
  • Faça upgrade das dependências (se necessário).

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.

Como se preparar para o upgrade

Conectar-se ao cluster de destino

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

Confirmar se a CLI atual do Kf e as versões do servidor correspondem

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.3.2
  Server version:                   v1.20.6-gke.1000
  kf["app.kubernetes.io/version"]:  v2.3.2
...

Se os valores do cliente Kf e do servidor Kf não corresponderem, mas a versão do servidor for v2.3.x, instale a Kf v2.4.1 CLI antes de continuar.

Se o valor do servidor Kf for mais antigo do que v2.3.x, você precisará primeiro fazer upgrade incremental para o Kf v2.3.x para continuar.

Confirmar se o Kf está normal antes de fazer upgrade

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 você encontrar alguma mensagem de erro FAIL ou Error: environment failed checks, siga as orientações na saída kf doctor ou veja o guia de solução de problemas para tentar o comando novamente até ele ser bem-sucedido.

Fazer backup opcional dos configmaps do Kf se você tiver feito personalizações

  1. Faça um backup do configmap config-defaults executando:

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
    
  2. Faça um backup do configmap config-secrets executando:

    kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
    

Fazer upgrade do operador Kf

O operador Kf foi lançado como parte das versões 2.4.0:

  • Se você já instalou o operador Kf como parte da instalação da versão 2.4.0, somente é necessário fazer upgrade dele como parte da atualização para 2.4.1.

    Consulte Fazer upgrade do operador Kf.

  • Se você estiver fazendo upgrade da versão 2.3.2, é necessário instalar a versão 2.4.1 do operador Kf para fazer upgrade para o Kf gerenciado por operador.

    Consulte Instalar o operador Kf.

Atualizar o operador do Kf atual

O operador Kf executa upgrades para você.

  1. Aplique o yaml do operador:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"

Instalar o operador Kf pela primeira vez

Execute estas etapas para fazer upgrade para o operador gerenciado Kf.

  1. Aplique o yaml do operador:

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. Escolha entre usar padrões ou reter personalizações:

    1. Prepare kfsystem.yaml para o upgrade usando os padrões:

      Faça o download do arquivo kfsystem.yaml, preencha as variáveis abaixo e execute os comandos no mesmo diretório do arquivo para preparar kfsystem.yaml automaticamente para o 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. Prepare kfsystem.yaml para o upgrade enquanto preserva as personalizações:

      1. Faça o download do arquivo kfsystem.yaml.

      2. Faça um backup do configmap config-defaults executando:

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
        
      3. Faça um backup do configmap config-secrets executando:

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
        
      4. Inspecione os configmaps config-defaults e config-secrets atuais e encontre as configurações correspondentes em kfsystem.yaml.

      5. Copie as configurações atuais de config-secrets e config-defaults. Todas as configurações em config-secrets e config-defaults podem ser encontradas em kfsystem.yaml. O campo googleProjectId agora é obrigatório.

      6. O campo wi.googleServiceAccount é a conta de serviço completa em config-secrets, mas para kfsystem, o sufixo precisa ser removido. Por exemplo, ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com ficaria ${CLUSTER_NAME}-sa em kfsystem.yaml.

      7. Depois que as configurações forem copiadas, altere o campo enabled em kfsystem para true.

      8. Salve as alterações em kfsystem.yaml.

      9. Configure o operador para Kf:

        kubectl apply -f kfsystem.yaml
        

Fazer upgrade de dependências Kf

  1. Fazer upgrade do Tekton:

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
  2. Faça upgrade do Anthos Service Mesh:

    1. Siga as etapas no guia de upgrade do Anthos Service Mesh 1.9.
  3. Faça upgrade do Config Connector.

    1. Faça o download do arquivo .tar exigido do operador do Config Connector:

    2. Extraia o arquivo tar:

      tar zxvf release-bundle.tar.gz
      
    3. Instale o operador do Config Connector no cluster.

      kubectl apply -f operator-system/configconnector-operator.yaml
      
    4. Configure o operador do Config Connector se estiver instalando o Config Connector pela primeira vez.

      1. Copie o seguinte YAML para um arquivo chamado 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. Aplique a configuração a seu cluster.

        kubectl apply -f configconnector.yaml
    5. Verifique se o Config Connector está totalmente instalado antes de continuar.

      • Todos os componentes do Config Connector são executados em um namespace chamado cnrm-system. Execute o comando a seguir para verificar se os pods estão prontos:

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • Se o Config Connector estiver instalado corretamente, a saída será semelhante à seguinte:

        pod/cnrm-controller-manager-0 condition met
    6. Configure a Identidade da carga de trabalho se estiver instalando o Config Connector pela primeira vez.

      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

Fazer upgrade para a CLI v2.4.1 do Kf

  1. Instale a CLI:

    Linux

    Este comando instala a CLI do Kf para todos os usuários no sistema. Siga as instruções na guia do Cloud Shell para instalá-lo só para você.

    gsutil 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

    Este comando instala kf para todos os usuários no sistema.

    gsutil 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

    Este comando instala kf na instância do Cloud Shell se você usar bash. Talvez as instruções precisem ser modificadas para outros shells.

    mkdir -p ~/bin
    gsutil 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

    Este comando faz o download de kf no diretório atual. Adicione-o ao caminho se você quiser chamar de outro local que não seja diretório atual.

    gsutil cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
    
  2. Valide a correspondência entre as versões da CLI e do servidor do Kf:

    • 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.4.1
      Server version:                   v1.20.6-gke.1000
      kf["app.kubernetes.io/version"]:  v2.4.1
    ...
    

Verificar se o Kf foi atualizado

  1. Se estiver instalando o operador Kf pela primeira vez, confirme a instalação do operador:

    kubectl get deployment -n appdevexperience appdevexperience-operator
    

    Se você não vir o operador como na saída de exemplo abaixo, revise as etapas Instalar o operador Kf pela primeira vez.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. Execute doctor para garantir a integridade da versão recém-instalada:

    kf doctor --retries=20
    

    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. Se você fez personalizações em config-defaults ou config-secrets, verifique se elas foram transferidas:

    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
    

Se as etapas de verificação forem aprovadas, o cluster foi atualizado. Se você tiver problemas, consulte a página de suporte para orientações.