路由入站流量与入站主/从属



问候人类同胞,

我正在尝试用以下注释将所有传入的流量路由到我的集群:

nginx.ingress.kubernetes.io/auth-url: http://my-auth-service/

我遵循教程,我仍然没有实现路由每个请求到我的认证模块。我遵循的是主仆战略。当我检查构造的nginx文件时,没有找到注释。

我也尝试过在我的一个次要入口文件

auth_request /auth;
auth_request_set $auth_service $upstream_http_auth_service;
proxy_pass    $request_uri
proxy_set_header X-foo-Token $auth_service;

我正在使用以下入口控制器版本

Image:       nginx/nginx-ingress:1.8.1
Ports:       80/TCP, 443/TCP, 9113/TCP, 8081/TCP
Host Ports:  0/TCP, 0/TCP, 0/TCP, 0/TCP

样本:

主入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: master-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/mergeable-ingress-type: "master"
kubernetes.io/ingress.global-static-ip-name: <cluster-ip>
nginx.ingress.kubernetes.io/ssl-redirect: "true"
# nginx.ingress.kubernetes.io/auth-url: http://my-auth-service/
spec:
tls:
- hosts:
- app.myurl.com
secretName: secret-tls
rules:
- host: app.myurl.com

奴才入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: pod-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.org/mergeable-ingress-type: "minion"
# nginx.ingress.kubernetes.io/auth-url: http://my-auth-service/
# nginx.ingress.kubernetes.io/auth-snippet: |
# auth_request /new-auth-service;
# auth_request_set $new_auth_service $upstream_http_new_auth_service;
# proxy_pass    $request_uri
# proxy_set_header X-foo-Token $new_auth_service;
nginx.org/rewrites: "serviceName={{ .Values.serviceName }} rewrite=/"
spec:
rules:
- host: {{ .Values.clusterHost }} 
http:
paths:
- path: /{{ .Values.serviceName }}/
backend:
serviceName: {{ .Values.serviceName }}
servicePort: 80

所以我能让它工作。首先,matt-j提供的url帮助我们找到了一个解决方案。

原来,我使用nginx-stable为我的入口控制器,在这里建议的文档中,我需要使用新的入口控制器版本。我按照说明进行了完全重置,因为我正在处理我的登台环境。(对于生产,我可能会采用零停机时间方法)。安装后,我遇到了一个已知的问题,这与webhook有关,类似的错误可以在这里看到。基本上克服这个错误的一个解决方案是删除validatingwebhookconfigurations。最后,我应用了入口配置,并做了一些调整,以使用适当的注释,这就产生了魔力。

注意:我遇到了一个关于如何转发授权请求到我的内部集群服务的问题,以修复我使用kubernetes pod的FQDN。

注2:我删除了master minion的概念,因为它们在kubernetes/ingress-nginx中会自动合并更多信息在这里

以下是固定的示例:

主入口

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: master-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/ingress.global-static-ip-name: <PUBLIC IP>
spec:
rules:
- host: domain.com

孩子进入

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ .Values.serviceName }}-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/auth-url: http://<SERVICE NAME>.<NAMESPACE>.svc.cluster.local # using internal FQDN 
spec:
rules:
- host: {{ .Values.clusterHost }} 
http:
paths:
- path: /{{ .Values.serviceName }}(/|$)(.*)
backend:
serviceName: {{ .Values.serviceName }}
servicePort: 80

相关内容

  • 没有找到相关文章

最新更新