在 OpenShift 或 OKD 上部署 AISIX Enterprise
AISIX Enterprise 包括客户自行运维的控制面,以及为应用流量提供服务的 AISIX 网关。因此,完整的 OpenShift 或 OKD 部署应先启动控制面,暴露其管理端点和数据面管理器端点,再部署至少一个已连接的网关。
AISIX 应用工作负载在默认的 restricted-v2 安全上下文约束(SCC)下运行。随附的 PostgreSQL 依赖固定了自己的用户和组 ID,因此必须在首次 Helm 安装前禁用它的 Pod 和容器安全上下文。生产环境应使用外部高可用 PostgreSQL 数据库,而不是随附的单实例数据库。
前提条件
- 已有 OpenShift 或 OKD 4.11 或更高版本的集群。
oc会话能够在目标项目中管理工作负载、Service、Secret 和 Route,读取 Pod 日志并运行oc exec。- 已获得应用域名和入口 CA 证书,或拥有读取集群 Ingress 配置和
openshift-config-managed中default-ingress-certConfigMap 的权限。集群管理员也可以直接提供域名和 CA,而无需授予这些权限。 - Helm 3、OpenSSL、cURL 和
jq。 - 部署 AISIX Enterprise 控制面中所述的计算、存储、数据库和网络容量。
本流程使用 aisix 作为控制面项目,使用 aisix-dp 作为网关项目。分离项目可使每个项目拥有独立的 UID 范围和访问策略。如果使用其他名称,请在所有命令中一致替换。
准备项目与 Route 主机名
选择或创建控制面项目和网关项目:
oc get project aisix >/dev/null 2>&1 || oc new-project aisix
oc get project aisix-dp >/dev/null 2>&1 || oc new-project aisix-dp
安装控制面前,先选择供外部客户端访问的主机名。示例使用集群的通配符应用域名。如果该域名由集群管理员提供,请将 ROUTE_DOMAIN 设置为此域名,并省略下方第一条导出命令:
export ROUTE_DOMAIN="$(oc get ingresses.config.openshift.io cluster \
-o jsonpath='{.spec.domain}')"
export CP_ROUTE_HOST="aisix.$ROUTE_DOMAIN"
export DPM_ROUTE_HOST="aisix-dpm.$ROUTE_DOMAIN"
export GATEWAY_ROUTE_HOST="aisix-gateway.$ROUTE_DOMAIN"
如果使用组织管理的 DNS,请将这些变量设为对应主机名,并确保它们解析到路由器。对于边缘 Route,请提供匹配的证书和私钥,或配置 Ingress Controller 的默认证书。数据面管理器 TLS 证书中的主机名由 api.dpmgrBaseURL 初始化。
信任 Route 证书
默认应用域名通常使用由集群内部入口 CA 签发的通配符证书。如果工作站尚未信任此 CA,请在使用控制台或 curl 之前导出它:
oc get configmap default-ingress-cert -n openshift-config-managed \
-o jsonpath='{.data.ca-bundle\.crt}' > ingress-ca.crt
export CURL_CA_BUNDLE="$PWD/ingress-ca.crt"
如果 CA 文件由管理员提供,请将其保存为 ingress-ca.crt,并只运行 CURL_CA_BUNDLE 导出命令。登录前,将 ingress-ca.crt 导入浏览器或操作系统信任存储。如果 Route 或默认 Ingress Controller 使用工作站已信任的证书,则跳过这些步骤。