标签: nginx-ingress

如何在一个入口控制器中实现多个服务?他们在文档中给出的一个是无法理解的

我创建了一个服务,每个服务都创建一个新的负载均衡器,我不想为每个服务创建一个新的负载均衡器。为此,我找到了解决方案入口控制器,但它没有发生。

kubernetes kubernetes-ingress nginx-ingress

2
推荐指数
1
解决办法
2万
查看次数

Kubernetes 入口更新与部署

我们目前正在设置一个 kubernetes 集群来部署我们的生产工作负载(主要是 http Rest 服务)。在这个集群中,我们设置了 nginx 入口控制器来将流量从外部路由到我们的服务。由于入口控制器主要用于路径路由,我确实有以下问题:

  • 问题一:动态后端路由

是否可以将流量路由到后端,而无需在入口规范中专门指定后端名称?例如我有以下入口:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
        - path: /apple
          backend:
            serviceName: apple-service
            servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

是否有可能 /apple 请求被路由到 apple-service 而没有在 serviceName 中具体指定?那么/apple会自动路由到apple-service服务,/orange会自动路由到orange服务而无需显式指定后端名称?

  • 问题 2

如果没有第 1 点的解决方案,以便我们可以根据某些约定进行部署,那么现在的问题是如何以自动化的方式管理入口。由于服务将通过自动化 CI/CD 管道进行部署,并且当服务添加到集群时可能会添加新路径,那么当部署应用程序时,ci/cd 编排器(例如 jenkins)如何更新入口路由?这样我们就可以确定集群不需要手动干预,并且每个路由都与相应的服务一起部署?

我希望所提供的信息足以理解该问题。非常感谢您的支持。

nginx kubernetes kubernetes-ingress nginx-ingress

2
推荐指数
1
解决办法
1万
查看次数

Kubernetes - 入口:错误:连接 ECONNREFUSED 127.0.0.1:80

我正在尝试在 minikube 上运行 ingress。我在 ubnutu 18.04 上运行。我对 nginx-ingress 感兴趣: https: //kubernetes.github.io/ingress-nginx/deploy/

我有一个简单的测试服务,它在 docker 容器内的端口 3000 上运行。该容器被推送到 docker hub。我在那里有简单的获取请求:

app.get('/api/users/currentuser', (req, res) => {
  res.send('Hi there!');
});
Run Code Online (Sandbox Code Playgroud)

我已经完成的步骤:minikube 启动,然后minikube 插件启用入口,之后我收到来自 minikube 的消息:

  Verifying ingress addon...
  The 'ingress' addon is enabled
Run Code Online (Sandbox Code Playgroud)

但当我尝试验证它是否正在运行时,我认为这工作得不好:Output from kubectl get pods -n kube-system

NAME                                        READY   STATUS      RESTARTS   AGE
coredns-66bff467f8-bhqnk                    1/1     Running     4          2d8h
etcd-minikube                               1/1     Running     4          2d8h
ingress-nginx-admission-create-676jc        0/1     Completed   0          168m
ingress-nginx-admission-patch-bwf7x         0/1     Completed   0          168m
ingress-nginx-controller-7bb4c67d67-x5qzl   1/1     Running     3          168m …
Run Code Online (Sandbox Code Playgroud)

kubernetes skaffold nginx-ingress

2
推荐指数
1
解决办法
7681
查看次数

保护后端 API 端点(MERN 应用程序)

我使用 MERN 制作了一个全栈 Web 应用程序,并使用 Kubernetes 集群进行部署。

除了一个问题之外,该应用程序运行良好。也就是说,我(作为用户)能够从浏览器访问 API,例如www.domain-name/api/orders,它为我提供了 JSON 响应。

这是我不想要的。我需要隐藏/限制它。

我使用 NGINX-INGRESS 进行路由:

apiVersion: extensions/v1beta1
kind: Ingress
metadata: 
    name: ingress-service 
    annotations: 
        kubernetes.io/ingress.class: nginx 
        nginx.ingress.kubernetes.io/use-regex: 'true'
spec: 
    rules: 
        - host: shopify.dev 
          http: 
            paths:
                - path: /api/users/?(.*) 
                  backend: 
                    serviceName: auth-srv 
                    servicePort: 3000
                - path: /api/orders/?(.*)
                  backend: 
                    serviceName: orders-srv
                    servicePort: 3000
                - path: /?(.*) 
                  backend: 
                    serviceName: client-srv
                    servicePort: 3000 
Run Code Online (Sandbox Code Playgroud)

