问题标签 [kubernetes-ingress]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
400 浏览

ruby-on-rails - Sidekiq UI 在 Kubernetes 基于路径的路由中加载错误的资产路径

我有一个网站:

xyz.com -> 独立 Angular4 APP(容器)

xyz.com/api/ -> 独立 Rails API APP(容器 - ruby​​-2.4.0)

xyz.com/api/sidekiq -> 安装到 Rails api 路由。

当我尝试访问 /api/sidekiq 时,它会加载数据,但资产仍指向 xyz.com/sidekiq 而不是 xyz.com/api/sidekiq。当我点击重试时,它会尝试提交到 xyz.com/sidekiq 而不是 xyz.com/api/sidekiq。有没有办法强制 sidekiq 使用不同的资产路径和基本 url 路径?

有没有办法将 sidekiq Web 视图作为单独的独立应用程序容器?

我使用 Kubernetes 作为我的编排工具。我正在使用 Nginx Ingress 进行基于路径的路由。当我转到 xyz.com/api/sidekiq 时,它会加载数据,但 url 和资产指向 xyz.com/sidekiq,这就是为什么我无法重试 sidekiq 工作,因为 sidekiq 网络不起作用。

0 投票
2 回答
2639 浏览

kubernetes - 使用 GLBC 在 ingress-gce 中实现缺少 http-> https 重定向的解决方法

我正在尝试使用 GLBC 围绕 ingress-gce 中缺少内置 HTTP->HTTPS 重定向的建议解决方法展开思考。我正在苦苦挣扎的是如何使用这个被建议作为一个选项来克服这个限制的自定义后端(例如,在How to force SSL for Kubernetes Ingress on GKE 中)。

在我的情况下,负载均衡器背后的应用程序本身并没有 apache 或 nginx,我只是不知道如何在设置中包含例如 apache(我比 nginx 更了解)。我应该在应用程序前面设置 apache 作为代理吗?在那种情况下,我想知道在代理配置中放什么,因为不能在那里使用那些方便的 k8s 服务名称......

还是应该将 apache 设置为某种单独的后端,仅当客户端使用纯 HTTP 时才会获得流量?在这种情况下,我错过了 GCE 负载平衡器中按协议对后端的分离,虽然我可以看到如何手动完成,但需要为此配置入口,我似乎找不到任何资源解释如何实际做到这一点。

例如,在https://github.com/kubernetes/ingress-gce#redirecting-http-to-https中,“应用程序”负责转发(它似乎是在 nginx 上构建的),虽然该示例运行良好,不可能对我正在谈论的应用程序做同样的事情。

基本上,我的设置目前是这样的:

我知道我可以完全阻止 HTTP,但是当有人在浏览器中输入域名时,这会破坏用户体验。

目前我为 LB 设置了这些服务:

此外,我将 GLBC 与应用程序部署捆绑在一起:

除了更完整的解决方案之外,我将不胜感激任何指针。

0 投票
1 回答
7348 浏览

angular - 如何正确配置 k8s nginx 入口基本 url 替换以处理 Angular 客户端路由(LocationStrategy)?

我们在 Kubernetes 集群上托管了基于 Angular 的 Web 应用程序。此应用程序的入口配置为添加基本 URL:

当我们在浏览器中输入包含客户端路由部分的 URL 时,入口会将整个 URL 添加为基础,这在我们的场景中是不正确的。

例如对于https://server/at/test-app/some-page请求基本 URL 应该是https://server/at/test-app/但我们收到https://server/at/test-app/一些页面/

我们已经切换到 Angular 哈希路由位置策略,现在它可以正常工作,但我们想知道是否有某种方法可以使位置路由策略与 nginx 入口一起工作?

预先感谢您的帮助。

此致

0 投票
1 回答
4455 浏览

nginx - ingress-nginx 永久重定向 301 不起作用

更新:这个问题自己解决了。我说不出为什么。第二天我又试了一次,它与下面的配置一起工作。

我正在使用“ingress-nginx”入口控制器(v.0.12.0)。除了永久重定向之外,它工作正常。

为了重定向foo.example.comhttps://google.com我应用了以下入口配置:

但是,如果我foo.example.com在浏览器中输入,我会得到:

很抱歉,我们无法处理您尝试访问的网站的重定向请求。

如果您认为收到此消息有误,请检查 URL 并再次尝试您的请求。

犹他州

(射频)

有谁知道这里出了什么问题?

0 投票
1 回答
1242 浏览

azure - 无法将 SSL 证书应用于 Kubernetes 上的 Kubernetes 负载平衡服务

问题

我无法将 TLS 应用于我的 Kubernetes 集群的 LoadBalancer 服务的 DNS 名称,我有点不知所措。

这是我第一次使用 Kubernetes 以及 Azure 的管理容器服务。由于我无法控制的原因,此 api 需要在 Azure 的托管容器服务上运行。

环境

集群使用托管容器服务(预览版)在 Azure 上运行。我按照此处的步骤创建了我的环境: https ://docs.microsoft.com/en-us/azure/aks/tutorial-kubernetes-deploy-cluster

