Kubernetes Nginx入口忽略ConfigMap和注释
我已经建立了一个k8s集群(目前有1个裸机节点,它既是主节点又是工作节点)。我还设置了Nginx入口控制器,如下所述:以下是具体步骤:Kubernetes Nginx入口忽略ConfigMap和注释,kubernetes,nginx-ingress,Kubernetes,Nginx Ingress,我已经建立了一个k8s集群(目前有1个裸机节点,它既是主节点又是工作节点)。我还设置了Nginx入口控制器,如下所述:以下是具体步骤: kubectl应用-f common/ns和sa.yaml(无修改) kubectl应用-f rbac/rbac.yaml(无修改) kubectl apply-f通用/默认服务器机密.yaml(无修改) kubectl apply-f common/nginx config.yaml修改文件: kind:ConfigMap 版本:v1 元数据: 名称:ngin
kubectl应用-f common/ns和sa.yaml
(无修改)kubectl应用-f rbac/rbac.yaml
(无修改)kubectl apply-f通用/默认服务器机密.yaml
(无修改)kubectl apply-f common/nginx config.yaml
修改文件:kind:ConfigMap
版本:v1
元数据:
名称:nginx config
名称空间:nginx入口
数据:
忽略无效的标题:“false”
使用转发的标题:“true”
转发至标头:“CF连接IP”
代理真实ip cidr:“…ip转到此处…”
kubectl应用-f通用/入口类.yaml
修改文件:kubectl apply-f common/crds/k8s.nginx.org\u virtualserver.yaml
kubectl apply-f common/crds/k8s.nginx.org_virtualserverroutes.yaml
kubectl apply-f common/crds/k8s.nginx.org_transportservers.yaml
kubectl apply-f common/crds/k8s.nginx.org_policies.yaml
无修改,链接:
kubectl apply-f守护程序集/nginx-ingres.yaml
(无修改)nginx.org/rewrite-target://$1
等注释
例如:
apiVersion:networking.k8s.io/v1
种类:入口
元数据:
名称:示例com
名称空间:示例com
注释:
nginx.org/rewrite-target://$1
规格:
名称:nginx
tls:
-主持人:
-example.com
secretName:示例com tls
规则:
-主持人:example.com
http:
路径:
-路径:/api/(*)
路径类型:特定于实现
后端:
服务:
名称:api
端口:
电话:80
-路径:/(*)
路径类型:特定于实现
后端:
服务:
名称:前端
端口:
电话:80
当然,使用的是真正的域名。在这个例子中,我得到404nginx错误。在其他入口中,我传递/proxy body size
注释,该注释也不起作用(无法上载大文件)
我已经用kubectl-n nginx-ingres exec-it nginx-ingres snjjp bashexec
进入了入口控制器吊舱,并查看了/etc/nginx/conf.d
中的文件。所有文件均不包含ConfigMap或批注中指定的配置
这就是它的样子(我删除了额外的空行并替换了域名):
我还尝试了nginx.ingres.kubernetes.io/
annotations(正如你所见,我不是专业人士,这是我在谷歌上搜索到的)。没有成功
我正在更新我的集群,使用旧版本的k8s(我想是1.15),几天前一切正常。当然,除了入口控制器之外,我对每个服务都使用了完全相同的配置
有什么想法吗?我已经找到了问题所在。我在旧的设置中使用了Kubernetes Nginx Ingress Controller,现在使用的是Nginx Ingress Controller这些实现有不同的注释(后者缺少许多有用的注释)。这真的很混乱,因为配置是相似的,人们可能会认为它们是相同的
# configuration for example-com/example-com
upstream example-com-example-com-example.com-api-80 {
zone example-com-example-com-example.com-api-80 256k;
random two least_conn;
server 10.32.0.4:80 max_fails=1 fail_timeout=10s max_conns=0;
}
upstream example-com-example-com-example.com-frontend-80 {
zone example-com-example-com-example.com-frontend-80 256k;
random two least_conn;
server 10.32.0.27:80 max_fails=1 fail_timeout=10s max_conns=0;
}
server {
listen 80;
listen 443 ssl;
ssl_certificate /etc/nginx/secrets/example-com-example-com-tls;
ssl_certificate_key /etc/nginx/secrets/example-com-example-com-tls;
server_tokens on;
server_name example.com;
set $resource_type "ingress";
set $resource_name "example-com";
set $resource_namespace "example-com";
if ($scheme = http) {
return 301 https://$host:443$request_uri;
}
location /api/(.*) {
set $service "api";
proxy_http_version 1.1;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
client_max_body_size 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering on;
proxy_pass http://example-com-example-com-example.com-api-80;
}
location /(.*) {
set $service "frontend";
proxy_http_version 1.1;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
client_max_body_size 1m;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering on;
proxy_pass http://example-com-example-com-example.com-frontend-80;
}
}