버전 1.2.0으로 업그레이드
다음 단계에 따라 Apigee Hybrid를 버전 1.2.0으로 업그레이드합니다.
1단계: Kubernetes 업그레이드 및 출시 패키지 다운로드
- Kubernetes 플랫폼을 다음과 같이 업그레이드합니다. 도움이 필요하면 플랫폼 문서를 참조하세요.
플랫폼 업그레이드할 버전 GKE 1.14.x Anthos 1.2 AKS 1.14.x 사용 중인 운영체제에 해당하는 출시 패키지를 다운로드합니다.
Mac 64비트:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_64.tar.gz
Linux 64비트
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_64.tar.gz
Mac 32비트:
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_mac_32.tar.gz
Linux 32비트
curl -LO \ https://storage.googleapis.com/apigee-release/hybrid/apigee-hybrid-setup/1.2.0/apigeectl_linux_32.tar.gz
2단계: 설치 디렉터리 재구성
- Apigee 하이브리드를 처음 설치할 때 생성된 기본 설치 디렉터리를 확인합니다. 기본 디렉터리는
$APIGEEGTL_HOME
디렉터리가 있는 디렉터리입니다. 다음 예시에서 기본 디렉터리는/Users/myhome/hybrid
입니다.echo $APIGEECTL_HOME /Users/myhome/hybrid/apigeectl
-
다운로드한 gzip 파일 콘텐츠를 Apigee Hybrid 기본 디렉터리에 추출합니다.
tar xvzf filename.tar.gz -C path-to-base-directory
cd
명령어를 사용하여 기본 디렉터리로 이동합니다.-
기본적으로 tar 콘텐츠는 이름에 버전과 플랫폼이 있는 디렉터리로 확장됩니다. 예를 들면
./apigeectl_1.2.0-f7b96a8_linux_64
입니다. - 현재
apigeectl
디렉터리의 이름을 바꿉니다. 예를 들어 현재 버전이 1.1.1인 경우apigeectl
디렉터리의 이름을apigeectl_1.1.1
로 바꿉니다. -
새로 추출된 설치 디렉터리 이름을
apigeectl
로 바꿉니다. 이제$APIGEECTL_HOME
환경이 이 디렉터리로 연결됩니다.
3단계: 재정의 파일 업데이트
- 재정의 파일의 사본을 만들고 나중에 롤백할 때를 대비해서 이전 파일을 보관해둡니다. 다음 단계에서는 재정의 파일을 원하는 대로 변경한 후 이를 클러스터에 적용합니다.
아래 설명된 변경사항에 따라 재정의 파일을 업데이트합니다.
다음은 재정의 파일에서 수행해야 하는 구성 변경사항을 요약해서 보여줍니다. 전체 예시는 요약 다음의 테이블을 참조하세요. 보시는 것처럼
envs[]
속성이 이전 버전과 크게 달라졌습니다.envs[].hostAlias
속성이 삭제되었고 새로운virtualhosts.hostAliases[]
속성으로 대체되었습니다.- 새로운 필수 구성 속성
virtualhosts
를 추가해야 합니다. envs[].sslCertPath
및envs[].sslKeyPath
속성을envs
에서virtualhosts
로 이동해야 합니다.virtualhosts.routingRules
구성 스탠자를 추가해야 합니다.virtualhosts.routingRules
속성은 이전envs[].paths
속성을 대체합니다. 재정의 파일에envs[].paths
가 있으면 이를 삭제해야 합니다. 가상 호스트 구성에 대한 자세한 내용은 가상 호스트 구성을 참조하세요.
아래 테이블은 1.1.1 재정의 파일과 버전 1.2.0 파일 간의 차이점을 보여줍니다. 이 예시는 버전 1.2.0에 대해 수행해야 하는 변경사항의 종류를 보여주기 위한 것입니다.
v1.1.x 구성 v1.2.0 구성 envs: - name: test1 hostAlias: "api.example.com" sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem serviceAccountPaths: synchronizer: ./sa/sync.json udca: ./sa/udca.json paths: uri: prefixes: - /orders - /items - name: test2 hostAlias: "api.example.com" sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem serviceAccountPaths: synchronizer: ./sa/sync.json udca: ./sa/udca.json paths: uri: prefixes: - /v0/hello - /httpbin
virtualhosts: - name: default hostAliases: ["api.example.com"] sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem routingRules: - paths: - /orders - /items env: test1 - paths: - /v0/hello - /httpbin env: test2 envs: - name: test1 serviceAccountPaths: synchronizer: ./sa/synchronizer.json udca: ./sa/udca.json - name: test2 serviceAccountPaths: synchronizer: ./sa/synchronizer.json udca: ./sa/udca.json
4단계: 클러스터에 업그레이드 적용
- 버전 1.1.1 설치에 Apigee Connect를 사용 설정한 경우 배포를 삭제해야 합니다.
- 먼저 Apigee 배포를 나열합니다.
kubectl -n namespace get ad
- Apigee Connect 배포를 삭제합니다.
kubectl -n namespace delete ad apigee-connect-name
- 먼저 Apigee 배포를 나열합니다.
- pod를 나열합니다.
kubectl get pods -n namespace
- 클러스터에서
apigee-cps-setup
pod를 삭제합니다. 이전 명령어로 반환된 것처럼 조직 이름이 포함된 pod의 전체 이름을 사용합니다. 예를 들면 다음과 같습니다.kubectl -n namespace delete pod apigee-cps-setup-org
- 동일한 네임스페이스에서
apigee-cps-create-user
pod를 삭제합니다.kubectl -n namespace delete pod apigee-cps-create-user
- 하이브리드 런타임 네임스페이스에 대해 완료된 작업을 삭제합니다. 여기서 namespace는 재정의 파일에 지정된 네임스페이스(네임스페이스가 있는 경우)입니다. 그렇지 않은 경우 기본 네임스페이스는
apigee
입니다.kubectl delete job -n namespace \ $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
apigee-system
네임스페이스에 대해 완료된 작업을 삭제합니다.kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
istio-system
네임스페이스에 대해 완료된 작업을 삭제합니다.kubectl delete job -n istio-system \ $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
cd
를./hybrid-files
디렉터리에 추가합니다.- 새 버전에 대해
apigeectl
을 초기화합니다.$APIGEECTL_HOME/apigeectl init -f overrides/overrides-file.yaml
- 초기화가 완료되었는지 확인하려면 다음을 확인하세요.
$APIGEECTL_HOME/apigeectl check-ready -f overrides/overrides-file.yaml
check-ready
가 '모든 컨테이너 준비 완료'로 응답하면 '테스트 실행' 설치를 시도할 수 있습니다.--dry-run=true
플래그를 사용하여apply
명령어를 실행합니다. 테스트 실행을 수행하면 클러스터를 실제로 변경하기 전에 오류를 확인할 수 있습니다.$APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml --dry-run=true
- 오류가 없으면 클러스터에 Apigee 관련 런타임 구성요소를 적용할 수 있습니다.
$APIGEECTL_HOME/apigeectl apply -f overrides/overrides-file.yaml
check-ready
를 다시 실행하여 업그레이드가 완료되는 시점을 확인합니다.
업그레이드 롤백
이전 업그레이드를 롤백하려면 다음 단계를 따르세요.
- 하이브리드 런타임 네임스페이스에 대해 완료된 작업을 삭제합니다. 여기서 namespace는 재정의 파일에 지정된 네임스페이스(네임스페이스가 있는 경우)입니다. 그렇지 않은 경우 기본 네임스페이스는
apigee
입니다.kubectl delete job -n namespace \ $(kubectl get job -n namespace -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
apigee-system
네임스페이스에 대해 완료된 작업을 삭제합니다.kubectl delete job -n apigee-system \ $(kubectl get job -n apigee-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
istio-system
네임스페이스에 대해 완료된 작업을 삭제합니다.kubectl delete job -n istio-system \ $(kubectl get job -n istio-system -o=jsonpath='{.items[?(@.status.succeeded==1)].metadata.name}')
- Apigee 연산자 배포를 삭제합니다. 이 작업은 런타임 트래픽에 영향을 주지 않습니다.
kubectl -n apigee-system delete deployment apigee-controller-manager
apigeectl
의 원본 버전이 포함된 디렉터리를 가리키도록$APIGEECTL_HOME
변수를 변경합니다. 예를 들면 다음과 같습니다.export APIGEECTL_HOME=path-to-original-apigeectl-directory
- 롤백할 설치의 루트 디렉터리에서
apigeectl init
을 실행한 다음apigeectl apply
를 실행합니다. 롤백하려는 버전에 원래 재정의 파일을 사용해야 합니다.$APIGEECTL_HOME
/apigeectl init -f overrides/original-overrides.yaml$APIGEECTL_HOME
/apigeectl apply -f overrides/original-overrides.yaml