ev0*_*n37 3 proxy routes nginx openshift
我的用例需要传递 SSL,因此很遗憾我们无法在 Openshift 中本地使用基于路径的路由。我们的下一个最佳解决方案是设置一个内部 NGINX 代理,以将流量从路径路由到另一个 Web UI 的 Openshift 路由。这样做时出现错误。
这是我的简化 NGINX 配置:
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /etc/nginx/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
upstream app1-ui-1-0 {
server app1-1-0.192.168.99.100.nip.io:443;
}
server {
listen 8443 ssl default_server;
location /apps/app1/ {
proxy_pass https://app1-ui-1-0/;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的app1路由配置如下:
apiVersion: v1
kind: Route
metadata:
name: app1-1-0
spec:
host: app1-1-0.192.168.99.100.nip.io
to:
kind: Service
name: app1-1-0
tls:
insecureEdgeTerminationPolicy: Redirect
termination: passthrough
Run Code Online (Sandbox Code Playgroud)
当我点击 时https://app1-1-0.192.168.99.100.nip.io,该应用程序运行良好。
当我点击 NGINX 代理路由 url ( https://proxier-1-0.192.168.99.100.nip.io) 时,它正确加载了 nginx 的标准 index.html 位置。
但是,当我尝试通过代理访问 app1 时https://proxier-1-0.192.168.99.100.nip.io/apps/apps1/,我收到以下 Openshift 错误:
Application is not available
The application is currently not serving requests at this endpoint. It may not have been started or is still starting.
Run Code Online (Sandbox Code Playgroud)通过日志和测试,我知道请求正在进入/apps/app1/位置块,但它永远不会到达 app1 的 NGINX。我还确认此错误来自 app1 的路由器或服务,但我不知道如何进行故障排除,因为两者都没有日志。有任何想法吗?
当您想向在同一 OpenShift 集群中运行的其他应用程序发出请求时,大多数情况下正确的解决方案是使用内部 DNS。
OpenShift 附带了一个 SDN,它支持 Pod 之间的通信。这比通过其路由与另一个 Pod 通信更有效,因为这通常会将请求路由回公共互联网,然后再次访问 OpenShift 路由器,然后通过 SDN 转发。
可以访问服务<service>.<pod_namespace>.svc.cluster.local,在您的情况下,可以通过以下方式使 NGINX 代理server apps1-1-0.myproject.svc.cluster.local
路由通常用于将外部流量路由到集群中。
有关网络的更多详细信息,请参阅OpenShift 文档
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |