基本認証を使用して、nginxでKibanaポッドへのプロキシパスを使用しようとしています。
テスト用に動作しました(これは別のk8sクラスターですが、ポッド内で同じ名前名、kube-dns、envを使用すると、非常によく似ています)コンテキスト:AWSのk8sでhelmを介してこれをデプロイし、nginxにはKubernetesLBがありますサービスタイプ(基本的にはAWSのELBであり、cnameはroute53にあります)。
nginxポッドをkibana-app.kube-system.svc.cluster.local:5601にポイントすると、nginxからkibanaポッドにリクエストが表示されますが、server.basePathに移動しようとすると404が返されます:/ api / v1 / proxy / namespaces / kube-system / services / kibana-app /
「kubectlcluster-info」からURLを取得し、ログを確認することで、kibana-appポッドにアクセスできます。リクエストは次のようになります。
"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ステートメントを移動して、returnを削除し、kibanaのポッドがリッスンしている場所からproxy_passを実行しようとしましたが、機能しないか、リクエストがポッドに到達しないか、リクエストがkibana-app podに到達すると、 404。
何かご意見は?
ありがとう!
更新:
もうすぐです。「kibanaがロード中の画面」が表示されますが、バンドル、jsonなど、nginxポッドログのロードが完了しません。
GET /api/v1/proxy/namespaces/kube-system/services/kibana-logging/bundles/commons.style.css
404を返すkibanaポッドでの同じリクエスト:
"statusCode":404、 "req":{"url": "/ app / kibana / v1 / proxy / namespaces / kube-system / services / kibana-logging / bundles / commons.bundle.js?v = 10146"、 "method": "get"、 "headers":{"host": "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}、" message ":" GET / app / kibana /v1/proxy/namespaces/kube-system/services/kibana-logging/bundles/commons.bundle.js?v=10146
私のnginxconf:
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」は、kubernetesがroute53でELBへのCNAMEとして作成するFQDNであり、nginx / kibanaポッドがあるノードにヒットします。これは私がブラウザで使用するURLであり、nginxに到達し、基本認証を要求してから、server.basePathを使用してkibanaポッドに移動します。/api/v1/proxy/namespaces/kube-system/services/kibana-logging 、はっきりしない場合は何か質問してください。すべてをコピーして貼り付けることができないのでごめんなさい。
最後に、それは機能しています:
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;
}
}
K8がAWSでELBとして作成したURL(kibana-app.env.com)に移動すると、/ api / v1 / proxy / namespaces / kube-system / services / kibana-logging /にリダイレクトされます。このURLはkibanaポッドにプロキシパスします:http: //kibana-logging.kube-system.svc.cluster.local:5601
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加