我试着用nginx的代理通行证到基巴纳吊舱,用一个基本的方法。
用于测试(这是另一个k8s集群,但非常类似,使用相同的名称空间、库-dns、env在荚中匹配并且它们可以看到对方)上下文:我通过k8s在AWS中使用这个集群,nginx有一个Kubernetes LB服务类型(基本上它是AWS上的一个ELB,其名称为route53)。
如果我将nginx指向kibana-app.kube-system.svc.cluster.local:5601,我在kibana上看到来自nginx的请求,但在尝试转到server.basePath: server.basePath时返回404。
通过从"kubectl集群-info“获取url并检查日志,我可以访问kibana pod,请求如下所示:
"method":"get","statusCode":200,"req":{"url":"/app/kibana"
"x-forwarded-uri":"/api/v1/proxy/namespaces/kube-system/services/kibana-logging/app/kibana
在尝试从nginx到达Kibana路径时,找不出出了什么问题(在做了一个基本步骤之后)
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/host.access.log;
location / {
auth_basic "simple auth";
auth_basic_user_file /var/kibana_config/htpasswd;
try_files KIBANA @kibana-app;
}
location @kibanaapp {
return 301 http://kiban-app-url-from-route53/server.basePath;
}
location /api {
proxy_pass https://api.awszone.mydomain/api;
proxy_set_header Authorization "Basic ";
}
}
还尝试移动proxy_pass语句,删除返回,只从kibana的吊舱中执行一个proxy_pass,但是要么不工作,要么请求永远不会到达荚,或者当请求到达kibana pod时,它返回一个404。
有什么想法吗?
谢谢!
更新:
我快到了,现在我可以看到"kibana正在加载的屏幕“,但从未完成包、json和其他东西的加载,nginx荚log:
获取/api/v1/proxy/namespaces/kube-system/services/kibana-logging/bundles/commons.style.css
同样的请求在基巴纳舱返回404:
"statusCode":404,statusCode“方法”:“get”,“headers”:{“kibana.app.env.com”,"referer":"http://kibana.app.env.com/api“referer:”http://kibana.app.env.com/api“},"res":{"statusCode":404,"responseTime":2,"contentLength":9},“消息”:“获取/app/kibana/v1/proxy/namespaces/kube-system/services/kibana-logging/bundles/commons.bundle.js?v=10146
我的nginx公司:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/host.access.log;
location / {
auth_basic "simple auth";
auth_basic_user_file /var/kibana_config/htpasswd;
try_files KIBANA @kibana-app;
}
location @kibana-app {
return 301 kibana.app.env.com/server.basePath;
}
location /api {
proxy_pass http://kibana-logging.kube-system.svc.cluster.local:5601;
proxy_set_header HOST $host;
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Authorization "simple auth ";
}
}
"kibana.app.env.com“--库伯内特斯在route53上创建的FQDN,作为一个CNAME,到一个到达nginx/kibana的节点的电子束。这是我在浏览器上使用的url,它应该到达nginx,向我询问基本授权,然后带我使用/api/v1/proxy/namespaces/kube-system/services/kibana-logging : server.basePath:请告诉我,如果我不清楚,请问我一些问题,抱歉,我不能只复制/粘贴所有东西。
发布于 2018-10-05 04:20:38
最后,它起作用了:
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/host.access.log;
location / {
auth_basic "simple auth";
auth_basic_user_file /var/kibana_config/htpasswd;
try_files KIBANA @kibana-app;
}
location @kibana-app {
return 301 /api/v1/proxy/namespaces/kube-system/services/kibana-logging/;
}
location /api/v1/proxy/namespaces/kube-system/services/kibana-logging/ {
proxy_set_header Authorization "simple auth ";
proxy_pass http://kibana-logging.kube-system.svc.cluster.local:5601/;
proxy_set_header HOST $host;
proxy_set_header Referer $http_referer;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
转到K8s在AWS上创建的URL作为一个ELB (kibana-app.env.com)重定向到K8s,哪个proxy_pass重定向到kibana:http://kibana-logging.kube-system.svc.cluster.local:5601
发布于 2018-10-04 14:00:08
不确定在另一个集群上是如何工作的。因此,您提到的基本路径:/api/v1/proxy/namespaces/kube-system/services/kibana-app/
似乎是一个kube基本路径,而使用kubectl proxy
的代理设置将使用该路径与集群中的应用程序和服务进行对话。
如果您真的想在集群中从nginx到Kibana进行对话,那么必须将kibana-app.kube-system.svc.cluster.local:5601
端点添加到nginx后端。
https://stackoverflow.com/questions/52652857
复制相似问题