Kf 업그레이드

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

업그레이드 절차의 일부로 Kf 설치에서 최신 버전의 Kf 연산자를 사용하는지 확인합니다.

  • 현재 Kf 버전을 Kf v2.4.1로 업그레이드할 수 있는지 확인합니다.
  • Kf v2.4.1로 업그레이드합니다.
  • 종속 항목을 업그레이드합니다(필요한 경우).

시작하기 전에

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

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

업그레이드 준비

대상 클러스터에 연결

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

현재 Kf CLI와 서버 버전이 일치하는지 확인

kf debug를 실행하고 Kf CLI와 Kf 서버 버전이 일치하는지 검사합니다.

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

Kf 클라이언트와 Kf 서버 값이 일치하지 않지만 서버 버전이 v2.3.x이면 Kf v2.4.1 CLI를 설치한 후 작업을 계속합니다.

Kf 서버 값이 v2.3.x 이전이면 먼저 Kf v2.3.x로 증분식으로 업그레이드한 후 작업을 계속해야 합니다.

업그레이드하기 전에 Kf가 정상인지 확인

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

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

FAIL 또는 Error: environment failed checks 메시지가 표시되면 kf doctor 출력의 안내를 따르거나 문제 해결 가이드를 참조하여 문제를 해결하고 성공할 때까지 명령어를 재시도합니다.

선택적으로 맞춤설정을 수행한 경우 Kf configmap을 백업합니다.

  1. 다음 명령어를 실행하여 config-defaults configmap의 백업을 만듭니다.

    kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
  2. 다음 명령어를 실행하여 config-secrets configmap의 백업을 만듭니다.

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

Kf 연산자 업그레이드

Kf 연산자는 처음에 버전 2.4.0의 일부로 출시되었습니다.

  • 2.4.0을 설치할 때 Kf 연산자를 이미 설치한 경우 2.4.1로 업그레이드할 때 이를 업그레이드만 하면 됩니다.

    Kf 연산자 업그레이드를 참조하세요.

  • 2.3.2에서 업그레이드하는 경우 연산자로 관리되는 Kf로 업그레이드하려면 2.4.1 버전의 Kf 연산자를 설치해야 합니다.

    Kf 연산자 설치를 참조하세요.

현재 Kf 연산자 업그레이드

Kf 연산자는 자동으로 업그레이드를 수행합니다.

  1. 연산자 yaml을 적용합니다.

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

Kf 연산자 처음 설치

다음 단계를 수행하여 연산자 관리 Kf로 업그레이드합니다.

  1. 연산자 yaml을 적용합니다.

    kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
  2. 기본값 사용 또는 맞춤설정 유지 중에서 선택합니다.

    1. 기본값을 사용하여 업그레이드할 kfsystem.yaml을 준비합니다.

      kfsystem.yaml 파일을 다운로드하고 아래 변수를 입력한 후 업그레이드할 kfsystem.yaml을 자동으로 준비할 파일과 동일한 디렉터리에서 명령어를 실행합니다.

      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. 맞춤설정을 보존하면서 업그레이드할 kfsystem.yaml을 준비합니다.

      1. kfsystem.yaml 파일을 다운로드합니다.

      2. 다음 명령어를 실행하여 config-defaults configmap의 백업을 만듭니다.

        kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
      3. 다음 명령어를 실행하여 config-secrets configmap의 백업을 만듭니다.

        kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
      4. 현재 config-defaults 및 config-secrets configmaps를 검사하고 kfsystem.yaml에서 해당 설정을 찾습니다.

      5. config-secretsconfig-defaults의 기존 설정을 복사합니다. config-secretsconfig-defaults의 모든 설정은 kfsystem.yaml에서 찾을 수 있습니다. 이제 googleProjectId 필드가 필요합니다.

      6. wi.googleServiceAccount 필드는 config-secrets의 전체 서비스 계정이지만 kfsystem의 경우 서픽스를 삭제해야 합니다. 예를 들어 ${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.comkfsystem.yaml에서 ${CLUSTER_NAME}-sa가 됩니다.

      7. 설정을 복사한 후 kfsystemenabled 필드를 true로 변경합니다.

      8. kfsystem.yaml에 변경사항을 저장합니다.

      9. Kf에 대한 연산자 구성:

        kubectl apply -f kfsystem.yaml

Kf 종속 항목 업그레이드

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

    kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
  2. Cloud Service Mesh를 업그레이드합니다.

    1. Cloud Service Mesh 1.9 업그레이드 가이드의 단계를 따릅니다.
  3. Config Connector를 업그레이드합니다.

    1. 필수 구성 커넥터 연산자 tar 파일을 다운로드합니다.

    2. tar 파일의 압축을 풉니다.

      tar zxvf release-bundle.tar.gz
    3. 클러스터에 Config Connector 연산자를 설치합니다.

      kubectl apply -f operator-system/configconnector-operator.yaml
    4. 구성 커넥터를 처음 설치하는 경우 Config Connector 연산자를 구성합니다.

      1. 다음 YAML을 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. 클러스터에 구성을 적용합니다.

        kubectl apply -f configconnector.yaml
    5. 계속하기 전에 구성 커넥터가 완전히 설치되었는지 확인합니다.

      • 구성 커넥터는 cnrm-system이라는 네임스페이스에서 모든 구성요소를 실행합니다. 다음 명령어를 실행하여 Pod가 준비되었는지 확인합니다.

        kubectl wait -n cnrm-system --for=condition=Ready pod --all
      • 구성 커넥터가 올바르게 설치된 경우 출력은 다음과 유사합니다.

        pod/cnrm-controller-manager-0 condition met
    6. Config Connector를 처음 설치하는 경우 워크로드 아이덴티티를 설정합니다.

      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

Kf v2.4.1 CLI로 업그레이드

  1. CLI를 설치합니다.

    Linux

    이 명령어는 시스템의 모든 사용자에 대해 Kf CLI를 설치합니다. Cloud Shell 탭의 안내에 따라 직접 설치합니다.

    gcloud storage 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

    이 명령어는 시스템의 모든 사용자에 대해 kf를 설치합니다.

    gcloud storage 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

    이 명령어는 bash를 사용하는 경우 Cloud Shell 인스턴스에 kf를 설치합니다. 다른 셸의 경우 지침을 수정해야 할 수 있습니다.

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

    kf를 현재 디렉터리에 다운로드합니다. 현재 디렉터리 이외의 다른 곳에서 호출하려는 경우 경로에 추가합니다.

    gcloud storage cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
  2. Kf CLI 및 Kf 서버 버전이 일치하는지 확인합니다.

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

Kf가 성공적으로 업그레이드되었는지 확인

  1. Kf 연산자를 처음 설치하는 경우 연산자가 설치되었는지 확인합니다.

    kubectl get deployment -n appdevexperience appdevexperience-operator

    아래 예시 출력과 같이 연산자가 표시되지 않으면 Kf 연산자 처음 설치 단계를 검토합니다.

    NAME                        READY   UP-TO-DATE   AVAILABLE   AGE
    appdevexperience-operator   1/1     1            1           1h
    
  2. doctor를 실행하여 새로 설치된 버전이 정상인지 확인합니다.

    kf doctor --retries=20

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

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

  3. config-defaults 또는 config-secrets를 맞춤설정한 경우 전달되었는지 확인합니다.

    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
    

확인 단계가 통과되면 클러스터가 성공적으로 업그레이드된 것입니다. 문제가 있으면 지원 페이지에서 안내를 검토하세요.