我有一个运行多个负载平衡器的 GKE 集群和数十个站点,每个站点都在自己的部署中作为 clusterip 运行。
我想做的是注入一个包含路径,以包含每个负载均衡器(nginx 入口控制器)的各种站点配置。我没有使用 kubernetes 入口,而是使用各种负载均衡器。我有已安装的共享数据路径,其中包含所有服务器 {} nginx 配置。
我无法弄清楚的是如何让负载均衡器看到它们。我很确定它涉及一个 configmap 条目,但我相信我的语法是错误的。
只是为了确认我知道如果我能得到这个,那么我的解决方案将像我登录到负载均衡器并使用不同的配置重新加载 nginx 一样工作。
我只需要根据每个 nginx 入口控制器配置的不同路径自行发生。我在这样的每个 nginx-ingress-controllers 中使用不同的类
metadata:
annotations:
kubernetes.io/ingress.class: nginx-1
并在各自的配置中,我试图找出让它看到这些不同配置的语法
nginx.ingress.kubernetes.io/configuration-snippet: '{"http": "{include /data/nginx/sites-enabled/*;}"}'
我什至尝试为 nginx 包含一个更高级别的配置文件,其中包含 http 包含行。
我使用的安装是 helm from
https://kubernetes.github.io/ingress-nginx/deploy/
这是我尝试过的配置示例
apiVersion: v1
data:
enable-vts-status: "false"
kind: ConfigMap
metadata:
annotations:
kubernetes.io/ingress.class: nginx-1
nginx.ingress.kubernetes.io/server-snippet: |
http{
include /data/nginx/sites-enabled/*;
}
creationTimestamp: 2018-12-13T21:00:53Z
labels:
app: nginx-ingress
chart: nginx-ingress-1.0.2
component: controller
heritage: Tiller
release: nginx-controller-1
name: nginx-controller-1-nginx-ingress-controller
namespace: default
resourceVersion: "312253"
selfLink: /api/v1/namespaces/default/configmaps/nginx-controller-1-nginx-ingress-controller
我也试过把它放在数据部分。
data:
enable-vts-status: "false"
nginx.conf: |
http{
include /data/nginx/sites-enabled/*;
}
感谢您的任何帮助
更新:
这不是一个答案,但允许我继续并在单个 kubernetes 集群上使用这些多个 nginx 入口。希望这可以帮助其他人在我的鞋子..
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: mysite-ingress
annotations:
kubernetes.io/ingress.class: "nginx-2"
custom.nginx.org/rate-limiting: "on"
custom.nginx.org/rate-limiting-rate: "5r/s"
custom.nginx.org/rate-limiting-burst: "1"
spec:
rules:
- host: "mysite.com"
http:
paths:
- path: /
backend:
serviceName: mysiteservicename
servicePort: 8080
执行上述操作确实会修改 nginx.conf 并且更好的是它会自动刷新我相信的配置而无需关闭控制器。
所以看起来入口类注释确实适用于多个 nginx-ingress-controllers。最后我需要
- nginx-ingress-controller 工作负载(它还创建默认后端工作负载和负载均衡器服务)
- asp.net 核心部署工作负载(或任何您的服务)
- Cluster IP 服务(你的内部部署的暴露)
- 将 nginx.conf 条目关联到相应的入口控制器的入口服务