Rol*_*ron 8 kubernetes nginx-ingress
使用 Nginx Ingress Controller,我们希望公开 Kubernetes 服务的不同路径,具有不同的安全要求。
/
向公众开放
/white-list
只允许来自特定 IP 地址的连接
/need-key
需要 API 密钥
我在 AWS EKS 中运行。Kubernetes 版本如下v1.12.6-eks-d69f1b
:
如果我们使用注释,它们将应用于整个服务。理想情况下,我只想将注释应用于路径。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myServiceA
annotations:
# use the shared ingress-nginx
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myServiceA.foo.org
http:
paths:
- path: /
backend:
serviceName: myServiceA
servicePort: 80
- path: /white-list
backend:
serviceName: myServiceA
servicePort: 80
**NEED SOMETHING HERE TO WHITELIST**
- path: /need-key
backend:
serviceName: myServiceA
servicePort: 80
**NEED SOMETHING HERE TO USE API-KEY**
Run Code Online (Sandbox Code Playgroud)
我得到的结果最终适用于所有路径。我可以在没有 API-Key 的情况下生活,因为我可以将其编码出来,但理想情况下,我宁愿将其在容器外部进行管理。
有人用 NGINX Ingress 控制器完成了这个任务吗?
要为每个路径应用注释,您可以ingress
为要应用的每个路径编写一条规则。Nginx Ingress Controller 将ingress
自行收集这些规则并相应地应用。
例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myServiceA-root
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: myServiceA.foo.org
http:
paths:
- path: /
backend:
serviceName: myServiceA
servicePort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-myServiceA-white-list
annotations:
kubernetes.io/ingress.class: "nginx"
ingress.kubernetes.io/whitelist-source-range: X.X.X.X/32
spec:
rules:
- host: myServiceA.foo.org
http:
paths:
- path: /white-list
backend:
serviceName: myServiceA
servicePort: 80
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6868 次 |
最近记录: |