Kubernetes Ingress需要反向代理设置 [英] Kubernetes Ingress needs Reverse Proxy setting
问题描述
在我的Kubernetes集群中,我遇到了一些挑战.作为示例,我通过Helm安装了NodeRed和Nginx组件. NodeRed可通过
In my Kubernetes Cluster i have some challenges with the Ingress. As example i installed NodeRed und the Nginx-ingress via Helm. NodeRed is available via
- FQDN: http://my.server.name:31827
- IP: http://10.x.x.x:31827
现在,我创建了一个Ingress:
Now i created an Ingress:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nr-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- secretName: tls-secret1
hosts:
- my.server.name
rules:
- host: my.server.name
http:
paths:
- path: /nr
backend:
serviceName: my-nodered-node-red
servicePort: 1880
当我执行Get http://my.server.name/nr 时,我只能看到零件正常工作,请参见屏幕截图:
When i do a Get http://my.server.name/nr i see only parts working, see the screenshot:
在我看来,我错过了反向代理设置.通常,我会将这些东西放在像这样的Nginx中的反向代理设置中.但这是不可能的,因为我正在使用Nginx-ingress.
It looks to me, that i missed the reverse proxy settings. Normally i would place those things in a reverse proxy setting in the nginx like this. But this is not possible because i am using the Nginx-ingress.
location / {
proxy_pass http://localhost:1880/;
}
但是我不知道如何在Kubernetes中做到这一点?我想念什么? kubernetes版本是1.14.1.
But i do not know how to do that in Kubernetes ? What do i miss ? kubernetes version is 1.14.1.
推荐答案
I haven't used it so I'm not sure if it helps, but you might want to try adding an annotation for Proxy redirect.
使用注释
nginx.ingress.kubernetes.io/proxy-redirect-from
和nginx.ingress.kubernetes.io/proxy-redirect-to
,可以在将设置"设置为关闭"或默认"注释中的nginx.ingress.kubernetes.io/proxy-redirect-from
中的nginx.ingress.kubernetes.io/proxy-redirect-to
禁用nginx.ingress.kubernetes.io/proxy-redirect-to
,否则,必须同时使用两个注释.请注意,每个注释都必须是不带空格的字符串.Setting "off" or "default" in the annotation
nginx.ingress.kubernetes.io/proxy-redirect-from
disablesnginx.ingress.kubernetes.io/proxy-redirect-to
, otherwise, both annotations must be used in unison. Note that each annotation must be a string without spaces.默认情况下,每个注释的值均为"off".
By default the value of each annotation is "off".
您还可以将 ConfigMap 用于自定义您的Nginx配置.
Also you can use ConfigMap for customizing your Nginx configuration.
kind: ConfigMap apiVersion: v1 metadata: name: nginx-configuration namespace: ingress-nginx labels: app: ingress-nginx data: http-snippet: | location = / { proxy_pass http://localhost:1880/; }
或者
server-snippets
Ingress
的注释:
apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: nr-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / nginx.ingress.kubernetes.io/server-snippet: | location = / { proxy_pass http://localhost:1880/; } spec: tls: - secretName: tls-secret1 hosts: - my.server.name rules: - host: my.server.name http: paths: - path: /nr backend: serviceName: my-nodered-node-red servicePort: 1880
我希望这会有所帮助.
这篇关于Kubernetes Ingress需要反向代理设置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!