由于请求 /api 和 /* (前端)都是通过 nginx-ingress 路由的,这是应该如何工作的?解决这个问题的办法是什么?

node.js docker kubernetes devops nginx-ingress

2
推荐指数
1
解决办法
689
查看次数

kubernetes nginx 入口错误与配置片段

我有以下 ingress.yaml 文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: nginx-configuration-snippet
    annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /$2
        nginx.ingress.kubernetes.io/configuration-snippet: |
          location /base/path/v1/api/update {
              deny all;
              return 404;
            }
spec:
  rules:
    - http:
        paths:
          - path: /base/path(/|$)(.*)
            backend:
              serviceName: myApi
              servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

但是当我向 https:///base/path/v1/api/update 发送请求时,它成功了,并且在 nginx 入口控制器中出现了以下错误

Error: exit status 1
2020/08/06 18:35:07 [emerg] 1734#1734: location "/base/path/v1/api/update" is outside location "^/base/path(/|$)(.*)" in /tmp/nginx-cfg008325631:2445
nginx: [emerg] location "/base/path/v1/api/update" is outside location "^/base/path(/|$)(.*)" in /tmp/nginx-cfg008325631:2445
nginx: configuration file /tmp/nginx-cfg008325631 test failed
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

nginx kubernetes kubernetes-helm kubernetes-ingress nginx-ingress

2
推荐指数
1
解决办法
4653
查看次数

nginx ingress 中的 body size 到底是多少?

我正在尝试为 proxy-body-size 注释设置一个值,但我确定如何得出相同的数字。例如,如果我推送价值 2GB 的数据,则 1GB 的主体大小会引发“413 请求太大”错误,而 3GB 的限制则可以正常工作。

所以我想了解 nginx 中的 body size 到底是什么。它是一个数据包/整个数据的较小部分还是整个数据(比如我如上所述推送的 2GB)。

任何帮助将不胜感激。

nginx kubernetes nginx-ingress

2
推荐指数
1
解决办法
8687
查看次数

入口、重写目标、前端和 API 相同的 URL。版本 0.22.0+

我正在尝试进行这样的设置:

  • example.com #前端
  • example.com/api
  • example.com/authentication

显然他们每个人都独立的应用程序并且应该能够继续自己的道路,ex. http://example.com/api/v1/test?v=ok

现在我有一个像这样的yaml:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 name: test-ingress
 annotations:
   nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
 rules:
 - http:
     paths:
     - path: /
       backend:
         serviceName: frontend-service
         servicePort: 80
     - path: /api(/|$)(.*)
       backend:
         serviceName: backend-service
         servicePort: 80
     - path: /authentication(/|$)(.*)
       backend:
         serviceName: identityserver-service
         servicePort: 80
Run Code Online (Sandbox Code Playgroud)

/api 和 /authentication 的行为符合我想要的方式,但前端的子路径不起作用。所以例如 http://example.com/css/bootstrap.css找不到。

到目前为止我已经尝试过

1-(/|$)(.*)在前端路径的and处添加

2-添加具有相同支持和端口和路径的前端路径的副本/.*

他们都没有解决问题。

这是描述结果:

Name:             test-ingress
Namespace:        default
Address:          127.0.0.1
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host        Path  Backends …
Run Code Online (Sandbox Code Playgroud)

yaml kubernetes kubernetes-ingress nginx-ingress

2
推荐指数
1
解决办法
1432
查看次数

如何仅在入口上允许多个 IP

我有很多 IP,我只想允许这些 IP 进入我的入口

我知道我可以在入口注释中做到这一点,

nginx.ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/16

但我想要的是我有多个 IPS,而不仅仅是10.0.0.0/16 因此,如果例如我有像178.1.0.2/17、 、 之类的 IP 10.0.0.0/16178.2.0.3/18并且我只想允许这些 IP 进入我的入口,那么我怎样才能实现这一点。

kubernetes google-kubernetes-engine kubernetes-ingress nginx-ingress gke-networking

2
推荐指数
1
解决办法
7225
查看次数

如何使用 Helm 在 Nginx Ingress 中设置服务器片段配置

相关 Github 问题:https://github.com/kubernetes/ingress-nginx/issues/6519

apiVersion: v1
data:
  server-snippet: |
    if ($http_x_azure_fdid !~* "55ce4ed1-4b06-4bf1-b40e-4638452104da" ) {
        return 403;
    }
  use-forwarded-headers: "true"
kind: ConfigMap
Run Code Online (Sandbox Code Playgroud)

在以下方法中设置值时如何使用 helm 实现上述配置?

helm upgrade --install nginx-ingress-controller ingress-nginx/ingress-nginx \
    --namespace "${namespace}" \
    --version "${chart_version}" \
    --set controller.replicaCount="${replicas}" \
    --set-string controller.config.use-forwarded-headers=true \
    --set-string controller.config.server-snippet=<?> \
    --debug
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm azure-aks nginx-ingress azure-front-door

2
推荐指数
1
解决办法
2226
查看次数

Kubernetes Ingress 路径优先级(ingress-nginx)

我部署了 2 个基于 angular 的前端应用程序。我使用k8s.gcr.io/ingress-nginx/controller:v0.44.0具有以下配置的ingress-nginx ( ) 将请求路由到这些应用程序:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: portal-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
  - http:
      paths:
      - path: /?(.*)
        backend:
          serviceName: app1
          servicePort: 80
      - path: /app2
        backend:
          serviceName: app2
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

当我点击<ip-address>/它时它路由到app1,但是当我点击<ip-address>/app2它时路由回app1。

nginx kubernetes kubernetes-ingress azure-aks nginx-ingress

2
推荐指数
1
解决办法
1090
查看次数