이 문서에서는 Helm 차트를 사용하여 Apigee Hybrid v1.10을 설치하는 단계별 프로세스를 안내합니다.
버전
Apigee Hybrid Helm 차트는 Apigee Hybrid v1.10.x와 함께 사용됩니다. 하이브리드 출시 버전 목록은 Apigee Hybrid 출시 버전 내역을 참조하세요.
기본 요건
- Apigee Hybrid 1.10.5
- Helm v3.10 이상
-
다음 위치에서 Apigee Hybrid Helm 차트 저장소에 대한 액세스 권한:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
- gcloud CLI
- Apigee Hybrid 설치를 위한 Google Cloud 프로젝트입니다. 프로젝트 만들기 및 관리를 참조하세요.
- Apigee Hybrid 설치를 위한 Kubernetes 클러스터. 다음을 참조하세요.
범위
- 이 출시 버전은 Apigee Hybrid 버전 1.10.5만 지원합니다.
-
이 출시 버전에서는 다음을 지원합니다.
- 신규 Apigee Hybrid 설치
- 버전 1.10.5로 업그레이드되고 Apigee Hybrid Helm 마이그레이션 도구를 사용하여 Helm 관리로 마이그레이션된 기존 Apigee Hybrid 설치
- 이 출시 버전에서는 다음을 지원합니다.
지원되는 Kubernetes 플랫폼 및 버전
플랫폼 | 버전 |
---|---|
GKE | 1.24, 1.25, 1.26 |
AKS | 1.24, 1.25, 1.26 |
EKS | 1.24, 1.25, 1.26 |
OpenShift | 4.11, 4.12 |
제한사항
-
Helm 차트는 CRD를 완벽하게 지원하지 않으므로
kubectl -k
명령어를 사용하여 설치하고 업그레이드합니다. Google은 Kubernetes 관리 관련 커뮤니티 및 Google 권장사항을 따르는 것을 목표로 합니다. Helm을 통한 CRD 배포는 아직 광범위한 지원이나 이러한 모델에 대한 요청이 권장되는 커뮤니티 상태에 도달하지 않았습니다. 따라서 이 문서의 설명대로kubectl
을 사용하여 Apigee CRD를 관리해야 합니다. -
apigeectl
에서는 서비스 계정과 인증서의overrides.yaml
전체에 걸쳐 파일을 사용했습니다. 하지만 Helm은 차트 디렉터리 외부에 있는 파일을 참조할 수 없습니다. 서비스 계정 및 인증서 파일에 다음 옵션 중 하나를 선택합니다.- 각 차트 디렉터리에 관련 파일 복사본 배치
-
차트 디렉터리 내에 각 파일이나 폴더에 대한 심볼릭 링크 만들기. Helm은 차트 디렉터리 외부에서 심볼릭 링크를 따르지만 다음과 같은 경고를 출력합니다.
apigee-operator/gsa -> ../gsa
-
Kubernetes 보안 비밀 사용. 예를 들어 서비스 계정의 경우 다음과 같습니다.
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \ -n apigee
-
다음을 바꿉니다.
- SECRET_NAME을 개발자가 만든 Kubernetes 보안 비밀의 이름으로 바꿉니다.
- CLOUD_IAM_FILE_NAME.json을 다운로드한 JSON 파일의 이름으로 바꿉니다.
지원되는 Kubernetes 플랫폼 및 버전
지원되는 플랫폼 목록은 Apigee Hybrid 지원 플랫폼 표의 v1.10 열을 참조하세요.
권한 필요
다음 표에는 Kubernetes 및 Apigee에 필요한 리소스와 권한이 나와 있습니다.
이 표를 필터링하려면 카테고리 선택, 검색어 입력 또는 열 제목을 클릭하여 정렬 중에서 하나 이상을 수행합니다.
카테고리 | 리소스 | 리소스 유형 | Kubernetes RBAC 권한 |
---|---|---|---|
Datastore | apigeedatastores.apigee.cloud.google.com |
Apigee | create delete patch update |
Datastore | certificates.cert-manager.io |
Kubernetes | create delete patch update |
Datastore | cronjobs.batch |
Kubernetes | create delete patch update |
Datastore | jobs.batch |
Kubernetes | create delete patch update |
Datastore | secrets |
Kubernetes | create delete patch update |
환경 | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete patch update |
환경 | secrets |
Kubernetes | create delete patch update |
환경 | serviceaccounts |
Kubernetes | create delete patch update |
인그레스 관리자 | certificates.cert-manager.io |
Kubernetes | create delete patch update |
인그레스 관리자 | configmaps |
Kubernetes | create delete patch update |
인그레스 관리자 | deployments.apps |
Kubernetes | create get delete patch update |
인그레스 관리자 | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete patch update |
인그레스 관리자 | issuers.cert-manager.io |
Kubernetes | create delete patch update |
인그레스 관리자 | serviceaccounts |
Kubernetes | create delete patch update |
인그레스 관리자 | services |
Kubernetes | create delete patch update |
연산자 | apigeedatastores.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeedatastores.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeedatastores.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | apigeedeployments.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeedeployments.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeedeployments.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | apigeeenvironments.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeeenvironments.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeeenvironments.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | apigeeissues.apigee.cloud.google.com |
Apigee | create delete get list watch |
연산자 | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeeorganizations.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeeorganizations.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | apigeeredis.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeeredis.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeeredis.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | apigeerouteconfigs.apigee.cloud.google.com |
Apigee | get list |
연산자 | apigeeroutes.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeeroutes.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeeroutes.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | apigeetelemetries.apigee.cloud.google.com |
Apigee | create delete get list patch update watch |
연산자 | apigeetelemetries.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | apigeetelemetries.apigee.cloud.google.com/status |
Apigee | get list patch update |
연산자 | cassandradatareplications.apigee.cloud.google.com |
Apigee | get list patch update watch |
연산자 | cassandradatareplications.apigee.cloud.google.com/finalizers |
Apigee | get patch update |
연산자 | cassandradatareplications.apigee.cloud.google.com/status |
Apigee | get patch update |
연산자 | *.networking.x.k8s.io |
Kubernetes | get list watch |
연산자 | apiservices.apiregistration.k8s.io |
Kubernetes | create delete get list patch update watch |
연산자 | certificates.cert-manager.io |
Kubernetes | create delete get list patch update watch |
연산자 | certificates.cert-manager.io/finalizers |
Kubernetes | create delete get list patch update watch |
연산자 | certificatesigningrequests.certificates.k8s.io |
Kubernetes | create delete get update watch |
연산자 | certificatesigningrequests.certificates.k8s.io/approval |
Kubernetes | create delete get update watch |
연산자 | certificatesigningrequests.certificates.k8s.io/status |
Kubernetes | create delete get update watch |
연산자 | clusterissuers.cert-manager.io |
Kubernetes | create get watch |
연산자 | clusterrolebindings.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
연산자 | clusterroles.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
연산자 | configmaps |
Kubernetes | create delete get list patch update watch |
연산자 | configmaps/status |
Kubernetes | get patch update |
연산자 | cronjobs.batch |
Kubernetes | create delete get list patch update watch |
연산자 | customresourcedefinitions.apiextensions.k8s.io |
Kubernetes | get list watch |
연산자 | daemonsets.apps |
Kubernetes | create delete get list patch update watch |
연산자 | deployments.apps |
Kubernetes | get list watch |
연산자 | deployments.extensions |
Kubernetes | get list watch |
연산자 | destinationrules.networking.istio.io |
Kubernetes | create delete get list patch update watch |
연산자 | endpoints |
Kubernetes | get list watch |
연산자 | endpointslices.discovery.k8s.io |
Kubernetes | get list watch |
연산자 | events |
Kubernetes | create delete get list patch update watch |
연산자 | gateways.networking.istio.io |
Kubernetes | create delete get list patch update watch |
연산자 | horizontalpodautoscalers.autoscaling |
Kubernetes | create delete get list patch update watch |
연산자 | ingressclasses.networking.k8s.io |
Kubernetes | get list watch |
연산자 | ingresses.networking.k8s.io/status |
Kubernetes | all verbs |
연산자 | issuers.cert-manager.io |
Kubernetes | create delete get list patch update watch |
연산자 | jobs.batch |
Kubernetes | create delete get list patch update watch |
연산자 | leases.coordination.k8s.io |
Kubernetes | create get list update |
연산자 | namespaces |
Kubernetes | create get list watch |
연산자 | nodes |
Kubernetes | get list watch |
연산자 | peerauthentications.security.istio.io |
Kubernetes | create delete get list patch update watch |
연산자 | persistentvolumeclaims |
Kubernetes | create delete get list patch update watch |
연산자 | persistentvolumes |
Kubernetes | get list watch |
연산자 | poddisruptionbudgets.policy |
Kubernetes | create delete get list patch update watch |
연산자 | pods |
Kubernetes | create delete get list patch update watch |
연산자 | pods/exec |
Kubernetes | create |
연산자 | replicasets.apps |
Kubernetes | create delete get list patch update watch |
연산자 | replicasets.extensions |
Kubernetes | get list watch |
연산자 | resourcequotas |
Kubernetes | create delete get list patch update watch |
연산자 | rolebindings.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
연산자 | roles.rbac.authorization.k8s.io |
Kubernetes | create delete get list patch update watch |
연산자 | secrets |
Kubernetes | batch create delete get list patch update watch |
연산자 | securitycontextconstraints.security.openshift.io |
Kubernetes | create get list |
연산자 | serviceaccounts |
Kubernetes | create delete get list patch update watch |
연산자 | services |
Kubernetes | batch create delete get list patch update watch |
연산자 | signers.certificates.k8s.io |
Kubernetes | approve |
연산자 | statefulsets.apps |
Kubernetes | create delete get list patch update watch |
연산자 | subjectaccessreviews.authorization.k8s.io |
Kubernetes | create get list |
연산자 | tokenreviews.authentication.k8s.io |
Kubernetes | create |
연산자 | virtualservices.networking.istio.io |
Kubernetes | create delete get list patch update watch |
조직 | apigeeorganizations.apigee.cloud.google.com |
Apigee | create delete patch update |
조직 | secrets |
Kubernetes | create delete patch update |
조직 | serviceaccounts |
Kubernetes | create delete patch update |
Redis | apigeeredis.apigee.cloud.google.com |
Apigee | create delete patch update |
Redis | secrets |
Kubernetes | create delete patch update |
원격 분석 | apigeetelemetry.apigee.cloud.google.com |
Apigee | create delete patch update |
원격 분석 | secrets |
Kubernetes | create delete patch update |
원격 분석 | serviceaccounts |
Kubernetes | create delete patch update |
가상 호스트 | apigeerouteconfigs.apigee.cloud.google.com |
Apigee | create delete patch update |
가상 호스트 | secrets |
Kubernetes | create delete patch update |
참조:
설치 준비
Apigee Hybrid 차트는 Google Artifact Registry에서 호스팅됩니다.
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
Apigee Helm 차트 가져오기
pull
명령어를 사용하여 다음 명령어로 모든 Apigee Hybrid Helm 차트를 로컬 스토리지에 복사합니다.
export CHART_REPO=oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-chartsexport CHART_VERSION=1.10.5
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
Apigee Hybrid 설치
설치 시퀀스 개요
다음 그림과 같이 구성요소 설치가 왼쪽에서 오른쪽으로 수행됩니다. 그림에서 수직으로 누적된 구성요소를 순서에 관계없이 함께 설치할 수 있습니다. 구성요소를 설치하면 해당 구성요소를 언제든지 개별적으로 업데이트할 수 있습니다(예: 복제본, 메모리, CPU 등).
Helm 차트로 Apigee Hybrid 설치 준비
-
apigee
리소스에 사용할 네임스페이스를 만듭니다. 이는overrides.yaml
파일의 네임스페이스 필드와 일치해야 합니다.overrides.yaml
에 없으면 기본값은apigee
입니다.네임스페이스가 이미 있는지 확인합니다.
kubectl get namespace apigee
네임스페이스가 있으면 출력에 다음이 포함됩니다.
NAME STATUS AGE apigee Active 1d
-
네임스페이스가 아직 없으면 이를 만듭니다.
kubectl create namespace apigee
-
Apigee 연산자 리소스에 사용되는
apigee-system
네임스페이스를 만듭니다.네임스페이스가 이미 있는지 확인합니다.
kubectl get namespace apigee-system
-
네임스페이스가 아직 없으면 이를 만듭니다.
kubectl create namespace apigee-system
-
서비스 계정을 만들고 여기에 적절한 IAM 역할을 할당합니다. Apigee Hybrid는 다음 서비스 계정을 사용합니다.
서비스 계정 IAM 역할 apigee-cassandra
스토리지 객체 관리자 apigee-logger
로그 작성자 apigee-mart
Apigee Connect 에이전트 apigee-metrics
모니터링 측정항목 작성자 apigee-runtime
역할 필요 없음 apigee-synchronizer
Apigee 동기화 관리자 apigee-udca
Apigee 애널리틱스 에이전트 apigee-watcher
Apigee 런타임 에이전트 Apigee는
apigee-operator/etc/tools
디렉터리에create-service-account
도구를 제공합니다.APIGEE_HELM_CHARTS_HOME/ └── apigee-operator/ └── etc/ └── tools/ └── create-service-account
이 도구는 서비스 계정을 만들고 각 계정에 IAM 역할을 할당하며 각 계정에 JSON 형식의 인증서 파일을 다운로드합니다.
- 서비스 계정 인증서 파일을 다운로드할 디렉터리를 만듭니다. SERVICE_ACCOUNTS_PATH 대신 다음 명령어에 이를 지정합니다.
-
다음 옵션을 사용하여 단일 명령어로 모든 서비스 계정을 만들 수 있습니다.
APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/tools/create-service-account --env prod --dir SERVICE_ACCOUNTS_PATH
- 재정의 파일의 서비스 계정 이름을 나열합니다.
ls service-accounts
my_project-apigee-cassandra.json my_project-apigee-runtime.json my_project-apigee-logger.json my_project-apigee-synchronizer.json my_project-apigee-mart.json my_project-apigee-udca.json my_project-apigee-metrics.json my_project-apigee-watcher.json
자세한 내용은 다음을 참조하세요.
- 설치하기 전에
overrides.yaml
파일에서 설정을 확인합니다.instanceID: UNIQUE_ID_TO_IDENTIFY_THIS_CLUSTER namespace: apigee # required for Helm charts installation # By default, logger and metrics are enabled and requires below details # Google Cloud project and cluster gcp: projectID: PROJECT_ID region: REGION k8sCluster: name: CLUSTER_NAME region: REGION org: ORG_NAME envs: - name: "ENV_NAME" serviceAccountPaths: runtime: "PATH_TO_RUNTIME_SVC_ACCOUNT" synchronizer: "PATH_TO_SYNCHRONIZER_SVC_ACCOUNT" udca: "PATH_TO_UDCA_SVC_ACCOUNT" ingressGateways: - name: GATEWAY_NAME # maximum 17 characters, eg: "ingress-1". See Known issue 243167389. replicaCountMin: 1 replicaCountMax: 2 svcType: LoadBalancer virtualhosts: - name: ENV_GROUP_NAME selector: app: apigee-ingressgateway ingress_name: GATEWAY_NAME sslSecret: SECRET_NAME mart: serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT" logger: enabled: TRUE_FALSE # lowercase without quotes, eg: true serviceAccountPath: "PATH_TO_LOGGER_SVC_ACCOUNT" metrics: enabled: TRUE_FALSE # lowercase without quotes, eg: true serviceAccountPath: "PATH_TO_METRICS_SVC_ACCOUNT" udca: serviceAccountPath: "PATH_TO_UDCA_SVC_ACCOUNT" connectAgent: serviceAccountPath: "PATH_TO_MART_SVC_ACCOUNT" watcher: serviceAccountPath: "PATH_TO_WATCHER_SVC_ACCOUNT"
이는 이 Helm 설치에 사용할 동일한 재정의 구성입니다. 자세한 설정은 구성 속성 참조를 확인하세요.
재정의 파일의 더 많은 예시는 6단계: 하이브리드 런타임 구성을 참조하세요.
- 동기화 담당자 액세스를 사용 설정합니다. 이는 Apigee Hybrid를 설치하기 위한 기본 요건입니다.
-
다음 명령어로 동기화 담당자 액세스가 이미 사용 설정되었는지 확인합니다.
export TOKEN=$(gcloud auth print-access-token)
curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME:getSyncAuthorization" \ -d ''
출력이 다음과 같이 표시됩니다.
{ "identities":[ "serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID" ], "etag":"BwWJgyS8I4w=" }
-
출력에 서비스 계정 ID가 포함되어 있지 않으면 동기화 담당자 액세스를 사용 설정합니다. 이 태스크를 수행하려면 계정에 Apigee 조직 관리자 IAM 역할(
roles/apigee.admin
)이 있어야 합니다.curl -X POST -H "Authorization: Bearer $TOKEN" \ -H "Content-Type:application/json" \ "https://apigee.googleapis.com/v1/organizations/ORG_NAME:setSyncAuthorization" \ -d '{"identities":["'"serviceAccount:SYNCHRONIZER_SERVICE_ACCOUNT_ID"'"]}'
자세한 내용은 Apigee Hybrid 설치 문서의 7단계: 동기화 담당자 액세스 사용 설정을 참조하세요.
-
- 다음 명령어를 사용하여 인증서 관리자를 설치합니다.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
-
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 2023-10-09T14:48:30Z apigeedeployments.apigee.cloud.google.com 2023-10-09T14:48:30Z apigeeenvironments.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeissues.apigee.cloud.google.com 2023-10-09T14:48:31Z apigeeorganizations.apigee.cloud.google.com 2023-10-09T14:48:32Z apigeeredis.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeerouteconfigs.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeeroutes.apigee.cloud.google.com 2023-10-09T14:48:33Z apigeetelemetries.apigee.cloud.google.com 2023-10-09T14:48:34Z cassandradatareplications.apigee.cloud.google.com 2023-10-09T14:48:35Z
-
-
클러스터 노드의 기존 라벨을 확인합니다. 기본적으로 Apigee는
cloud.google.com/gke-nodepool=apigee-data
라벨이 있는 노드의 데이터 포드를 예약하고 런타임 포드는cloud.google.com/gke-nodepool=apigee-runtime
라벨이 있는 노드에 예약됩니다.overrides.yaml
파일에서 노드 풀 라벨을 맞춤설정할 수 있습니다.자세한 내용은 전용 노드 풀 구성을 참조하세요.
Apigee Hybrid Helm 차트 설치
Apigee 연산자/컨트롤러를 설치합니다.
helm upgrade operator apigee-operator/ \ --install \ --namespace apigee-system \ --atomic \ -f overrides.yaml
Apigee 운영자 설치를 확인합니다.
helm ls -n apigee-system
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION operator apigee-system 3 2023-06-26 00:42:44.492009 -0800 PST deployed apigee-operator-1.10.5 1.10.5
가용성을 확인하여 실행 중인지 확인합니다.
kubectl -n apigee-system get deploy apigee-controller-manager
NAME READY UP-TO-DATE AVAILABLE AGE apigee-controller-manager 1/1 1 1 7d20h
-
Apigee 데이터 스토어를 설치합니다.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
상태를 확인하여
apigeedatastore
가 실행 중인지 확인합니다.kubectl -n apigee get apigeedatastore default
NAME STATE AGE default running 2d
-
Apigee 원격 분석을 설치합니다.
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
상태를 확인하여 실행 중인지 확인합니다.
kubectl -n apigee get apigeetelemetry apigee-telemetry
NAME STATE AGE apigee-telemetry running 2d
-
Apigee Redis를 설치합니다.
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
상태를 확인하여 실행 중인지 확인합니다.
kubectl -n apigee get apigeeredis default
NAME STATE AGE default running 2d
-
Apigee 인그레스 관리자를 설치합니다.
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
가용성을 확인하여 실행 중인지 확인합니다.
kubectl -n apigee 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 \ --atomic \ -f overrides.yaml
해당 조직의 상태를 확인하여 실행 중인지 확인합니다.
kubectl -n apigee get apigeeorg
NAME STATE AGE apigee-org1-xxxxx running 2d
-
환경을 설치합니다.
한 번에 환경 하나만 설치해야 합니다.
--set env=
ENV_NAME으로 환경을 지정합니다.helm upgrade apigee-env-ENV_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f overrides.yaml
해당 환경의 상태를 확인하여 실행 중인지 확인합니다.
kubectl -n apigee get apigeeenv
NAME STATE AGE GATEWAYTYPE apigee-org1-dev-xxx running 2d
- TLS 인증서를 만듭니다. Apigee Hybrid 구성에 런타임 인그레스 게이트웨이에 대한 TLS 인증서를 제공해야 합니다.
-
인증서를 만듭니다. 프로덕션 환경에서는 서명된 인증서를 사용해야 합니다. 인증서와 키 쌍 또는 Kubernetes 보안 비밀을 사용할 수 있습니다.
데모 및 테스트 설치에서 런타임 게이트웨이는 자체 서명 사용자 인증 정보를 수락할 수 있습니다. 다음 예시에서는 자체 서명 사용자 인증 정보를 생성하는 데 openssl이 사용됩니다.
openssl req -nodes -new -x509 \ -keyout PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.key \ -out PATH_TO_CERTS_DIRECTORY/keystore_ENV_GROUP_NAME.pem \ -subj '/CN='YOUR_DOMAIN'' -days 3650
자세한 내용은 5단계: TLS 인증서 만들기를 참조하세요.
-
인증서를 참조할 Kubernetes 보안 비밀을 만듭니다.
kubectl create secret generic NAME \ --from-file="cert=PATH_TO_CRT_FILE" \ --from-file="key=PATH_TO_KEY_FILE" \ -n apigee
-
-
가상 호스트를 설치합니다.
한 번에 환경 그룹(virtualhost) 하나만 설치해야 합니다.
--set envgroup=
ENV_GROUP_NAME으로 환경 그룹을 지정합니다.# repeat the following command for each env group mentioned in the overrides.yaml file helm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
그러면 Apigee 감시자가 컨트롤 플레인에서 환경 그룹 관련 세부정보를 가져오면 내부적으로 ApigeeRoute(AR)를 만드는 ApigeeRouteConfig(ARC)가 생성됩니다. 따라서 해당 AR의 상태가 실행 중인지 확인합니다.
kubectl -n apigee get arc
NAME STATE AGE apigee-org1-dev-egroup 2d
kubectl -n apigee get ar
NAME STATE AGE apigee-org1-dev-egroup-xxxxxx running 2d
Apigee Hybrid를 사용하는 Helm 차트의 추가 사용 사례
Cassandra 백업 및 복원
- 백업을 사용 설정하려면 다음 안내를 따르세요.
-
overrides.yaml
파일에서 Cassandra 백업 세부정보를 업데이트합니다.cassandra: backup: enabled: true serviceAccountPath: PATH_TO_GSA_FILE dbStorageBucket: BUCKET_LINK schedule: "45 23 * * 6"
-
apigee-datastore
차트에서 Helm 업그레이드를 실행합니다.helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
- 마찬가지로 복원을 사용 설정하려면 다음 안내를 따르세요.
-
overrides.yaml
파일에서 Cassandra 복원 세부정보를 업데이트합니다.cassandra: restore: enabled: true snapshotTimestamp: TIMESTAMP serviceAccountPath: PATH_TO_GSA_FILE cloudProvider: "CSI"
-
apigee-datastore
차트에서 Helm 업그레이드를 실행합니다.helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f overrides.yaml
-
Cassandra 백업 및 복원에 대한 자세한 내용은 Cassandra 백업 개요를 참조하세요.
멀티 리전 확장
Helm 차트를 사용하는 멀티 리전 설정에는 현재 apigeectl
절차와 동일한 기본 요건이 필요합니다. 자세한 내용은 멀티 리전 배포에 대한 기본 요건을 참조하세요.
멀티 리전에 하이브리드를 구성하는 절차는 멀티 리전 시드 호스트를 구성하고 Kubernetes 클러스터와 컨텍스트를 설정하는 프로세스를 구성하는 기존 절차와 동일합니다.
첫 번째 리전 구성
다음 단계를 수행하여 첫 번째 리전을 구성하고 두 번째 리전 구성을 준비합니다.
- 멀티 리전에 Apigee Hybrid 구성의 단계를 수행하여 플랫폼에서 멀티 리전 시드 호스트를 구성합니다.
-
첫 번째로 생성된 리전에 대해 apigee 네임스페이스에서 포드를 가져옵니다.
kubectl get pods -o wide -n apigee
- 이 리전에서 Cassandra의 멀티 리전 시드 호스트 주소를 식별합니다(예:
10.0.0.11
). -
두 번째 리전의
overrides.yaml
파일을 준비하고 다음과 같이 시드 호스트 IP 주소를 추가합니다.cassandra: multiRegionSeedHost: "SEED_HOST_IP_ADDRESS" datacenter: "DATACENTER_NAME" rack: "RACK_NAME" clusterName: CLUSTER_NAME hostNetwork: false
다음을 바꿉니다.
- SEED_HOST_IP_ADDRESS를 시드 호스트 IP 주소로 바꿉니다(예:
10.0.0.11
). - DATACENTER_NAME을 데이터 센터 이름으로 바꿉니다(예:
dc-2
). - RACK_NAME을 랙 이름으로 바꿉니다(예:
ra-1
). - CLUSTER_NAME을 Apigee 클러스터 이름으로 바꿉니다. 기본값은
apigeecluster
입니다. 다른 클러스터 이름을 사용하는 경우 cassandra.clusterName의 값을 지정해야 합니다. 이 값은 모든 리전에서 동일해야 합니다.
- SEED_HOST_IP_ADDRESS를 시드 호스트 IP 주소로 바꿉니다(예:
두 번째 리전 구성
새 리전을 설정하려면 다음 안내를 따르세요.
-
리전 2에
cert-manager
를 설치합니다.kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.1/cert-manager.yaml
- 기존 클러스터에서 새 클러스터로 인증서를 복사합니다.
새 CA 루트는 Cassandra 및 mTLS용 기타 하이브리드 구성요소에서 사용됩니다.
따라서 클러스터 간에 일관된 인증서가 있어야 합니다.
-
컨텍스트를 원래 네임스페이스로 설정합니다.
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
현재 네임스페이스 구성을 파일로 내보냅니다.
kubectl get namespace apigee -o yaml > apigee-namespace.yaml
-
apigee-ca
보안 비밀을 파일로 내보냅니다.kubectl -n cert-manager get secret apigee-ca -o yaml > apigee-ca.yaml
-
컨텍스트를 새 리전의 클러스터 이름으로 설정합니다.
kubectl config use-context NEW_CLUSTER_NAME
-
네임스페이스 구성을 새 클러스터로 가져옵니다. 새 리전에서 다른 네임스페이스를 사용하는 경우 파일의 네임스페이스를 업데이트해야 합니다.
kubectl apply -f apigee-namespace.yaml
-
보안 비밀을 새 클러스터로 가져옵니다.
kubectl -n cert-manager apply -f apigee-ca.yaml
-
-
이제 Helm 차트를 사용하여 리전 1에서와 같이 다음 Helm 차트 명령어로 새 리전에 Apigee Hybrid를 설치합니다.
helm upgrade operator apigee-operator \ --install \ --namespace apigee-system \ --atomic -f overrides-DATACENTER_NAME.yaml
helm upgrade datastore apigee-datastore \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade telemetry apigee-telemetry \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade redis apigee-redis \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ingress-manager apigee-ingress-manager \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
helm upgrade ORG_NAME apigee-org \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env mentioned on the overrideshelm upgrade apigee-env-ENV_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f overrides-DATACENTER_NAME.yaml
# repeat the below command for each env group mentioned on the overrideshelm upgrade apigee-virtualhost-ENV_GROUP_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f overrides-DATACENTER_NAME.yaml
- 모든 구성요소가 설치되면 새 데이터 센터의 모든 포드에 Cassandra를 설정합니다. 자세한 내용은 멀티 리전에 Apigee Hybrid 구성을 참조하고 플랫폼을 선택하고 새 리전 설정으로 스크롤한 후 5단계를 찾습니다.
- 데이터 복제가 완료되고 확인되면 시드 호스트를 업데이트합니다.
-
overrides-DATACENTER_NAME.yaml
에서multiRegionSeedHost: 10.0.0.11
가 삭제됨데이터 복제가 설정된 후에는
multiRegionSeedHost
항목이 더 이상 필요하지 않으며, 시간이 지나면서 포드 IP는 변경될 것으로 예상됩니다. -
변경사항을 다시 적용하여 Apigee Datastore CR을 업데이트합니다.
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
이미지를 비공개로 호스팅
공개 Google Cloud 저장소를 사용하는 대신 선택적으로 이미지를 비공개로 호스팅할 수 있습니다. 각 구성요소를 재정의하는 대신 재정의에 허브 세부정보를 추가할 수 있습니다.
hub: PRIVATE_REPO
예를 들어 다음 허브가 제공되면 이미지 경로가 자동으로 확인됩니다.
hub: private-docker-host.com
다음과 같습니다.
## an example of internal component vs 3rd party containers: - name: apigee-udca image: private-docker-host.com/apigee-udca:1.10.5 imagePullPolicy: IfNotPresent containers: - name: apigee-ingressgateway image: private-docker-host.com/apigee-asm-ingress:1.17.2-asm.8-distroless imagePullPolicy: IfNotPresent
Google Cloud 저장소에 호스팅된 Apigee 이미지의 목록을 명령줄에 표시하려면 다음 안내를 따르세요.
./apigee-operator/etc/tools/apigee-pull-push.sh --list
톨러레이션(toleration)
Kubernetes의 taint 및 톨러레이션(toleration) 기능을 사용하려면 각 Apigee Hybrid 구성요소의 tolerations
재정의 속성을 정의해야 합니다.
다음 구성요소는 톨러레이션(toleration) 정의를 지원합니다.
ao
apigeeIngressGateway
cassandra
cassandraSchemaSetup
cassandraSchemaValidation
cassandraUserSetup
connectAgent
istiod
logger
mart
metrics
mintTaskScheduler
redis
runtime
synchronizer
udca
Watcher
이러한 구성요소에 대한 자세한 내용은 구성 속성 참조를 확인하세요.
예를 들어 Apigee 연산자 배포에 톨러레이션(toleration)을 적용하려면 다음 안내를 따르세요.
ao: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600
Cassandra StatefulSet에 톨러레이션(toleration)을 적용하려면 다음 안내를 따르세요.
cassandra: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600
Helm을 사용하여 Apigee Hybrid 제거
특정 업데이트 또는 출시를 제거하려면 helm [uninstall/delete] RELEASE-NAME -n NAMESPACE
명령어를 사용하면 됩니다.
다음 단계에 따라 클러스터에서 Apigee Hybrid를 완전히 제거합니다.
- virtualhosts를 삭제합니다. 각 virtualhost에 대해 다음 명령어를 실행합니다.
helm -n apigee delete VIRTUALHOST_RELEASE-NAME
- 환경을 삭제합니다. 각 환경에 대해 다음 명령어를 실행합니다.
helm -n apigee delete ENV_RELEASE-NAME
- Apigee 조직을 삭제합니다.
helm -n apigee delete ORG_RELEASE-NAME
- 원격 분석을 삭제합니다.
helm -n apigee delete TELEMETRY_RELEASE-NAME
- redis를 삭제합니다.
helm -n apigee delete REDIS_RELEASE-NAME
- 인그레스 관리자를 삭제합니다.
helm -n apigee delete INGRESS_MANAGER_RELEASE-NAME
- 데이터 스토어를 삭제합니다.
helm -n apigee delete DATASTORE_RELEASE-NAME
- 연산자를 삭제합니다.
- 다음을 실행하기 전에 모든 CR이 삭제되었는지 확인합니다.
kubectl -n apigee get apigeeds, apigeetelemetry, apigeeorg, apigreeenv, arc, apigeeredis
- Apigee Operator를 삭제합니다.
helm -n apigee-system delete OPERATOR_RELEASE-NAME
- 다음을 실행하기 전에 모든 CR이 삭제되었는지 확인합니다.
- Apigee Hybrid CRD를 삭제합니다.
kubectl delete -k apigee-operator/etc/crds/default/