通过 kubernetes 入口访问 spring 安全性
Access spring security through kubernetes ingress
我在我的后端 tls 中启用了。所以每一个流量都需要经过“https://.......”。
我可以在本地或通过 Kubernetes 中的端口转发访问它。
但是我无法通过 DNS 访问它(例如 https://hostname.net/backend/....)。
我得到的答案是:
Bad Request
This combination of host and port requires TLS.
我读到证书可能有误,但通过端口转发一切正常,所以我认为这不是问题所在。证书是自签名的。我只有我的服务器证书。
在我添加 tls 之前,everythinkg 工作正常。
这是我的服务和入口:
apiVersion: v1
kind: Service
metadata:
name: app-Core
namespace: namespace
spec:
clusterIP: xxx.xxx.xxx.xxx
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/instance: core
app.kubernetes.io/name: app
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
----------------------------------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: core-app-core
namespace: namespace
spec:
rules:
- host: hostname
http:
paths:
- backend:
serviceName: app-Core
servicePort: 8080
path: /backend(/|$)(.*)
- backend:
serviceName: app-Core
servicePort: 8080
path: /camunda(/|$)(.*)
status:
loadBalancer:
ingress:
- ip: xxx.xxx.xxx.xxx
尝试将 nginx.ingress.kubernetes.io/backend-protocol: https
注释添加到您的入口定义中。
使用 backend-protocol
注释可以指示 NGINX 应如何与后端服务通信。
默认情况下,NGINX 使用 HTTP
.
我在我的后端 tls 中启用了。所以每一个流量都需要经过“https://.......”。 我可以在本地或通过 Kubernetes 中的端口转发访问它。 但是我无法通过 DNS 访问它(例如 https://hostname.net/backend/....)。
我得到的答案是:
Bad Request
This combination of host and port requires TLS.
我读到证书可能有误,但通过端口转发一切正常,所以我认为这不是问题所在。证书是自签名的。我只有我的服务器证书。
在我添加 tls 之前,everythinkg 工作正常。
这是我的服务和入口:
apiVersion: v1
kind: Service
metadata:
name: app-Core
namespace: namespace
spec:
clusterIP: xxx.xxx.xxx.xxx
ports:
- name: http
port: 8080
protocol: TCP
targetPort: 8080
selector:
app.kubernetes.io/instance: core
app.kubernetes.io/name: app
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
----------------------------------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
name: core-app-core
namespace: namespace
spec:
rules:
- host: hostname
http:
paths:
- backend:
serviceName: app-Core
servicePort: 8080
path: /backend(/|$)(.*)
- backend:
serviceName: app-Core
servicePort: 8080
path: /camunda(/|$)(.*)
status:
loadBalancer:
ingress:
- ip: xxx.xxx.xxx.xxx
尝试将 nginx.ingress.kubernetes.io/backend-protocol: https
注释添加到您的入口定义中。
使用 backend-protocol
注释可以指示 NGINX 应如何与后端服务通信。
默认情况下,NGINX 使用 HTTP
.