在 OpenShift 上部署
本指南介绍如何在 Red Hat OpenShift 集群上部署 API7 网关。部署采用与标准 Kubernetes 部署相同的 Helm 模型,同时说明安全上下文约束(SCC)和服务账号配置等 OpenShift 特有事项。
架构概览
API7 网关在 OpenShift 上使用与其他 Kubernetes 集群相同的双组件架构:
- 控制面(CP):Dashboard、DP Manager 和 PostgreSQL 数据库。
- 数据面(DP):处理 API 流量的 API7 网关实例。
OpenShift 的主要区别是 Pod 必须符合安全上下文约束(SCC),它限制 Pod 可以执行的操作。
前提条件
开始前,请确保具备:
- 运行
4.12或更高版本且拥有cluster-admin权限的 OpenShift 集群。 - OpenShift CLI(
oc)4.12或更高版本。请参阅安装 oc。 - Helm
3.10或更高版本。请参阅安装 Helm。 - API7 网关许可证。请参阅获取试用许可证。
登录 OpenShift 集群
使用 oc CLI 登录。可以在 OpenShift Web 控制台的用户菜单中找到登录命令:
oc login \
--token=sha256~YOUR_TOKEN \
--server=https://api.YOUR_CLUSTER.openshiftapps.com:6443
验证是否拥有 cluster-admin 权限:
oc auth can-i create scc --all-namespaces
第 1 步:创建项目
为 API7 创建专用 OpenShift 项目(命名空间):
oc new-project api7
也可以通过 OpenShift Web 控制台创建项目。
第 2 步:安装控制面
添加 API7 Helm 仓库
helm repo add api7 https://charts.api7.ai
helm repo update
配置内置组件的安全上下文
内置 PostgreSQL、Prometheus 和 Jaeger Pod 带有明确的 securityContext 设置,与 OpenShift SCC 系统冲突。PostgreSQL 和 Prometheus 需要可写文件系统,Jaeger 则使用固定 UID。在 OpenShift 上应清除这些设置,使 SCC 系统可以从项目允许的范围中分配 UID:
postgresql:
primary:
podSecurityContext:
enabled: false
containerSecurityContext:
enabled: false
prometheus:
server:
podSecurityContext:
enabled: false
containerSecurityContext:
enabled: false
jaeger:
jaeger:
podSecurityContext:
runAsUser: null
runAsGroup: null
fsGroup: null
从 API7 网关 3.9.5 开始,Jaeger 成为支持分布式追踪的内置控制面组件。与 PostgreSQL 和 Prometheus 不同,内置 Jaeger Chart 的安全上下文没有 enabled 开关,并将 runAsUser、runAsGroup 和 fsGroup 设置为 10001,会被 OpenShift SCC 拒绝。由于 Helm 会合并配置值,podSecurityContext: {} 无法清除这些键,必须逐一设置为 null。Jaeger 使用内存存 储,因此不需要固定 fsGroup。
生产部署应使用外部 PostgreSQL 数据库(例如 Amazon RDS、Azure Database for PostgreSQL 或专用 PostgreSQL 实例),而不是内置数据库。外部数据库配置请参阅 Kubernetes 部署指南。
安装控制面Helm Chart
helm install api7ee3 api7/api7ee3 \
-f cp-values.yaml \
-n api7
验证控制面Service
oc get svc -n api7 -l app.kubernetes.io/name=api7ee3 -o wide
预期输出:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api7ee3-dashboard ClusterIP 172.30.39.137 <none> 7080/TCP,7443/TCP 2m
api7ee3-developer-portal ClusterIP 172.30.114.132 <none> 4321/TCP 2m
api7ee3-dp-manager ClusterIP 172.30.232.75 <none> 7900/TCP,7943/TCP 2m
第 3 步:激活许可证
对 Dashboard Service 执行端口转发:
oc port-forward svc/api7ee3-dashboard -n api7 7443:7443
在浏览器中打开 https://localhost:7443,使用默认凭证(admin / admin)登录,然后上传许可证。