Kubernetes Ingress需要反向代理设置 [英] Kubernetes Ingress needs Reverse Proxy setting

查看:773
本文介绍了Kubernetes Ingress需要反向代理设置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的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-fromnginx.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 disables nginx.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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