规划 Ingress 设置
通过创建由 Ingress Controller 管理的 Ingress 资源,在您的 Red Hat® OpenShift® on IBM Cloud® 集群中公开多个应用。
有关如何在 Satellite 中公开应用程序的信息,请参阅 在 Satellite 集群中公开应用程序。
为单个或多个项目规划网络
每个包含要公开的应用程序的项目都需要一个 Ingress 资源。
所有应用都位于同一个项目中
如果集群中的所有应用程序都在同一个项目中,请创建一个 Ingress 资源,为要公开的应用程序定义路由规则。
例如,如果开发项目中的服务暴露了 app1 和 app2,则可以在该项目中创建一个 Ingress 资源。 该资源将 domain.net 指定为主机,并向 domain.net 注册每个应用程序侦听的路径。
请注意,如果要对同一项目中的应用程序使用不同的域,那么可以为每个域创建一个资源。
应用程序分布在多个项目中
如果集群中的应用程序位于不同的项目中,请为每个项目创建一个 Ingress 资源,以定义应用程序路由规则。
您可以在多个资源中定义同一域,也可以使用通配符域在 Ingress 资源中为每个项目指定不同的子域。
注册通配符域名时,多个子域名均可解析到同一台主机。 IBM 提供的 Ingress 子域通配符 *.<cluster_name>-<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud 默认为群集注册。
IBM 提供的 TLS 证书是通配符证书,可用于通配符子域。 如果要使用通配符自定义域,必须将自定义域注册为通配符域,如 *.custom_domain.net,要使用 TLS,必须获得通配符证书。
例如,请考虑以下场景,在该场景中,您可能想要使用通配符子域:
- 您有同一应用程序的两个版本
app1和app3用于测试。 - 您将应用程序部署到同一集群中的两个不同项目中:将
app1部署到开发项目,将app3部署到预发布项目。
若要使用不同的子域名来管理这些应用的流量,请创建以下服务和资源:
- 开发项目中用于公开
app1的 Kubernetes 服务。 - 开发项目中一个 Ingress 资源,其指定的宿主为
dev.domain.net。 - 在预发布项目中部署一个 Kubernetes 服务,以提供
app3接口。 - 暂存项目中一个 Ingress 资源,其指定的主机为
stage.domain.net。
现在,这两个 URL 都解析为同一域。 然而,由于 staging 项目中的资源是在 stage 子域下注册的,因此 Ingress 控制器会正确地将来自 stage.domain.net/app3 和 URL 的请求仅代理到 app3。
项目内的多个域名
在单个项目中,您可以使用一个域名访问该项目中的所有应用。 如果要为一个项目中的应用程序使用不同的域,请使用通配符域。 注册通配符域名时,多个子域名都会解析到同一台主机。 然后,可以使用一个资源来指定该资源内的多个子域主机。 或者,您可以在项目中创建多个 Ingress 资源,并在每个 Ingress 资源中指定不同的子域名。
IBM 提供的 Ingress 子域通配符 *.<cluster_name>-<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud 默认为群集注册。 IBM 提供的 TLS 证书是通配符证书,可用于通配符子域。 如果要使用通配符自定义域,必须将自定义域注册为通配符域,如 *.custom_domain.net,要使用
TLS,必须获得通配符证书。