我在 Azure 中创建了一个静态 IP,以在 yaml 中用于负载均衡器服务。此外,我myprefix.cloudapp.azure.com使用以下命令 ( https://docs.microsoft.com/en-us/azure/aks/static-ip )为 IP 创建了 DNS 名称

IP="XX.XX.XX.XX"

DNSNAME="myprefix"

RESOURCEGROUP=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[resourceGroup]" --output tsv)

PIPNAME=$(az network public-ip list --query "[?ipAddress!=null]|[?contains(ipAddress, '$IP')].[name]" --output tsv)

az network public-ip update --resource-group $RESOURCEGROUP --name $PIPNAME --dns-name $DNSNAME

部署

这是我用于部署的 yaml:

apiVersion: apps/v1beta1 kind: Deployment metadata: name: my-node-express-api-deployment spec: replicas: 2 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 1 minReadySeconds: 5 template: metadata: labels: app: my-node-express-api spec: containers: - name: my-node-express-api-container image: myrepo/my-node-express-api-image:latest ports: - containerPort: 3000 volumes: - name: tls secret: secretName: my-tls-secret

服务

这是我的负载平衡服务的 yaml

apiVersion: v1 kind: Service metadata: name: my-node-express-api-loadbalancer spec: loadBalancerIP: 52.176.148.91 type: LoadBalancer ports: - port: 80 targetPort: 3000 port: 443 targetPort: 3000 selector: app: my-node-express-api

秘密

用于秘密的 Yaml

apiVersion: v1 kind: Secret metadata: name: my-tls-secret namespace: default data: tls.crt: (base64 for myprefix.cloudapp.azure.com.crt) tls.key: (base64 for myprefix.cloudapp.azure.com.key)

笔记:

当我从部署中删除 Secret 并从 LoadBalancer 服务中删除端口 443 时,一切都在 http 上正常工作。

0 投票
0 回答
914 浏览

amazon-elb - 如何在 k8s 上使用 AWS ELB 和 nginx 入口

1) 我在 AWS 上生成了 SSL 证书

2) 然后我有 nginx 控制器 pod

3)最后我正在使用 helm 部署grafanaprometheus(此设置在通过NodePort访问时有效)

我只是无法弄清楚 ELB 和入口的设置。顺便说一句,入口是正确创建的grafana部署的一部分

3)

0 投票
1 回答
102 浏览

kubernetes - GCE 负载均衡器日志中奇怪的 404 和 403 警告的来源是什么

在 Google Cloud Platform Logs 中检查 GCE 负载均衡器的日志,会显示以下形式的一堆警告:

和 ..:

是什么导致了这些电话?是某种健康检查吗?

根据我从文档中收集到的信息,应该会调用支持 Pod 的就绪探针。此外,据我所知,后端服务组被认为是健康的。

当它们在日志中显示为警告时,我认为我应该努力让它们消失?

0 投票
1 回答
912 浏览

nginx - Nginx 入口控制器如何在 Kubernetes 上工作?

具体来说,当我按照 Google 网站上的说明在 GKE 上设置 nginx 入口时,为什么我最终会得到两个外部 IP 地址?

这两个 IP 地址分别用于 Ingress 资源和 LoadBalancer 类型的 Service 资源:

这是我认为它的工作原理:

这基本上是我链接到的教程页面上的图表。所以我希望负载均衡器是 L4 类型的并且有一个外部 IP(并且不花钱使用!)。而且我希望入口(尽管它的名字)没有外部 IP,因为我用注释标记它

谷歌应该承认说我不希望 Ingress 资源使用他们付费的 L7 HTTP 负载均衡器,而是我自己的 Nginx 控制器。

我确实注意到我的/hello页面可以通过负载均衡器的 IP 地址访问,但访问入口地址会导致连接尝试被拒绝错误。但是,具有host:tls:设置的是 Ingress 资源。那么我应该将我的 TLS 证书与哪个资源相关联?为什么 Ingress 资源是可以访问我的网站的 LoadBalancer IP 时指定一个域名?

0 投票
1 回答
790 浏览

nginx - Kubernetes Ingress Nginx 和 AWS API Gateway 客户端证书

我有一个 AWS API Gateway 和一个 Ingress Nginx。

我希望我的 Ingress 只接受来自 API Gateway 的流量:所以我使用了 AWS API Gateway 客户端证书。

我创建了客户端证书的秘密:

我的 Ingress Service 具有以下配置(它是 TCP AWS 经典 ELB):

我的 Ingress 规则如下所示:

但它不起作用。我可以从我的浏览器访问 dev.ingress.website.com/items :只有 API 网关应该可以访问。

这是 nginx.conf 的输出:

它似乎是空的ssl-client-certssl-client-verify所以我猜是因为这个?

但我不知道为什么。有谁知道如何解决它?

提前致谢 !J。

0 投票
2 回答
4638 浏览

hsts - Kubernetes 入口不强制将 hsts 插入标头

我正在使用 kubectl 在 AWS 上的 Kops 控制集群上运行 Kubernetes。我想将 Strict-Transport-Security 标头插入到我们网站提供的页面中。我的入口当前强制所有流量到 HTTPS,但忽略了我在我的

ingress.yaml:

当我运行时kubectl get ingress <ingressname> -o yaml,我可以看到{"annotations":{"nginx.ingress.kubernetes.io/hsts":"true",但据我所知,标题中没有 HSTS 的迹象。

我试图通过 configmap 实现这一点,但它也不起作用。我正在使用 quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.12.0 作为 ingresscontroller,我的 kubectl 服务器版本是 v1.8.6。

ingress 部署、服务和 ingress 本身都响应更改,尽管在 ingress.yaml 中的注释中添加乱码似乎并没有破坏任何东西。

我究竟做错了什么?