Apigee Hybrid를 버전 1.13으로 업그레이드

이 절차에서는 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 CloudVMware용 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. 업그레이드를 준비합니다.
  2. Hybrid 런타임 버전 1.13.0을 설치합니다.

버전 1.13으로 업그레이드 준비

Hybrid 설치 백업

  1. 이 안내에서는 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%
  2. 버전 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
  3. Cassandra 백업 및 복구의 안내에 따라 Cassandra 데이터베이스를 백업합니다.
  4. 서비스 계정 인증에 대한 재정의에 서비스 인증서 파일(.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/
  5. TLS 인증서와 키 파일(.crt, .key 또는 .pem)이 $APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/ 디렉터리에 있는지 확인합니다.

Kubernetes 버전 업그레이드

Kubernetes 플랫폼 버전을 확인하고 필요한 경우 Kubernetes 플랫폼을 Hybrid 1.12 및 Hybrid 1.13 모두에서 지원하는 버전으로 업그레이드합니다. 도움이 필요하면 플랫폼 문서를 참조하세요.

Hybrid 1.13.0 런타임 설치

Helm 차트 업그레이드 준비

  1. 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
    
  2. 필요한 경우 cert-manager를 업그레이드합니다.

    cert-manager 버전을 업그레이드해야 하는 경우 다음 명령어를 사용하여 새 버전을 설치합니다.

    kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.1/cert-manager.yaml
    
  3. Apigee 네임스페이스가 apigee가 아닌 경우 apigee-operator/etc/crds/default/kustomization.yaml 파일을 수정하고 namespace 값을 Apigee 네임스페이스로 바꿉니다.
    apiVersion: kustomize.config.k8s.io/v1beta1
    kind: Kustomization
    
    namespace: APIGEE_NAMESPACE
    

    apigee를 네임스페이스로 사용하는 경우 파일을 수정할 필요가 없습니다.

  4. 업데이트된 Apigee CRD를 설치합니다.
    1. 다음 명령어를 실행하여 kubectl 테스트 실행 기능을 사용합니다.

      kubectl apply -k  apigee-operator/etc/crds/default/ --server-side --force-conflicts --validate=false --dry-run=server
      
    2. 테스트 실행 명령어로 유효성을 검사한 후 다음 명령어를 실행합니다.

      kubectl apply -k  apigee-operator/etc/crds/default/ \
        --server-side \
        --force-conflicts \
        --validate=false
      
    3. 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
      
  5. apigee-operatorapigee-system 네임스페이스에서 APIGEE_NAMESPACE로 마이그레이션합니다.
    1. clusterIssuer에 새 네임스페이스를 주석으로 추가합니다.
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='APIGEE_NAMESPACE'
      
    2. apigee-operator의 출시 이름을 변경하려면 clusterIssuer에 새 출시 버전 이름을 주석으로 추가합니다.
      kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-name='APIGEE_OPERATOR_RELEASE_NAME'
      
  6. 두 컨트롤러가 조정되지 않도록 apigee-system 네임스페이스에 있는 기존 Apigee Operator 배포 복제본을 0으로 업데이트합니다.
    kubectl scale deployment apigee-controller-manager -n apigee-system --replicas=0
    
  7. 두 컨트롤러가 조정되지 않도록 apigee-system 네임스페이스에 있는 기존 Apigee Operator 배포 복제본을 0으로 업데이트합니다.
    kubectl delete mutatingwebhookconfiguration apigee-mutating-webhook-configuration
    kubectl delete validatingwebhookconfiguration apigee-validating-webhook-configuration
    
  8. 클러스터 노드의 라벨을 확인합니다. 기본적으로 Apigee는 cloud.google.com/gke-nodepool=apigee-data 라벨이 있는 노드의 데이터 포드를 예약하고 런타임 포드는 cloud.google.com/gke-nodepool=apigee-runtime 라벨이 있는 노드에 예약됩니다. overrides.yaml 파일에서 노드 풀 라벨을 맞춤설정할 수 있습니다.

    자세한 내용은 전용 노드 풀 구성을 참조하세요.

Apigee Hybrid Helm 차트 설치

  1. 그렇지 않은 경우에는 APIGEE_HELM_CHARTS_HOME 디렉터리로 이동합니다. 해당 디렉터리에서 다음 명령어를 실행합니다.
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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
    
  7. 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
    
  8. 환경을 업그레이드합니다.

    한 번에 환경 하나만 설치해야 합니다. --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
    
  9. 환경 그룹(virtualhosts)을 업그레이드합니다.
    1. 한 번에 환경 그룹(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
      
    2. 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
      
  10. 모든 설치가 성공적으로 업그레이드되었는지 확인한 후 apigee-system 네임스페이스에서 이전 apigee-operator 출시 버전을 삭제합니다.
    1. 이전 operator 버전을 제거합니다.
      helm delete operator -n apigee-system
      
    2. apigee-system 네임스페이스를 삭제합니다.
      kubectl delete namespace apigee-system
      
  11. 삭제된 클러스터 범위 리소스를 다시 설치하려면 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 연산자 엔드포인트를 가리키도록 다시 생성됩니다.

  1. 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
    
  2. 모든 차트를 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
    
  3. apigee-system 네임스페이스를 만듭니다.
    kubectl create namespace apigee-system
    
  4. 리소스 주석을 다시 apigee-system 네임스페이스에 패치합니다.
    kubectl annotate --overwrite clusterIssuer apigee-ca-issuer meta.helm.sh/release-namespace='apigee-system'
    
  5. 출시 이름도 변경한 경우 주석을 operator 출시 이름으로 업데이트합니다.
    kubectl annotate --overwrite cluseterIssuer apigee-ca-issuer meta.helm.sh/release-name='operator'
    
  6. apigee-operatorapigee-system 네임스페이스에 다시 설치합니다.
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.12_OVERRIDES_FILE
    
  7. 이전 CRD를 재설치하여 CRD를 되돌립니다.
    kubectl apply -k apigee-operator/etc/crds/default/ \
      --server-side \
      --force-conflicts \
      --validate=false
    
  8. APIGEE_NAMESPACE 네임스페이스에서 apigee-operator 출시 버전을 삭제하여 롤백 프로세스를 완료합니다.
    helm uninstall operator -n APIGEE_NAMESPACE
    
  9. operator가 제거되면 clusterIssuer와 같은 일부 클러스터 범위 리소스가 삭제됩니다. 다음 명령어를 사용하여 다시 설치합니다.
    helm upgrade operator apigee-operator/ \
      --install \
      --namespace apigee-system \
      --atomic \
      -f 1.12_OVERRIDES_FILE