security - 在同一个 kubernetes 集群上安装两个 traefik 入口控制器
问题描述
我有一种情况,我打算在 Kubernetes 集群中使用两个单独的 traefik 入口控制器。
我有一些 URL,我希望只能通过 VPN 访问,而很少有可以公开访问的 URL。
在当前架构中,我有一个 traefik-ingress 控制器和两个独立的 ALB,一个内部的和一个面向互联网的,都指向 traefik。
假设我有一个 URLpublic.example.com
和private.example.com
. public.example.com
指向面向 Internet 的 ALB,并且private.example.com
指向内部 ALB。但是如果有人知道他的指向public.example.com
和指向private.example.com
相同的指向/etc/hosts
,他将能够访问我的私人网站。
为了避免这种情况,我计划运行两个单独的 traefik-ingress-controller,一个只提供私有 URL,一个提供公共 URL。这可以做到吗?或者有没有其他方法可以避免这种情况
解决方案
您可以使用集群内的单个 Ingress 控制器来实现这一点,但可以通过创建各种Ingress
Kubernetes 对象来实现。
对于私有站点:- 考虑whitelist-source-range
入口资源中的注释。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/whitelist-source-range: 10.0.0.0/24,172.10.0.1
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /testpath
pathType: Prefix
backend:
serviceName: test
servicePort: 80
对于公共网站:-
https://kubernetes.io/docs/concepts/services-networking/ingress/#the-ingress-resource
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: foo.bar.com
http:
paths:
- path: /testpath
pathType: Prefix
backend:
serviceName: test
servicePort: 80
推荐阅读
- python - 平均定义 - Python
- reactjs - 如何更改 StoryBook 上的画布背景颜色?
- amazon-web-services - 在 aws -terraform 中使用凭证获取 accountid:getcalleridentity 时出错
- spring-boot - Spring 资源加载在“特定”上下文路径上失败
- java - 解释 Java 代码实际上是什么意思?
- php - 忽略setter注入中缺少的方法
- ios - 我的键盘读取 SMS OTP 的正确格式是什么?iOS
- python - 如何在 Python 列表中查找特定模式?
- pyspark - 通过pyspark向kudu写入数据
- swift - 为什么 UIBarButtonItem 目标和动作为零?