此过程涉及从 Apigee Hybrid 1.15.x 版升级到 Apigee Hybrid 1.16.0 版。
相对于 Apigee Hybrid v1.15 的更改
请注意以下更改:
-
Seccomp 配置文件:从 1.16 版开始,Apigee Hybrid 现在能够将 Seccomp 配置文件应用于运行时组件,从而显著提升部署的安全性。借助此功能,Apigee 管理员和安全团队可以限制容器化进程可以对宿主机的内核进行的系统调用。通过将容器限制为仅使用必要的系统调用,您可以:
- 增强安全性:降低容器逃逸和提权的风险。
- 强制执行最小权限:确保组件仅有权访问其运行所需的精确系统调用。
- 满足合规性要求:提供关键控制措施,以满足严格的安全合规性要求。
- 移除 Apigee Hybrid 中的 UDCA:在 Apigee Hybrid 1.16 版中,已移除统一数据收集代理 (UDCA) 组件。现在,向 Apigee 控制平面发送分析、跟踪和部署状态数据的责任由基于 Google Cloud Pub/Sub 的数据流水线来处理。自 Apigee Hybrid 1.14.0 版以来,基于 Pub/Sub 的数据流水线一直是默认的数据收集机制。
-
apigee-guardrails服务账号: 在 v1.16.0 中,Apigee Hybrid 引入了apigee-guardrailsGoogle IAM 服务账号。apigee-operator图表在安装期间使用此参数来检查您的项目中是否已启用所有必需的 API。请参阅:
-
支持 cert-manager 版本 1.18 和 1.19:Apigee Hybrid v1.16 支持 cert-manager 版本 1.18 和版本 1.19。在 cert-manager 版本 1.18 中,
Certificate.Spec.PrivateKey.rotationPolicy的默认值发生了变化,可能会影响流量。如果您要从之前的 Apigee Hybrid 版本升级,并且要升级到 cert-manager 版本 1.18 或更高版本,请按照本指南中的升级 cert-manager 程序操作。
如需详细了解 Hybrid 1.16 版中的功能,请参阅 Apigee Hybrid v1.16.0 版本说明。
前提条件
升级到 Hybrid 1.16 版之前,请确保您的安装满足以下要求:
- 如果 Hybrid 安装运行的版本低于 v1.15,则在升级到 v1.16 之前,您必须先升级到 1.15 版。请参阅将 Apigee Hybrid 升级到 1.15 版。
- Helm v3.14.2+ 版。
kubectl:适合 Kubernetes 平台版本的受支持的kubectl版本。请参阅受支持的平台和版本:kubectl。- cert-manager:受支持的 cert-manager 版本。请参阅受支持的平台和版本:cert-manager。如果需要,您会在下面的准备升级到 1.16 版部分中升级 cert-manager。
在升级到 1.16.0 之前 - 限制和重要注意事项
Apigee Hybrid 1.16.0 引入了新的增强型单环境代理限制,可让您在单个环境中部署更多代理和共享流。如需了解每个环境可部署的代理和共享流数量的限制,请参阅限制:API 代理。此功能仅适用于新创建的 Hybrid 组织,无法应用于升级后的组织。如需使用此功能,请执行 Hybrid 1.16.0 的全新安装,然后创建新的组织。
此功能仅在 2024 年订阅方案中提供,并受该订阅授予的权益的约束。如需详细了解此功能,请参阅增强型个别环境代理限制。
升级到 Apigee Hybrid 1.16 版可能需要停机。
将 Apigee 控制器升级到 1.16.0 版时,所有 Apigee 部署都将执行滚动式重启。为了最大限度地减少滚动重启期间生产混合环境中的停机时间,请确保您至少(在相同或不同的区域/数据中心)运行两个集群。将所有生产流量转移到单个集群并且让您要升级的集群下线,然后继续执行升级过程。对每个集群重复执行此过程。
Apigee 建议您在开始升级后,应尽快升级所有集群,以降低影响生产的可能性。第一个集群升级后,其余所有集群必须在何时升级是没有限制的。但是,在所有剩余集群升级之前,Cassandra 备份和恢复不能使用混合版本。例如,Hybrid 1.15 的备份不能用于恢复 Hybrid 1.16 实例。
在升级过程中,管理平面的更改无需完全暂停。下面的升级说明中列出了对管理平面更改的所有必需的临时暂停操作。
升级到 1.16.0 版概览
以下各部分介绍升级 Apigee Hybrid 的过程:
准备升级到 1.16 版
备份 Hybrid 安装
- 这些说明将环境变量 APIGEE_HELM_CHARTS_HOME 用于文件系统中安装了 Helm 图表的目录。如果需要,请切换到此目录,然后使用以下命令定义变量:
Linux
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEMac OS
export APIGEE_HELM_CHARTS_HOME=$PWD
echo $APIGEE_HELM_CHARTS_HOMEWindows
set APIGEE_HELM_CHARTS_HOME=%CD%
echo %APIGEE_HELM_CHARTS_HOME% - 创建 1.15 版
$APIGEE_HELM_CHARTS_HOME/目录的备份副本。您可以使用任何备份过程。例如,您可以使用以下命令创建整个目录的tar文件:tar -czvf $APIGEE_HELM_CHARTS_HOME/../apigee-helm-charts-v1.15-backup.tar.gz $APIGEE_HELM_CHARTS_HOME - 按照 Cassandra 备份和恢复中的说明备份 Cassandra 数据库。
-
确保您的 TLS 证书和密钥文件(
.crt、.key和/或.pem)位于$APIGEE_HELM_CHARTS_HOME/apigee-virtualhost/目录中。
升级 Kubernetes 版本
检查您的 Kubernetes 平台版本,并根据需要将 Kubernetes 平台升级到 Hybrid 1.15 和 Hybrid 1.16 均支持的版本。如需帮助,请参阅该平台的相关文档。
拉取 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-chartsexport CHART_VERSION=1.16.0helm pull $CHART_REPO/apigee-operator --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-datastore --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-env --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-ingress-manager --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-org --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-redis --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-telemetry --version $CHART_VERSION --untarhelm pull $CHART_REPO/apigee-virtualhost --version $CHART_VERSION --untar
为自定义 apigee 命名空间修改 kustomization.yaml
如果您的 Apigee 命名空间不是 apigee,请修改 apigee-operator/etc/crds/default/kustomization.yaml 文件并将 namespace 值替换为您的 Apigee 命名空间。
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: APIGEE_NAMESPACE
如果您使用 apigee 作为命名空间,则无需修改该文件。
-
通过运行以下命令使用
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 会将数据 pod 调度到带有 cloud.google.com/gke-nodepool=apigee-data 标签的节点上,并将运行时 pod 调度到带有 cloud.google.com/gke-nodepool=apigee-runtime 标签的节点上。您可以在 overrides.yaml 文件中自定义节点池标签。
如需了解详情,请参阅配置专用节点池。
设置 apigee-guardrails 服务账号
从混合版本 v1.16 开始,升级 apigee-operator 图表需要使用 apigee-guardrails 服务账号。
在以下步骤中,选择您使用的服务账号身份验证类型。
-
验证您可以执行
create-service-account。如果您刚刚下载了图表,则create-service-account文件可能尚未处于可执行模式。在 APIGEE_HELM_CHARTS_HOME 目录中,运行以下命令:./apigee-operator/etc/tools/create-service-account --help
如果输出显示
permission denied,则需要使该文件可执行,例如在 Linux、MacOS 或 UNIX 中或者在 Windows 资源管理器中使用chmod,在 Windows 中使用icacls命令。例如:chmod +x ./apigee-operator/etc/tools/create-service-account
-
创建
apigee-guardrails服务账号:Kubernetes Secret
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
此命令会创建
apigee-guardrails服务账号并将密钥下载到service-accounts/目录。JSON 文件
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir ./apigee-operator/
此命令会创建
apigee-guardrails服务账号并将密钥下载到apigee-operator/图表目录。保险柜
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
此命令会创建
apigee-guardrails服务账号并将密钥下载到service-accounts/目录。适用于 GKE 的 WIF
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
此命令会创建
apigee-guardrails服务账号并将密钥下载到apigee-operator/etc/tools/service-accounts/目录。您不需要下载的密钥文件,可以将其删除。其他平台上的 WIF
./apigee-operator/etc/tools/create-service-account \ --env prod \ --profile apigee-guardrails \ --dir service-accounts
此命令会创建
apigee-guardrails服务账号并将密钥下载到service-accounts/目录。 -
为
apigee-guardrails服务账号设置身份验证:Kubernetes Secret
使用
service-accounts/目录中的apigee-guardrails服务账号密钥文件创建 Kubernetes Secret:kubectl create secret generic apigee-guardrails-svc-account \ --from-file="client_secret.json=$APIGEE_HELM_CHARTS_HOME/service-accounts/$PROJECT_ID-apigee-guardrails.json" \ -n $APIGEE_NAMESPACE请将以下内容添加到
overrides.yaml文件:guardrails: serviceAccountRef: apigee-guardrails-svc-account
JSON 文件
将以下内容添加到您的
overrides.yaml文件中,使用apigee-operator/目录中apigee-guardrails服务账号密钥文件的路径:guardrails: serviceAccountPath: $PROJECT_ID-apigee-guardrails.json
保险柜
- 更新保险柜中的 Secret
secret/data/apigee/orgsakeys,以添加一个包含apigee-guardrails服务账号密钥文件内容的guardrails条目。vault kv patch secret/apigee/orgsakeys guardrails="$(cat ./service-accounts/hybrid115-apigee-guardrails.json)"
-
安全防护措施的 Kubernetes 服务账号 (KSA) 名为
apigee-operator-guardrails-sa。将 Guardrails KSA 添加到绑定到 Vault 中apigee-orgsakeys角色的组织专属服务账号。- 获取 KSA 绑定的当前列表:
vault read auth/kubernetes/role/apigee-orgsakeys
输出应采用以下格式:
Key Value --- ----- alias_name_source serviceaccount_uid bound_service_account_names BOUND_SERVICE_ACCOUNT_NAMES bound_service_account_namespace_selector n/a bound_service_account_namespaces APIGEE_NAMESPACE
在输出中,
BOUND_SERVICE_ACCOUNT_NAMES是一个以英文逗号分隔的服务账号名称列表。将apigee-operator-guardrails-sa添加到名称列表中。例如(为便于阅读,添加了换行符):apigee-manager,apigee-cassandra-default,apigee-cassandra-backup-sa, apigee-cassandra-restore-sa,apigee-cassandra-schema-setup-myhybrido rg-5b044c1,apigee-cassandra-schema-val-myhybridorg-5b044c1,apigee-c assandra-user-setup-myhybridorg-5b044c1,apigee-mart-myhybridorg-5b0 44c1,apigee-mint-task-scheduler-myhybridorg-5b044c1,apigee-connect- agent-myhybridorg-5b044c1,apigee-watcher-myhybridorg-5b044c1,apigee -metrics-apigee-telemetry,apigee-open-telemetry,apigee-synchronizer -myhybridorg-dev-ee52aca,apigee-runtime-telemetry-collector-apigee- telemetry,apigee-logger-apigee-e-myhybrridorg-dev-ee52aca,apigee-sy nchronizer-myhybridog-prod-2d0221c,apigee-runtime-myhybridorg-prod- 2d0221c,apigee-operator-guardrails-sa
- 使用更新后的服务账号名称列表更新
apigee-orgsakeys角色的绑定:vault write auth/kubernetes/role/apigee-orgsakeys \ bound_service_account_names=UPDATED_BOUND_SERVICE_ACCOUNT_NAMES \ bound_service_account_namespaces=APIGEE_NAMESPACE \ policies=apigee-orgsakeys-auth \ ttl=1m
- 获取 KSA 绑定的当前列表:
-
向
SecretProviderClass添加“安全措施”- 修改
spc-org.yaml文件。 - 在
spec.parameters.objects下,添加一个安全措施条目:- objectName: "guardrails" secretPath: "" secretKey: "" - 更新您的
SecretProviderClass:kubectl -n APIGEE_NAMESPACE apply -f spc-org.yaml
- 修改
适用于 GKE 的 WIF
安全防护措施的 Kubernetes 服务账号 (KSA) 名为
apigee-operator-guardrails-sa。使用以下命令为apigee-guardrailsGoogle 服务账号 (GSA) 创建绑定:gcloud iam service-accounts add-iam-policy-binding apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:$PROJECT_ID.svc.id.goog[$APIGEE_NAMESPACE/apigee-operator-guardrails-sa]" \ --project $PROJECT_ID请将以下内容添加到
overrides.yaml文件:guardrails: gsa: apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com
其他平台上的 WIF
安全防护措施的 Kubernetes 服务账号 (KSA) 名为
apigee-operator-guardrails-sa。 您需要授予安全防护措施 KSA 模拟apigee-guardrailsGoogle 服务账号 (GSA) 的权限,并将替换项配置为使用凭据配置文件。- 使用以下命令授予 KSA 模拟 GSA 的权限:
模板
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/system:serviceaccount:APIGEE_NAMESPACE:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
示例
gcloud iam service-accounts add-iam-policy-binding \ apigee-guardrails@my-project.iam.gserviceaccount.com \ --member="principal://iam.googleapis.com/projects/1234567890/locations/global/workloadIdentityPools/my-pool/subject/system:serviceaccount:apigee:apigee-operator-guardrails-sa" \ --role=roles/iam.workloadIdentityUser
其中:
PROJECT_ID:您的 Google Cloud 项目 ID。PROJECT_NUMBER:您在其中创建了工作负载身份池的项目的项目编号。POOL_ID:工作负载身份池 ID。APIGEE_NAMESPACE:安装了 Apigee Hybrid 的命名空间。
- 为
apigee-guardrails服务账号创建凭据配置文件:gcloud iam workload-identity-pools create-cred-config \ projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/providers/WORKLOAD_PROVIDER_ID \ --service-account=apigee-guardrails@$PROJECT_ID.iam.gserviceaccount.com \ --credential-source-file=/var/run/service-account/token \ --credential-source-type=text \ --output-file=apigee-guardrails-credential-configuration.json其中,
WORKLOAD_PROVIDER_ID是您的工作负载身份池提供方 ID。 - 配置
apigee-guardrails以使用工作负载身份联合,方法如下:WIF:密钥
-
使用凭证源文件为每个凭证配置文件创建一个新的 Kubernetes Secret。
kubectl create secret -n APIGEE_NAMESPACE generic guardrails-workload-identity-secret --from-file="client_secret.json=./apigee-guardrails-credential-configuration.json"
-
将
serviceAccountRef的值替换为新 Secret:guardrails: serviceAccountRef: guardrails-workload-identity-secret
WIF:文件
将生成的
apigee-guardrails-credential-configuration.json文件移至apigee-operator/图表目录。请将以下内容添加到
overrides.yaml文件:guardrails: serviceAccountPath: apigee-guardrails-credential-configuration.json
WIF:保险柜
使用相应的凭据源文件更新保险柜中
guardrails的服务账号密钥:SAKEY=$(cat .apigee-guardrails-credential-configuration.json); kubectl -n APIGEE_NAMESPACE exec vault-0 -- vault kv patch secret/apigee/orgsakeys guardrails="$SAKEY"
如需了解详情,请参阅
Storing service account keys in Hashicorp Vault。 -
使用凭证源文件为每个凭证配置文件创建一个新的 Kubernetes Secret。
- 更新保险柜中的 Secret
升级 cert-manager
Apigee Hybrid v1.16 支持 cert-manager 版本 1.16 到 1.19。cert-manager 1.18 中有一项变更可能会导致流量出现问题。在 cert-manager 版本 1.18 中,Certificate.Spec.PrivateKey.rotationPolicy 的默认值已从 Never 更改为 Always。对于升级后的 Apigee Hybrid 安装,这可能会导致流量出现问题。从较低版本升级到 Hybrid v1.16 时,您必须修改 apigee-ca 证书以弥补此变更,或者将 cert-manager 版本保持在 1.17.x 版或更低版本。
在将 cert-manager 升级到 1.18 或 1.19 之前,请按照以下步骤修改 apigee-ca 证书,将 Certificate.Spec.PrivateKey.rotationPolicy 的值设置为 Never。
-
检查
apigee-ca证书的内容,看看是否已设置rotationPolicy:kubectl get certificate apigee-ca -n cert-manager -o yaml
在输出中查找
spec.privateKey下的值:... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA # Note: rotationPolicy would appear here if it is set. size: 256 secretName: apigee-ca ... -
如果未设置
rotationPolicy或将其设置为Always,请修改apigee-ca证书,将rotationPolicy的值设置为Never:- 首先执行试运行:
kubectl patch Certificate \ --dry-run=server \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca - 修补证书:
kubectl patch Certificate \ -n cert-manager \ --type=json \ -p='[{"op": "replace", "path": "/spec/privateKey/rotationPolicy", "value": "Never"}]' \ -o=yaml \ apigee-ca
- 首先执行试运行:
-
验证
rotationPolicy的值现在是否已设置为Never:kubectl get certificate apigee-ca -n cert-manager -o yaml
输出应类似如下所示:
... spec: commonName: apigee-hybrid duration: 87600h isCA: true issuerRef: group: cert-manager.io kind: ClusterIssuer name: apigee-root-certificate-issuer privateKey: algorithm: ECDSA rotationPolicy: Never size: 256 secretName: apigee-ca ... -
升级 cert-manager。以下命令将下载并安装 cert-manager v1.19.2:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.19.2/cert-manager.yaml
如需查看受支持的版本列表,请参阅受支持的平台和版本:cert-manager。
请参阅:
安装 Hybrid 1.16.0 运行时
- 如果没有,请转到
APIGEE_HELM_CHARTS_HOME目录。从该目录运行以下命令。 - 升级 Apigee Operator/Controller:
试运行:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
升级图表:
helm upgrade operator apigee-operator/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
验证 Apigee Operator 安装:
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.16.0 1.16.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 数据存储区:
试运行:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE \ --dry-run=server
升级图表:
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=server
升级图表:
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=server
升级图表:
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=server
升级图表:
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=server
升级图表:
helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace APIGEE_NAMESPACE \ -f OVERRIDES_FILE
通过检查相应组织的状态来验证它已启动并正在运行:
kubectl -n APIGEE_NAMESPACE get apigeeorg
NAME STATE AGE apigee-my-org-my-env 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=server
- ENV_RELEASE_NAME 是用于跟踪
apigee-env图表的安装和升级情况的名称。此名称必须与安装中的其他 Helm 版本名称不同。 通常,这与ENV_NAME相同。但是,如果环境与环境组具有相同的名称,则您必须为环境和环境组使用不同的版本名称,例如dev-env-release和dev-envgroup-release。如需详细了解 Helm 中的版本,请参阅 Helm 文档中的三大概念。 - ENV_NAME 是您要升级的环境的名称。
- OVERRIDES_FILE 是 v.1.16.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-my-org-my-env 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=server
ENV_GROUP_RELEASE_NAME 是您之前安装
apigee-virtualhost图表时使用的名称。通常为 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会创建 ApigeeRouteConfig (ARC),它会在 Apigee Watcher 从控制平面拉取环境组相关详细信息后在内部创建 ApigeeRoute (AR)。因此,请检查相应 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-123abc 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-virtualhost还原为apigee-datastore。以下命令假定您使用的是先前版本 (v1.15.x) 中的图表。对每个环境组运行以下命令:
helm upgrade ENV_GROUP_RELEASE_NAME apigee-virtualhost/ \ --install \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f 1.15_OVERRIDES_FILE
对每个环境运行以下命令:
helm upgrade ENV_RELEASE_NAME apigee-env/ \ --install \ --namespace apigee \ --atomic \ --set env=ENV_NAME \ -f 1.15_OVERRIDES_FILE
还原除
apigee-operator以外的其余图表。helm upgrade ORG_NAME apigee-org/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade ingress-manager apigee-ingress-manager/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade redis apigee-redis/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade telemetry apigee-telemetry/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_OVERRIDES_FILE
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f 1.15_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 clusterIssuer 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.15_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.15_OVERRIDES_FILE