Kf 업그레이드

이 문서에서는 기존 Kf 설치 및 종속 항목을 업그레이드하는 방법을 설명합니다.

시작하기 전에

필요한 사항은 다음과 같습니다.

  • Kf가 설치된 기존 클러스터
  • gcloud, kf, kubectl이 설치된 머신에 대한 액세스 권한

기존 Kf 설치 검사

  1. 클러스터와 상호작용하기 위해 사용자 인증 정보를 가져옵니다.

    gcloud container clusters get-credentials CLUSTER_NAME \
      --zone CLUSTER_ZONE \
      --project CLUSTER_PROJECT_ID
  2. kf debug를 실행하고 Kf CLI와 Kf 서버 버전이 일치하는지 검사합니다.

    • CLI 버전은 Kf Client 아래에 나열됩니다.
    • Kf 서버 버전은 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
    ...
    

    Kf 클라이언트 및 Kf 서버 값이 일치하지 않는 경우 서버 버전과 일치하는 Kf CLI 버전을 다운로드하고 설치한 후 새 CLI를 사용하여 다시 확인합니다. 계속하려면 CLI 버전이 서버 버전과 일치해야 합니다.

  3. kf doctor를 실행하여 클러스터의 상태를 확인합니다. 계속 진행하려면 모든 테스트를 통과해야 합니다.

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

    Error: environment failed checks 메시지가 표시되면 doctor 출력의 안내에 따라 문제를 해결하고 성공할 때까지 명령어를 다시 시도합니다.

업그레이드

Kf를 업그레이드하려면 다음 단계를 수행합니다.

  • 로컬 환경 및 업그레이드를 준비합니다.
  • Kf의 종속 항목을 업그레이드합니다.
  • Kf를 업그레이드하고 업그레이드가 성공했는지 확인합니다.

업그레이드 준비

  1. kf version을 실행하여 Kf의 현재 버전을 가져옵니다.

    $ kf version
    kf version v2.0.0 linux
    
  2. 다운로드 페이지에서 Kf의 최신 버전을 찾아봅니다.

    1. Kf 출시 YAML 파일을 다운로드하고 kf-release.yaml로 저장합니다.

    2. OS의 Kf 버전을 다운로드하고 이름을 kf-next로 지정합니다.

    3. chmod를 실행하여 kf-next를 실행 가능하게 만듭니다.

      chmod +x kf-next
    4. 다운로드한 버전이 설치할 Kf 버전과 일치하도록 kf-next version을 실행합니다.

      $ kf-next version
      kf version v2.1.0 linux
      
  3. 다음 명령어를 실행하여 config-defaults configmap의 백업을 만듭니다.

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  4. kubectl diff -f kf-release.yaml을 실행하고 업그레이드가 클러스터에 적용할 변경사항을 검사합니다.

  5. 원하는 변경사항을 유지하도록 kf-release.yaml을 수정합니다.

    예를 들어 Kf의 v2.0.0에서 config-defaults configmap 속성 spaceDefaultToV3Stack을 false로 설정하면 v2.1.0 출시의 기본값은 true입니다.

  6. kubectl diff -f kf-release.yaml을 다시 실행하여 변경사항이 올바른 출력을 생성하는지 확인합니다.

Kf 종속 항목 업그레이드

  1. 다운로드 페이지를 열고 업그레이드할 Kf 버전의 종속 항목 매트릭스를 찾습니다.

  2. Tekton을 업그레이드합니다.

    1. Tekton 출시 페이지를 엽니다.

    2. Kf 종속 항목 매트릭스에 나열된 Tekton의 버전을 찾습니다.

    3. '설치 한 줄 명령어' 제목 아래의 명령어를 실행하여 Tekton을 업그레이드합니다.

  3. Cloud Service Mesh를 업그레이드합니다.

    1. Cloud Service Mesh 업그레이드 가이드를 엽니다.

    2. 버전 드롭다운에서 Kf 종속 항목 매트릭스에 나열된 Cloud Service Mesh 버전을 선택합니다.

    3. 가이드에 따라 ASM을 업그레이드합니다.

Kf 업그레이드 및 확인

  1. 수정된 출시 구성을 사용하여 업그레이드된 Kf 구성요소를 설치합니다.

    kubectl apply -f kf-release.yaml
  2. doctor를 실행하여 새로 설치된 버전이 정상인지 확인합니다.

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

    이 명령어는 클러스터 확인을 여러 번 실행합니다. 새 컨트롤러가 시작되는 도중에 시도가 여러 번 실패하는 것은 정상입니다.

    명령어가 Error: environment failed checks 메시지와 함께 실패하는 경우 doctor 출력의 안내에 따라 문제를 해결하고 성공할 때까지 명령어를 다시 시도합니다.

  3. 시스템의 기존 kf CLI를 kf-next CLI로 바꿉니다.

    chmod +x kf-next
    mv kf-next $(which kf)
  4. config-defaults-backup.yaml 파일을 kubectl diff -f config-defaults-backup.yaml과 비교하여 클러스터가 여전히 올바르게 구성되었는지 확인합니다.

    예를 들어 이전 Kf 버전의 모든 변경사항을 유지하면서 다음 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