Jac*_*man 9 kubernetes-ingress
经过大量的谷歌搜索和搜索(即使在这里),我无法找到我的问题的明确答案。所以我希望这里的某个人能够为我指明正确的方向。
我有一个已经对我有用的 Kube 服务定义,但现在我只是用一个LoadBalancer
. 这是我当前的服务 yaml:
apiVersion: v1
kind: Service
metadata:
name: my-service
namespace: namespace1
labels:
app: my-service
spec:
type: LoadBalancer
selector:
app: my-service
tier: web
ports:
- name: proxy-port
port: 8080
targetPort: 8080
- name: metrics-port
port: 8082
targetPort: 8082
- name: admin-port
port: 8092
targetPort: 8092
- name: grpc-port
port: 50051
targetPort: 50051
Run Code Online (Sandbox Code Playgroud)
这显然只是 TCP 负载平衡。我想要做的是使用 Mutual TLS 来保护它,这样服务器将只接受来自我的客户端的具有授权证书的连接。
从我在 Kube 土地上所能知道的一切来看,我需要做的是一个Ingress
定义。我一直在研究我可以找到的所有文档kind:Ingress
,但似乎找不到任何可以让我在同一路径上创建Ingress
具有多个端口的单个文档的地方!
我在这里错过了什么吗?有没有办法创建一个Ingress
与上述服务定义具有相同功能的 K8s ?
据我所知,您不能将自定义端口(例如 8080)用于由 Ingress Controller(例如 NGINX HTTP(S) 代理)支持的 HTTPS LoadBalancer,因为目前 Ingress 的端口是隐式的 :80 用于 http 和 :443 用于 https,作为官方IngressRule 的文档参考解释了。
我认为解决方法是为每个服务使用不同的主机,就像这个 Ingress 资源示例一样:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: name-virtual-host-ingress
spec:
rules:
- host: proxy.foo.com
http:
paths:
- backend:
serviceName: proxy-svc
servicePort: 8080
- host: metrics.foo.com
http:
paths:
- backend:
serviceName: metrics-svc
servicePort: 8082
- host: admin.foo.com
http:
paths:
- backend:
serviceName: admin-svc
servicePort: 8092
- host: grpc.foo.com
http:
paths:
- backend:
serviceName: grpc-svc
servicePort: 50051
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9164 次 |
最近记录: |