이 절차에서는 Apigee Hybrid 버전 1.15.x에서 Apigee Hybrid 버전 1.16.0으로 업그레이드하는 방법을 다룹니다.
Apigee Hybrid v1.15의 변경사항
다음과 같은 변경사항이 있습니다.
-
Seccomp 프로필:
버전 1.16부터 Apigee Hybrid는 이제 런타임 구성요소에 Seccomp 프로필을 적용하는 기능을 제공하여 배포의 보안 상태를 크게 향상합니다. 이 기능을 사용하면 Apigee 관리자와 보안팀이 컨테이너화된 프로세스가 호스트의 커널에 수행할 수 있는 시스템 호출을 제한할 수 있습니다. 컨테이너를 필요한 시스템 호출로만 제한하면 다음 작업을 할 수 있습니다.
- 보안 강화: 컨테이너 브레이크아웃 및 권한 에스컬레이션 위험을 완화합니다.
- 최소 권한 적용: 구성요소가 작동에 필요한 정확한 시스템 호출에만 액세스할 수 있도록 합니다.
- 규정 준수: 엄격한 보안 규정 준수 요구사항을 충족하기 위한 중요한 제어를 제공합니다.
- Apigee Hybrid의 UDCA 삭제: Apigee Hybrid 버전 1.16에서 통합 데이터 수집 에이전트 (UDCA) 구성요소가 삭제되었습니다. 이제 Apigee 컨트롤 플레인으로 분석, 추적, 배포 상태 데이터를 전송하는 작업은 Google Cloud Pub/Sub 기반 데이터 파이프라인을 사용하여 처리됩니다. Pub/Sub 기반 데이터 파이프라인 사용은 Apigee Hybrid 버전 1.14.0부터 기본 데이터 수집 메커니즘이었습니다.
-
apigee-guardrails서비스 계정: v1.16.0에서 Apigee Hybrid는apigee-guardrailsGoogle IAM 서비스 계정을 도입합니다. 이는 설치 중에apigee-operator차트에서 프로젝트에 필요한 모든 API가 사용 설정되어 있는지 확인하는 데 사용됩니다.다음과 같이 표시됩니다.
-
cert-manager 출시 1.18 및 1.19 지원:
Apigee Hybrid v1.16은 cert-manager 출시 1.18 및 출시 1.19를 지원합니다. cert-manager 버전 1.18에서는 트래픽에 영향을 줄 수 있는
Certificate.Spec.PrivateKey.rotationPolicy의 기본값이 변경되었습니다. 이전 버전의 Apigee Hybrid에서 업그레이드하고 cert-manager 출시 1.18 이상으로 업그레이드하는 경우 이 가이드의 cert-manager 업그레이드 절차를 따르세요.
Hybrid 버전 1.16의 기능에 관한 자세한 내용은 Apigee Hybrid v1.16.0 출시 노트를 참고하세요.
기본 요건
Hybrid 버전 1.16으로 업그레이드하기 전에 설치가 다음 요구사항을 충족하는지 확인하세요.
- Hybrid 설치에서 v1.15보다 이전 버전을 실행하는 경우 v1.16으로 업그레이드하기 전에 버전 1.15로 업그레이드해야 합니다. Apigee Hybrid를 버전 1.15로 업그레이드를 참고하세요.
- Helm 버전 v3.14.2 이상
kubectl: Kubernetes 플랫폼 버전에 적합한 지원되는kubectl버전입니다. 지원되는 플랫폼 및 버전:kubectl을 참고하세요.- cert-manager: 지원되는 cert-manager 버전입니다. 지원되는 플랫폼 및 버전: cert-manager를 참조하세요. 필요한 경우 아래의 버전 1.16으로 업그레이드 준비 섹션에서 cert-manager를 업그레이드합니다.
1.16.0으로 업그레이드하기 전 - 제한사항 및 중요 참고사항
Apigee Hybrid 1.16.0에서는 단일 환경에 더 많은 프록시와 공유 흐름을 배포할 수 있는 새로운 환경별 프록시 한도가 도입되었습니다. 환경당 배포할 수 있는 프록시 및 공유 흐름 수에 대한 한도를 알아보려면 한도: API 프록시를 참조하세요. 이 기능은 새로 만든 Hybrid 조직에서만 사용할 수 있으며 업그레이드된 조직에는 적용할 수 없습니다. 이 기능을 사용하려면 Hybrid 1.16.0을 새로 설치하고 새 조직을 만드세요.
이 기능은 2024년 구독 요금제의 일부로만 제공되며 해당 요금제에 따라 부여된 사용 권한이 적용됩니다. 이 기능에 대해 자세히 알아보려면 환경별 프록시 한도 향상을 참조하세요.
Apigee Hybrid 버전 1.16으로 업그레이드하려면 다운타임이 필요할 수 있습니다.
Apigee 컨트롤러를 버전 1.16.0으로 업그레이드하면 모든 Apigee 배포가 순차적으로 재시작됩니다. 지속적 재시작 중에 프로덕션 하이브리드 환경에서 다운타임을 최소화하려면 클러스터를 최소 두 개 이상(동일하거나 다른 리전/데이터 센터에서)을 실행해야 합니다. 모든 프로덕션 트래픽을 단일 클러스터로 전환하고 오프라인으로 업그레이드하려는 클러스터를 적용한 후 업그레이드 절차를 진행합니다. 클러스터마다 이 절차를 반복합니다.
Apigee에서는 업그레이드를 시작하면 프로덕션에 영향을 미칠 가능성을 줄이기 위해 가능한 한 빨리 모든 클러스터를 업그레이드할 것을 권장합니다. 첫 번째 클러스터를 업그레이드한 후 남은 클러스터를 모두 업그레이드해야 하는 기한은 정해져 있지 않습니다. 그러나 나머지 모든 클러스터가 업그레이드될 때까지 Cassandra 백업 및 복원은 혼합 버전에서 작동하지 않습니다. 예를 들어 Hybrid 1.15의 백업을 사용하여 Hybrid 1.16 인스턴스를 복원할 수 없습니다.
업그레이드 중에 관리 영역 변경사항을 완전히 정지할 필요는 없습니다. 관리 영역 변경사항에 대한 모든 임시 정지는 아래의 업그레이드 안내에 나와 있습니다.
버전 1.16.0으로 업그레이드 개요
Apigee Hybrid 업그레이드 절차는 다음과 같은 섹션으로 정리됩니다.
버전 1.16으로 업그레이드 준비
Hybrid 설치 백업
- 이 안내에서는 Helm 차트를 설치한 파일 시스템의 디렉터리에 환경 변수 APIGEE_HELM_CHARTS_HOME을 사용합니다. 필요한 경우 디렉터리를 이 디렉터리로 변경하고 다음 명령어를 사용하여 변수를 정의합니다.
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMacOS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - 버전 1.15
$APIGEE_HELM_CHARTS_HOME/디렉터리의 백업 복사본을 만듭니다. 모든 백업 프로세스를 사용할 수 있습니다. 예를 들어 다음을 사용하여 전체 디렉터리의tar파일을 만들 수 있습니다.tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME - Cassandra 백업 및 복구의 안내에 따라 Cassandra 데이터베이스를 백업합니다.
-
TLS 인증서와 키 파일(
.crt,.key또는.pem)이$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/디렉터리에 있는지 확인합니다.
Kubernetes 버전 업그레이드
Kubernetes 플랫폼 버전을 확인하고 필요한 경우 Kubernetes 플랫폼을 Hybrid 1.15 및 Hybrid 1.16 모두에서 지원하는 버전으로 업그레이드합니다. 도움이 필요하면 플랫폼 문서를 참조하세요.
Apigee Helm 차트를 가져옵니다.
Apigee Hybrid 차트는 Google Artifact Registry에서 호스팅됩니다.
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
pull 명령어를 사용하여 다음 명령어로 모든 Apigee Hybrid Helm 차트를 로컬 스토리지에 복사합니다.
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CHART_VERSION=1.16.0helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
맞춤 Apigee 네임스페이스의 kustomization.yaml 수정
Apigee 네임스페이스가 apigee가 아니면 apigee-operator/etc/crds/default/kustomization.yaml 파일을 수정하고 namespace 값을 Apigee 네임스페이스로 바꿉니다.
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: APIGEE_NAMESPACE
apigee를 네임스페이스로 사용하는 경우 파일을 수정할 필요가 없습니다.
-
다음 명령어를 실행하여
kubectl테스트 실행 기능을 사용합니다.kubectl apply -k apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
-
테스트 실행 명령어로 유효성을 검사한 후 다음 명령어를 실행합니다.
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false
kubectl get crds명령어를 사용하여 설치를 검증합니다.kubectl get crds | grep apigee
출력이 다음과 같이 표시됩니다.
apigeedatastores.apigee.cloud.google.com 2024-08-21T14:48:30Z apigeedeployments.apigee.cloud.google.com 2024-08-21T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2024-08-21T14:48:31Z apigeeissues.apigee.cloud.google.com 2024-08-21T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2024-08-21T14:48:32Z apigeeredis.apigee.cloud.google.com 2024-08-21T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2024-08-21T14:48:33Z apigeeroutes.apigee.cloud.google.com 2024-08-21T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2024-08-21T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2024-08-21T14:48:35Z
클러스터 노드의 라벨을 확인합니다.
기본적으로 Apigee는 cloud.google.com/gke-nodepool=apigee-data 라벨이 있는 노드의 데이터 포드를 예약하고 런타임 포드는 cloud.google.com/gke-nodepool=apigee-runtime 라벨이 있는 노드에 예약됩니다. overrides.yaml 파일에서 노드 풀 라벨을 맞춤설정할 수 있습니다.
자세한 내용은 전용 노드 풀 구성을 참조하세요.
apigee-guardrails 서비스 계정 설정
하이브리드 v1.16부터는 apigee-guardrails 서비스 계정이 apigee-operator 차트를 업그레이드해야 합니다.
다음 절차에서 사용 중인 서비스 계정 인증 유형을 선택합니다.
-
create-service-account가 실행 가능한지 확인합니다. 차트를 방금 다운로드한 경우에는create-service-account파일이 실행 모드가 아닐 수 있습니다. APIGEE_HELM_CHARTS_HOME 디렉터리에서 다음 명령어를 실행합니다../apigee-operator/etc/tools/create-service-account --help
출력에
permission denied가 표시되면 Linux, MacOS, UNIX 또는 Windows Explorer에서chmod를, Windows에서icacls명령어를 사용하여 파일을 실행 가능하게 만들어야 합니다. 예를 들면 다음과 같습니다.chmod +x ./apigee-operator/etc/tools/create-service-account
-
apigee-guardrails서비스 계정을 만듭니다.Kubernetes 보안 비밀
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
이 명령어는
apigee-guardrails서비스 계정을 만들고 키를service-accounts/디렉터리에 다운로드합니다.JSON 파일
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir ./apigee-operator/
이 명령어는
apigee-guardrails서비스 계정을 만들고apigee-operator/차트 디렉터리에 키를 다운로드합니다.Vault
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
이 명령어는
apigee-guardrails서비스 계정을 만들고 키를service-accounts/디렉터리에 다운로드합니다.GKE용 WIF
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
이 명령어는
apigee-guardrails서비스 계정을 만들고 키를apigee-operator/etc/tools/service-accounts/디렉터리에 다운로드합니다. 다운로드한 키 파일은 필요하지 않으므로 삭제해도 됩니다.기타 플랫폼의 WIF
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
이 명령어는
apigee-guardrails서비스 계정을 만들고 키를service-accounts/디렉터리에 다운로드합니다. -
apigee-guardrails서비스 계정의 인증을 설정합니다.Kubernetes 보안 비밀
service-accounts/디렉터리의apigee-guardrails서비스 계정 키 파일을 사용하여 Kubernetes 보안 비밀을 만듭니다.kubectl create secret generic apigee-guardrails-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \ -n $APIGEE_NAMESPACEoverrides.yaml파일에 다음을 추가합니다.guardrails: serviceAccountRef: apigee-guardrails-svc-account
JSON 파일
apigee-operator/디렉터리의apigee-guardrails서비스 계정 키 파일 경로를 사용하여overrides.yaml파일에 다음을 추가합니다.guardrails: serviceAccountPath: $PROJECT_ID-apigee-guardrails.json
Vault
apigee-guardrails서비스 계정 키 파일의 콘텐츠를 사용하여guardrails항목을 추가하도록 Vault 비밀secret/data/apigee/orgsakeys를 업데이트합니다.vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
-
가이드라인의 Kubernetes 서비스 계정 (KSA) 이름은
apigee-operator-guardrails-sa입니다. Vault의apigee-orgsakeys역할에 바인드된 조직별 서비스 계정에 가이드 KSA를 추가합니다.- 현재 KSA 바인딩 목록을 가져옵니다.
vault read auth/kubernetes/role/apigee-orgsakeys
출력은 다음 형식이어야 합니다.
Key Value --- ----- alias_name_source serviceaccount_uid bound_service_account_names BOUND_SERVICE_ACCOUNT_NAMES bound_service_account_namespace_selector n/a bound_service_account_namespaces APIGEE_NAMESPACE
출력에서
BOUND_SERVICE_ACCOUNT_NAMES은 쉼표로 구분된 서비스 계정 이름 목록입니다. 이름 목록에apigee-operator-guardrails-sa를 추가합니다. 예를 들면 다음과 같습니다 (가독성을 위해 추가된 줄바꿈은 제외).apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa, apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0 44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect- agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee- telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod- 2d0221c,apigee-operator-guardrails-sa
- 업데이트된 서비스 계정 이름 목록으로
apigee-orgsakeys역할의 바인딩을 업데이트합니다.vault write auth/kubernetes/role/apigee-orgsakeys \ bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \ bound_service_account_namespaces=APIGEE_NAMESPACE \ policies=apigee-orgsakeys-auth \ ttl=1m
- 현재 KSA 바인딩 목록을 가져옵니다.
-
SecretProviderClass에 '가드레일' 추가spc-org.yaml파일을 수정합니다.spec.parameters.objects아래에 가이드라인 항목을 추가합니다.- objectName: "guardrails" secretPath: "" secretKey: ""SecretProviderClass을 업데이트합니다.kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
GKE용 WIF
가이드라인의 Kubernetes 서비스 계정 (KSA) 이름은
apigee-operator-guardrails-sa입니다. 다음 명령어를 사용하여apigee-guardrailsGoogle 서비스 계정 (GSA)의 바인딩을 만듭니다.gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \ --project $PROJECT_IDoverrides.yaml파일에 다음을 추가합니다.guardrails: gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com
기타 플랫폼의 WIF
가이드라인의 Kubernetes 서비스 계정 (KSA) 이름은
apigee-operator-guardrails-sa입니다. 가드레일 KSA에apigee-guardrailsGoogle 서비스 계정 (GSA)을 가장할 수 있는 액세스 권한을 부여하고 사용자 인증 정보 구성 파일을 사용하도록 재정의를 구성해야 합니다.- 다음 명령어를 사용하여 KSA에 GSA를 가장할 수 있는 액세스 권한을 부여합니다.
템플릿
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
예
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@my-project.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
각 항목의 의미는 다음과 같습니다.
PROJECT_ID: Google Cloud 프로젝트 ID입니다.PROJECT_NUMBER: 워크로드 아이덴티티 풀을 만든 프로젝트의 프로젝트 번호입니다.POOL_ID: 워크로드 아이덴티티 풀 ID입니다.APIGEE_NAMESPACE: Apigee Hybrid가 설치된 네임스페이스입니다.
apigee-guardrails서비스 계정의 사용자 인증 정보 구성 파일을 만듭니다.gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \ --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --credential-source-file=/var/run/service-account/token \ --credential-source-type=text \ --output-file=apigee-guardrails-credential-configuration.json여기서
WORKLOAD_PROVIDER_ID는 워크로드 아이덴티티 풀 공급업체 ID입니다.- 다음 방법 중 하나를 사용하여 워크로드 아이덴티티 제휴를 사용하도록
apigee-guardrails를 구성합니다.WIF: 보안 비밀
-
각 사용자 인증 정보 구성 파일의 사용자 인증 정보 소스 파일을 사용하여 새로운 Kubernetes 보안 비밀을 만듭니다.
kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
-
serviceAccountRef의 값을 새 보안 비밀로 바꿉니다.guardrails: serviceAccountRef: guardrails-workload-identity-secret
WIF: 파일
생성된
apigee-guardrails-credential-configuration.json파일을apigee-operator/차트 디렉터리로 이동합니다.overrides.yaml파일에 다음을 추가합니다.guardrails: serviceAccountPath: apigee-guardrails-credential-configuration.json
WIF: Vault
해당 사용자 인증 정보 소스 파일을 사용하여 Vault에서
guardrails의 서비스 계정 키를 업데이트합니다.SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"
자세한 내용은
Storing service account keys in Hashicorp Vault를 참조하세요. -
각 사용자 인증 정보 구성 파일의 사용자 인증 정보 소스 파일을 사용하여 새로운 Kubernetes 보안 비밀을 만듭니다.
cert-manager 업그레이드
Apigee Hybrid v1.16은 cert-manager 버전 1.16~1.19를 지원합니다. cert-manager 1.18에 트래픽 문제를 일으킬 수 있는 변경사항이 있습니다. cert-manager 버전 1.18에서 Certificate.Spec.PrivateKey.rotationPolicy의 기본값이 Never에서 Always로 변경되었습니다. 업그레이드된 Apigee Hybrid 설치의 경우 트래픽에 문제가 발생할 수 있습니다. 이전 버전에서 하이브리드 v1.16으로 업그레이드할 때는 이 변경사항을 보완하도록 apigee-ca 인증서를 수정하거나 cert-manager 버전을 출시 1.17.x 이하로 유지해야 합니다.
cert-manager를 1.18 또는 1.19로 업그레이드하기 전에 다음 단계 절차에 따라 apigee-ca 인증서를 수정하여 Certificate.Spec.PrivateKey.rotationPolicy 값을 Never로 설정하세요.
-
apigee-ca인증서의 콘텐츠를 확인하여rotationPolicy이 설정되어 있는지 확인합니다.kubectl get certificate apigee-ca -n cert-manager -o yaml
출력에서
spec.privateKey아래의 값을 찾습니다.... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA # Note: rotationPolicy would appear here if it is set. size: 256 secretName: apigee-ca ... -
rotationPolicy가 설정되지 않았거나Always로 설정된 경우apigee-ca인증서를 수정하여rotationPolicy값을Never로 설정합니다.- 먼저 테스트 실행을 수행합니다.
kubectl patch Certificate \ --dry-run=server \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca - 인증서를 패치합니다.
kubectl patch Certificate \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca
- 먼저 테스트 실행을 수행합니다.
-
rotationPolicy값이 이제Never로 설정되었는지 확인합니다.kubectl get certificate apigee-ca -n cert-manager -o yaml
출력은 다음과 비슷하게 표시됩니다.
... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA rotationPolicy: Never size: 256 secretName: apigee-ca ... -
cert-manager를 업그레이드합니다. 다음 명령어를 사용하면 cert-manager v1.19.2가 다운로드되고 설치됩니다.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml
지원되는 버전 목록은 지원되는 플랫폼 및 버전: cert-manager를 참조하세요.
다음과 같이 표시됩니다.
- 알려진 문제 465834046
- cert-manager 버전 1.18: 이제
Certificate.Spec.PrivateKey.rotationPolicy의 기본값이Always입니다
Hybrid 1.16.0 런타임 설치
- 그렇지 않은 경우에는
APIGEE_HELM_CHARTS_HOME디렉터리로 이동합니다. 해당 디렉터리에서 다음 명령어를 실행합니다. - Apigee Operator/Controller를 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
차트를 업그레이드합니다.
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
Apigee 운영자 설치를 확인합니다.
helm ls -n APIGEE_NAMESPACE
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee 3 2024-08-21 00:42:44.492009 -0800 PST deployed apigee-operator-1.16.0 1.16.0
가용성을 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
- Apigee Datastore를 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
차트를 업그레이드합니다.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
상태를 확인하여
apigeedatastore가 실행 중인지 확인합니다.kubectl -n APIGEE_NAMESPACE get apigeedatastore default
NAME STATE AGE default running 2d
- Apigee 원격 분석을 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
차트를 업그레이드합니다.
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
상태를 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
- Apigee Redis를 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
차트를 업그레이드합니다.
helm upgrade redis apigee-redis/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
상태를 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get apigeeredis default
NAME STATE AGE default running 2d
- Apigee 인그레스 관리자를 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
차트를 업그레이드합니다.
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
가용성을 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get deployment apigee-ingressgateway-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-ingressgateway-manager 2/2 2 2 2d
- Apigee 조직을 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
차트를 업그레이드합니다.
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
해당 조직의 상태를 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get apigeeorg
NAME STATE AGE apigee-my-org-my-env running 2d
- 환경을 업그레이드합니다.
한 번에 환경 하나만 설치해야 합니다.
--set env=ENV_NAME으로 환경을 지정합니다.테스트 실행을 수행합니다.
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE \ --dry-run=server
- ENV_RELEASE_NAME은
apigee-env차트 설치 및 업그레이드를 추적하는 데 사용되는 이름입니다. 이 이름은 설치 내 다른 Helm 출시 이름과 다르게 고유해야 합니다. 일반적으로ENV_NAME과 동일합니다. 그러나 환경 이름이 환경 그룹 이름과 같으면 환경과 환경 그룹에 서로 다른 출시 이름(예:dev-env-release및dev-envgroup-release)을 사용해야 합니다. Helm의 출시 버전에 대한 자세한 내용은 Helm 문서의 세 가지 주요 개념을 참조하세요. - ENV_NAME은 업그레이드하는 환경의 이름입니다.
- OVERRIDES_FILE은 v.1.16.0의 새로운 재정의 파일입니다.
차트를 업그레이드합니다.
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace APIGEE_NAMESPACE \ --set env=ENV_NAME \ -f OVERRIDES_FILE
해당 환경의 상태를 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-my-org-my-env running 2d
- ENV_RELEASE_NAME은
-
환경 그룹(
virtualhosts)을 업그레이드합니다.- 한 번에 환경 그룹(virtualhost) 하나만 설치해야 합니다.
--set envgroup=ENV_GROUP_NAME으로 환경 그룹을 지정합니다. override.yaml 파일에 언급된 환경 그룹마다 다음 명령어를 반복합니다.테스트 실행을 수행합니다.
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE \ --dry-run=server
ENV_GROUP_RELEASE_NAME은 이전에
apigee-virtualhost차트를 설치한 이름입니다. 일반적으로 ENV_GROUP_NAME입니다.차트를 업그레이드합니다.
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace APIGEE_NAMESPACE \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE
- ApigeeRoute(AR) 상태를 확인합니다.
virtualhosts를 설치하면 Apigee 감시자가 제어 영역에서 환경 그룹 관련 세부정보를 가져온 후 내부적으로 ApigeeRoute(AR)를 만드는 ApigeeRouteConfig(ARC)가 생성됩니다. 따라서 해당 AR 상태가 실행 중인지 확인합니다.kubectl -n APIGEE_NAMESPACE get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n APIGEE_NAMESPACE get ar
NAME STATE AGE apigee-org1-dev-egroup-123abc running 2d
- 한 번에 환경 그룹(virtualhost) 하나만 설치해야 합니다.
- 모든 설치가 성공적으로 업그레이드되었는지 확인한 후
apigee-system네임스페이스에서 이전apigee-operator버전을 삭제합니다.- 이전
operator버전을 제거합니다.helm delete operator -n apigee-system
apigee-system네임스페이스를 삭제합니다.kubectl delete namespace apigee-system
- 이전
- 삭제된 클러스터 범위 리소스를 다시 설치하려면 Apigee 네임스페이스에서
operator을 다시 업그레이드합니다.helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f overrides.yaml
이전 버전으로 롤백
이전 버전으로 롤백하려면 이전 차트 버전을 사용하여 업그레이드 프로세스를 역순으로 롤백합니다. apigee-virtualhost로 시작하여 apigee-operator로 돌아간 다음 CRD를 되돌립니다.
- 모든 차트를
apigee-virtualhost에서apigee-datastore로 되돌립니다. 다음 명령어는 이전 버전 (v1.15.x)의 차트를 사용한다고 가정합니다.각 환경 그룹에 대해 다음 명령어를 실행합니다.
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.15_OVERRIDES_FILE
각 환경에 대해 다음 명령어를 실행합니다.
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f 1.15_OVERRIDES_FILE
apigee-operator를 제외한 나머지 차트를 되돌립니다.helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
apigee-system네임스페이스를 만듭니다.kubectl create namespace apigee-system
- 리소스 주석을 다시
apigee-system네임스페이스에 패치합니다.kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
- 출시 이름도 변경한 경우 주석을
operator출시 이름으로 업데이트합니다.kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
apigee-operator를apigee-system네임스페이스에 다시 설치합니다.helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f 1.15_OVERRIDES_FILE
- 이전 CRD를 재설치하여 CRD를 되돌립니다.
kubectl apply -k apigee-operator/etc/crds/default/ \ --server-side \ --force-conflicts \ --validate=false
- APIGEE_NAMESPACE 네임스페이스에서
apigee-operator출시를 삭제하여 롤백 프로세스를 완료합니다.helm uninstall operator -n APIGEE_NAMESPACE
operator가 제거되면clusterIssuer와 같은 일부 클러스터 범위 리소스가 삭제됩니다. 다음 명령어를 사용하여 다시 설치합니다.helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f 1.15_OVERRIDES_FILE