本文档将指导您完成使用 Helm 图表安装 Apigee Hybrid v1.10 的分步过程。
版本
Apigee Hybrid Helm 图表用于 Apigee Hybrid v1.10.x。如需查看 Hybrid 版本列表,请参阅 Apigee Hybrid 版本历史记录。
前提条件
- Apigee Hybrid 1.10.4
- Helm v3.10+
-
有权访问 Apigee Hybrid Helm 图表存储库:
oci://us-docker.pkg.dev/apigee-release/apigee-hybrid-helm-charts
- gcloud CLI
- 创建和管理项目
- 用于 Apigee Hybrid 安装的 Kubernetes 集群。请参阅:
范围
- 此版本仅支持 Apigee Hybrid 1.10.4 版。
-
此版本支持:
- 新的 Apigee Hybrid 安装。
- 现有的 Apigee Hybrid 安装升级到 1.10.4 版,并使用 Apigee Hybrid Helm 迁移工具迁移到 Helm 管理。
- 此版本支持:
支持的 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
命令来安装和升级它们。我们的目标是遵循有关 Kubernetes 管理的社区和 Google 最佳实践。通过 Helm 进行的 CRD 部署尚未达到社区状态,在社区状态时我们会看到广泛的支持或对此模型的请求。因此,应使用kubectl
管理 Apigee CRD,如本文档中所述。 -
在
apigeectl
中,我们在overrides.yaml
中一直使用服务账号和证书文件。但是,Helm 不支持引用图表目录之外的文件。为服务账号和证书文件选择以下选项之一:- 在每个图表目录中放入相关文件的副本
-
在每个图表目录中为每个文件或文件夹创建符号链接。Helm 将打开图表目录之外的符号链接,但将输出如下警告:
apigee-operator/gsa -> ../gsa
-
使用 Kubernetes Secret。例如,对于服务账号:
kubectl create secret generic SECRET_NAME \ --from-file="client_secret.json=CLOUD_IAM_FILE_NAME.json" \ -n apigee
-
进行以下替换:
- 将 SECRET_NAME 替换为您创建的 Kubernetes Secret 的名称。
- 将 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 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 | 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.4
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
-
创建服务账号并为其分配适当的 IAM 角色。Apigee Hybrid 使用以下服务账号:
服务账号 IAM 角色 apigee-cassandra
Storage Object Admin apigee-logger
Logs Writer apigee-mart
Apigee Connect Agent apigee-metrics
Monitoring Metric Writer apigee-runtime
无需角色 apigee-synchronizer
Apigee Synchronizer Manager apigee-udca
Apigee Analytics Agent apigee-watcher
Apigee Runtime Agent 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 步:配置 Hybrid 运行时。
- 启用同步器访问权限。这是安装 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 Organization Admin 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 步:启用同步器访问权限。
-
- 使用以下命令安装 Cert Manager:
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 会将数据 Pod 安排到带有
cloud.google.com/gke-nodepool=apigee-data
标签的节点上,并将运行时 Pod 安排到带有cloud.google.com/gke-nodepool=apigee-runtime
标签的节点上。您可以在overrides.yaml
文件中自定义节点池标签。如需了解详情,请参阅配置专用节点池。
安装 Apigee Hybrid Helm 图表
安装 Apigee Operator/Controller:
helm upgrade operator apigee-operator/ \ --install \ --create-namespace \ --namespace apigee-system \ --atomic \ -f overrides.yaml
验证 Apigee Operator 安装:
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.4 1.10.4
通过检查可用性来验证它已启动并正在运行:
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 Secret。
对于演示和测试安装,运行时网关可以接受自签名凭据。在以下示例中,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 Secret 以引用证书:
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
这会创建 ApigeeRouteConfig (ARC),当 Apigee watcher 从控制平面拉取环境组相关详细信息时,ARC 会在内部创建 ApigeeRoute (AR)。因此,请检查相应 AR 的状态是否为 running:
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
Helm 图表和 Apigee Hybrid 的其他应用场景
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
过程相同的前提条件。如需了解详情,请参阅多区域部署的前提条件。
为多区域配置 Hybrid 的过程与现有过程中一直到配置多区域种子主机以及设置 Kubernetes 集群和上下文的过程相同。
配置第一个区域
按照以下步骤配置第一个区域,并准备配置第二个区域:
- 按照为多区域配置 Apigee Hybrid 中的步骤在平台上配置多区域种子主机。
-
对于创建的第一个区域,获取 apigee 命名空间中的 Pod:
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
- 为您的服务账号创建 Kubernetes Secret。
- 为您的入站流量证书创建 Kubernetes Secret。
- 将证书从现有集群复制到新集群。
Cassandra 和其他混合组件会将新 CA 根用于 mTLS。因此,务必确保集群具有一致的证书。
-
将上下文设置为原始命名空间:
kubectl config use-context ORIGINAL_CLUSTER_NAME
-
将当前命名空间配置导出到文件:
kubectl get namespace apigee -o yaml > apigee-namespace.yaml
-
将
apigee-ca
Secret 导出到文件: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 图表命令将 Apigee Hybrid 安装到新区域中(如同区域 1 中的操作):
helm upgrade operator apigee-operator \ --install \ --create-namespace \ --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
- 安装所有组件后,在新数据中心的所有 Pod 上设置 Cassandra。如需查看相关说明,请参阅为多区域配置 Apigee Hybrid,选择您的平台,滚动到设置新区域,然后找到第 5 步:
- 数据复制完成且通过验证后,更新种子主机:
-
从
overrides-DATACENTER_NAME.yaml
中移除multiRegionSeedHost: 10.0.0.11
。 -
重新应用更改以更新 apigee 数据存储区 CR:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides-DATACENTER_NAME.yaml
-
从
以私密方式托管映像
您可以选择以私密方式托管映像,而不是依赖于公共 Google Cloud 存储库。您可以在替换文件中添加 Hub 详细信息,而不是替换每个组件:
hub: PRIVATE_REPO
例如,如果提供以下 Hub,它会自动解析映像路径:
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.4 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
容忍
如需使用 Kubernetes 的污点和容忍功能,您必须为每个 Apigee Hybrid 组件定义 tolerations
替换属性。
以下组件支持定义容忍:
ao
apigeeIngressGateway
cassandra
cassandraSchemaSetup
cassandraSchemaValidation
cassandraUserSetup
connectAgent
istiod
logger
mart
metrics
mintTaskScheduler
redis
runtime
synchronizer
udca
Watcher
如需详细了解这些组件,请参阅配置属性参考文档。
例如,将容忍应用于 Apigee operator 部署:
ao: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600
将容忍应用于 Cassandra StatefulSet:
cassandra: tolerations: - key: "key1" operator: "Equal" value: "value1" effect: "NoExecute" tolerationSeconds: 3600