이 절차에서는 Apigee Hybrid 버전 1.12.x에서 Apigee Hybrid 버전 1.13.0으로 업그레이드하는 방법을 다룹니다.
Apigee Hybrid v1.12의 변경사항
다음 변경사항을 참고하세요.
-
Apigee 네임스페이스의
apigee-operator
: 버전 1.13부터apigee-operator
는 기본적으로 다른 Apigee 하이브리드 구성요소인apigee
와 동일한 Kubernetes 네임스페이스에서 실행됩니다. 네임스페이스의 이름은 무엇이든 지정할 수 있습니다. 이전 버전에서는apigee-operator
가 자체 네임스페이스인apigee-system
에서 실행되어야 했습니다. - Anthos(베어메탈 또는 VMware)가 이제 Google Distributed Cloud(베어메탈 또는 VMware용)로 변경됨: 자세한 내용은 베어메탈용 Google Distributed Cloud 및 VMware용 Google Distributed Cloud의 제품 개요를 참고하세요.
기본 요건
하이브리드 버전 1.13으로 업그레이드하기 전에 설치가 다음 요구사항을 충족하는지 확인하세요.
- Hybrid 설치에서 v1.12 이전 버전을 실행하는 경우 v1.13으로 업그레이드하기 전에 버전 1.12로 업그레이드해야 합니다. Apigee Hybrid 버전 1.12로 업그레이드를 참조하세요.
- Helm 버전 v3.10 이상
kubectl
버전 1.27, 1.28 또는 1.29(권장)- cert-manager 버전 v1.15.1 필요한 경우 아래의 버전으로 업그레이드 준비 섹션에서 cert-manager를 업그레이드합니다.
버전 1.13.0으로 업그레이드 개요
Apigee Hybrid 업그레이드 절차는 다음과 같은 섹션으로 정리됩니다.
버전 1.13으로 업그레이드 준비
Hybrid 설치 백업
- 이 안내에서는 Helm 차트를 설치한 파일 시스템의 디렉터리에 환경 변수 APIGEE_HELM_CHARTS_HOME을 사용합니다. 필요한 경우 디렉터리를 이 디렉터리로 변경하고 다음 명령어를 사용하여 변수를 정의합니다.
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOME
MacOS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOME
Windows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME%
- 버전 1.12
$APIGEE_HELM_CHARTS_HOME/
디렉터리의 백업 복사본을 만듭니다. 모든 백업 프로세스를 사용할 수 있습니다. 예를 들어 다음을 사용하여 전체 디렉터리의tar
파일을 만들 수 있습니다.tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.12-backup.tar.gz $APIGEE_HELM_CHARTS_HOME
- Cassandra 백업 및 복구의 안내에 따라 Cassandra 데이터베이스를 백업합니다.
- 서비스 계정 인증에 대한 재정의에 서비스 인증서 파일(
.json
)을 사용하는 경우 서비스 계정 인증서 파일이 올바른 Helm 차트 디렉터리에 있는지 확인합니다. Helm 차트는 각 차트 디렉터리 외부의 파일을 읽을 수 없습니다.Kubernetes 보안 비밀이나 워크로드 아이덴티티를 사용하여 서비스 계정을 인증하는 경우에는 이 단계가 필요하지 않습니다.
다음 표에서는 설치 유형에 따라 각 서비스 계정 파일의 대상을 보여줍니다.
프로덕션
서비스 계정 기본 파일 이름 Helm 차트 디렉터리 apigee-cassandra
PROJECT_ID-apigee-cassandra.json
$APIGEE_HELM_CHARTS_HOME/apigee-datastore/
apigee-logger
PROJECT_ID-apigee-logger.json
$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
apigee-mart
PROJECT_ID-apigee-mart.json
$APIGEE_HELM_CHARTS_HOME/apigee-org/
apigee-metrics
PROJECT_ID-apigee-metrics.json
$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
apigee-runtime
PROJECT_ID-apigee-runtime.json
$APIGEE_HELM_CHARTS_HOME/apigee-env
apigee-synchronizer
PROJECT_ID-apigee-synchronizer.json
$APIGEE_HELM_CHARTS_HOME/apigee-env/
apigee-udca
PROJECT_ID-apigee-udca.json
$APIGEE_HELM_CHARTS_HOME/apigee-org/
apigee-watcher
PROJECT_ID-apigee-watcher.json
$APIGEE_HELM_CHARTS_HOME/apigee-org/
비프로덕션
다음 디렉터리 각각에
apigee-non-prod
서비스 계정 파일의 사본을 만듭니다.서비스 계정 기본 파일 이름 Helm 차트 디렉터리 apigee-non-prod
PROJECT_ID-apigee-non-prod.json
$APIGEE_HELM_CHARTS_HOME/apigee-datastore/
$APIGEE_HELM_CHARTS_HOME/apigee-telemetry/
$APIGEE_HELM_CHARTS_HOME/apigee-org/
$APIGEE_HELM_CHARTS_HOME/apigee-env/
-
TLS 인증서와 키 파일(
.crt
,.key
또는.pem
)이$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/
디렉터리에 있는지 확인합니다.
Kubernetes 버전 업그레이드
Kubernetes 플랫폼 버전을 확인하고 필요한 경우 Kubernetes 플랫폼을 Hybrid 1.12 및 Hybrid 1.13 모두에서 지원하는 버전으로 업그레이드합니다. 도움이 필요하면 플랫폼 문서를 참조하세요.
Hybrid 1.13.0 런타임 설치
Helm 차트 업그레이드 준비
- 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-charts
export CHART_VERSION=1.13.0
helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untar
helm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
- 필요한 경우 cert-manager를 업그레이드합니다.
cert-manager 버전을 업그레이드해야 하는 경우 다음 명령어를 사용하여 새 버전을 설치합니다.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.1/cert-manager.yaml
- Apigee 네임스페이스가
apigee
가 아닌 경우apigee-operator/etc/crds/default/kustomization.yaml
파일을 수정하고namespace
값을 Apigee 네임스페이스로 바꿉니다.apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: APIGEE_NAMESPACE
apigee
를 네임스페이스로 사용하는 경우 파일을 수정할 필요가 없습니다. - 업데이트된 Apigee CRD를 설치합니다.
-
다음 명령어를 실행하여
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-operator
를apigee-system
네임스페이스에서 APIGEE_NAMESPACE로 마이그레이션합니다.clusterIssuer
에 새 네임스페이스를 주석으로 추가합니다.kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='APIGEE_NAMESPACE'
apigee-operator
의 출시 이름을 변경하려면clusterIssuer
에 새 출시 버전 이름을 주석으로 추가합니다.kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='APIGEE_OPERATOR_RELEASE_NAME'
- 두 컨트롤러가 조정되지 않도록
apigee-system
네임스페이스에 있는 기존 Apigee Operator 배포 복제본을 0으로 업데이트합니다.kubectl scale deployment apigee-controller-manager -n apigee-system --replicas=0
- 두 컨트롤러가 조정되지 않도록
apigee-system
네임스페이스에 있는 기존 Apigee Operator 배포 복제본을 0으로 업데이트합니다.kubectl delete mutatingwebhookconfiguration apigee-mutating-webhook-configuration
kubectl delete validatingwebhookconfiguration apigee-validating-webhook-configuration
-
클러스터 노드의 라벨을 확인합니다. 기본적으로 Apigee는
cloud.google.com/gke-nodepool=apigee-data
라벨이 있는 노드의 데이터 포드를 예약하고 런타임 포드는cloud.google.com/gke-nodepool=apigee-runtime
라벨이 있는 노드에 예약됩니다.overrides.yaml
파일에서 노드 풀 라벨을 맞춤설정할 수 있습니다.자세한 내용은 전용 노드 풀 구성을 참조하세요.
Apigee Hybrid Helm 차트 설치
- 그렇지 않은 경우에는
APIGEE_HELM_CHARTS_HOME
디렉터리로 이동합니다. 해당 디렉터리에서 다음 명령어를 실행합니다. - Apigee Operator/Controller를 업그레이드합니다.
테스트 실행을 수행합니다.
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run
차트를 업그레이드합니다.
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.13.0 1.13.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
차트를 업그레이드합니다.
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
차트를 업그레이드합니다.
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
차트를 업그레이드합니다.
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
차트를 업그레이드합니다.
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
차트를 업그레이드합니다.
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
해당 조직의 상태를 확인하여 실행 중인지 확인합니다.
kubectl -n APIGEE_NAMESPACE get apigeeorg
NAME STATE AGE apigee-org1-xxxxx 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
- ENV_RELEASE_NAME은 이전에
apigee-env
차트를 설치한 이름입니다. Hybrid v1.10에서는 일반적으로apigee-env-ENV_NAME
입니다. Hybrid v1.11 이상에서는 일반적으로 ENV_NAME입니다. - ENV_NAME은 업그레이드하는 환경의 이름입니다.
- OVERRIDES_FILE은 v.1.13.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-org1-dev-xxx 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
ENV_GROUP_RELEASE_NAME은 이전에
apigee-virtualhost
차트를 설치한 이름입니다. Hybrid v1.10에서는 일반적으로apigee-virtualhost-ENV_GROUP_NAME
입니다. Hybrid v1.11 이상에서는 일반적으로 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-xxxxxx 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-operator
의 네임스페이스 변경사항으로 인해 검증 및 변형 허용 후크를 삭제하려면 추가 단계를 수행합니다. 이렇게 해서 apigee-system
네임스페이스에 apigee-operator
를 다시 설치하면 올바른 Apigee 연산자 엔드포인트를 가리키도록 다시 생성됩니다.
apigee-system
네임스페이스에서 롤백할 때 충돌을 방지하기 위해 두 컨트롤러가 커스텀 리소스를 조정하지 않도록 Apigee에서 기존 Apigee 연산자 배포 복제본을 0으로 업데이트합니다.kubectl scale deployment apigee-controller-manager -n APIGEE_NAMESPACE --replicas=0
kubectl delete mutatingwebhookconfiguration \ apigee-mutating-webhook-configuration-APIGEE_NAMESPACE
kubectl delete validatingwebhookconfiguration \ apigee-validating-webhook-configuration-APIGEE_NAMESPACE
- 모든 차트를
apigee-virtualhost
에서apigee-datastore
로 되돌립니다. 다음 명령어는 이전 버전(v1.12.x)의 차트를 사용한다고 가정합니다.각 환경 그룹에 대해 다음 명령을 실행합니다.
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.12_OVERRIDES_FILE
각 환경에 대해 다음 명령어를 실행합니다.
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f 1.12_OVERRIDES_FILE
apigee-operator
를 제외한 나머지 차트를 되돌립니다.helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f 1.12_OVERRIDES_FILE
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f 1.12_OVERRIDES_FILE
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f 1.12_OVERRIDES_FILE
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f 1.12_OVERRIDES_FILE
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f 1.12_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 cluseterIssuer 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.12_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.12_OVERRIDES_FILE