업그레이드 절차의 일부로 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을 백업합니다.
다음 명령어를 실행하여
config-defaults
configmap의 백업을 만듭니다.kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
다음 명령어를 실행하여
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 연산자는 자동으로 업그레이드를 수행합니다.
연산자 yaml을 적용합니다.
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
Kf 연산자 처음 설치
다음 단계를 수행하여 연산자 관리 Kf로 업그레이드합니다.
연산자 yaml을 적용합니다.
kubectl apply -f "https://storage.googleapis.com/kf-releases/v2.4.1/operator.yaml"
기본값 사용 또는 맞춤설정 유지 중에서 선택합니다.
기본값을 사용하여 업그레이드할
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}'}}}}}]"
맞춤설정을 보존하면서 업그레이드할
kfsystem.yaml
을 준비합니다.kfsystem.yaml
파일을 다운로드합니다.다음 명령어를 실행하여
config-defaults
configmap의 백업을 만듭니다.kubectl get configmap config-defaults -o yaml -n kf > config-defaults-backup.yaml
다음 명령어를 실행하여
config-secrets
configmap의 백업을 만듭니다.kubectl get configmap config-secrets -o yaml -n kf > config-secrets-backup.yaml
현재 config-defaults 및 config-secrets configmaps를 검사하고
kfsystem.yaml
에서 해당 설정을 찾습니다.config-secrets
및config-defaults
의 기존 설정을 복사합니다.config-secrets
및config-defaults
의 모든 설정은kfsystem.yaml
에서 찾을 수 있습니다. 이제googleProjectId
필드가 필요합니다.wi.googleServiceAccount
필드는config-secrets
의 전체 서비스 계정이지만kfsystem
의 경우 서픽스를 삭제해야 합니다. 예를 들어${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com
은kfsystem.yaml
에서${CLUSTER_NAME}-sa
가 됩니다.설정을 복사한 후
kfsystem
의enabled
필드를true
로 변경합니다.kfsystem.yaml
에 변경사항을 저장합니다.Kf에 대한 연산자 구성:
kubectl apply -f kfsystem.yaml
Kf 종속 항목 업그레이드
Tekton을 업그레이드합니다.
kubectl apply -f "https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.23.0/release.yaml"
Cloud Service Mesh를 업그레이드합니다.
- Cloud Service Mesh 1.9 업그레이드 가이드의 단계를 따릅니다.
Config Connector를 업그레이드합니다.
필수 구성 커넥터 연산자 tar 파일을 다운로드합니다.
tar 파일의 압축을 풉니다.
tar zxvf release-bundle.tar.gz
클러스터에 Config Connector 연산자를 설치합니다.
kubectl apply -f operator-system/configconnector-operator.yaml
구성 커넥터를 처음 설치하는 경우 Config Connector 연산자를 구성합니다.
다음 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
클러스터에 구성을 적용합니다.
kubectl apply -f configconnector.yaml
계속하기 전에 구성 커넥터가 완전히 설치되었는지 확인합니다.
구성 커넥터는
cnrm-system
이라는 네임스페이스에서 모든 구성요소를 실행합니다. 다음 명령어를 실행하여 Pod가 준비되었는지 확인합니다.kubectl wait -n cnrm-system --for=condition=Ready pod --all
구성 커넥터가 올바르게 설치된 경우 출력은 다음과 유사합니다.
pod/cnrm-controller-manager-0 condition met
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로 업그레이드
CLI를 설치합니다.
Linux
이 명령어는 시스템의 모든 사용자에 대해 Kf CLI를 설치합니다. Cloud Shell 탭의 안내에 따라 직접 설치합니다.
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
이 명령어는 시스템의 모든 사용자에 대해
kf
를 설치합니다.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
이 명령어는
bash
를 사용하는 경우 Cloud Shell 인스턴스에kf
를 설치합니다. 다른 셸의 경우 지침을 수정해야 할 수 있습니다.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
kf
를 현재 디렉터리에 다운로드합니다. 현재 디렉터리 이외의 다른 곳에서 호출하려는 경우 경로에 추가합니다.gsutil cp gs://kf-releases/v2.4.1/kf-windows.exe kf.exe
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 ...
- CLI 버전은
Kf가 성공적으로 업그레이드되었는지 확인
Kf 연산자를 처음 설치하는 경우 연산자가 설치되었는지 확인합니다.
kubectl get deployment -n appdevexperience appdevexperience-operator
아래 예시 출력과 같이 연산자가 표시되지 않으면 Kf 연산자 처음 설치 단계를 검토합니다.
NAME READY UP-TO-DATE AVAILABLE AGE appdevexperience-operator 1/1 1 1 1h
doctor
를 실행하여 새로 설치된 버전이 정상인지 확인합니다.kf doctor --retries=20
이 명령어는 클러스터 확인을 여러 번 실행합니다. 새 컨트롤러가 시작되는 도중에 시도가 여러 번 실패하는 것은 정상입니다.
명령어가
Error: environment failed checks
메시지와 함께 실패하는 경우doctor
출력의 안내에 따라 문제를 해결하고 성공할 때까지 명령어를 다시 시도합니다.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
확인 단계가 통과되면 클러스터가 성공적으로 업그레이드된 것입니다. 문제가 있으면 지원 페이지에서 안내를 검토하세요.