1.8. Route 和 ingress
路由和入口都用于将应用程序公开给外部流量。但是,它们提供的目的略有不同,具有不同的功能。
1.8.1. Routes 复制链接链接已复制到粘贴板!
路由特定于 OpenShift Container Platform 资源,它们通过主机名公开服务,以便外部客户端可根据名称访问服务。
路由将主机名映射到服务。路由名称映射允许使用主机名访问服务。路由为定向到该服务的流量提供负载均衡。路由中使用的主机名解析为路由器的 IP 地址。路由然后将流量转发到适当的服务。路由也可以使用 SSL/TLS 保护,以加密客户端和服务之间的流量。
1.8.2. 入口 复制链接链接已复制到粘贴板!
Ingress 是一个提供高级路由功能的资源,包括负载均衡、SSL/TLS 终止和基于名称的虚拟主机。以下是有关 Ingress 的一些关键点:
- HTTP/HTTPS 路由 :您可以使用 Ingress 定义将 HTTP 和 HTTPS 流量路由到集群中的服务的规则。
- Load balancing(负载均衡) :Ingress Controller (如 NGINX 或 HAProxy)根据用户定义的规则管理流量路由和负载均衡。
- SSL/TLS termination(SSL/TLS 终止):SSL/TLS 终止是在将传入的 SSL/TLS 流量传递给后端服务前解密传入的 SSL/TLS 流量的过程。
- 多个域和路径: Ingress 支持多个域和路径的路由流量。
1.8.3. 路由和入口的比较 复制链接链接已复制到粘贴板!
与入口相比,路由提供了更大的灵活性和高级功能。这使得路由适合复杂路由场景。路由更易于设置和使用,特别是对于基本的外部访问需求。Ingress 通常用于简单直接的外部访问。路由用于更复杂的场景,需要高级路由和 SSL/TLS 终止。
1.8.4. 示例:配置路由和入口以公开 Web 应用程序 复制链接链接已复制到粘贴板!
Web 应用程序在 OpenShift Container Platform 集群上运行。您希望外部用户访问应用程序。该应用应该可通过特定的域名访问,流量应该使用 TLS 安全加密。以下示例演示了如何配置路由和入口,以安全地将 Web 应用程序公开给外部流量。
1.8.4.1. 配置路由 复制链接链接已复制到粘贴板!
创建一个新项目。
oc new-project webapp-project
$ oc new-project webapp-project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 部署 Web 应用。
oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git --name=webapp
$ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git --name=webapp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用路由公开服务。
oc expose svc/webapp --hostname=webapp.example.com
$ oc expose svc/webapp --hostname=webapp.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 TLS 保护路由。
使用您的证书和密钥创建 TLS secret。
oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key
$ oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新路由以使用 TLS secret。
oc patch route/webapp -p '{"spec":{"tls":{"termination":"edge","certificate":"path/to/tls.crt","key":"path/to/tls.key"}}}'
$ oc patch route/webapp -p '{"spec":{"tls":{"termination":"edge","certificate":"path/to/tls.crt","key":"path/to/tls.key"}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.8.4.2. 配置入口 复制链接链接已复制到粘贴板!
创建入口资源。
确保在集群中安装并运行 ingress Controller。
为 Web 应用创建服务。如果尚未创建,以服务的方式公开应用。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建入口资源。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 TLS 保护入口。
使用您的证书和密钥创建 TLS secret。
oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key -n webapp-project
$ oc create secret tls webapp-tls --cert=path/to/tls.crt --key=path/to/tls.key -n webapp-project
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 更新入口资源以使用 TLS secret。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow