我有一种情况,我打算在Kubernetes集群中使用两个单独的traefik入口控制器。
我有一些URL仅想通过VPN访问,而很少一些可以公开访问。
[在当前体系结构中,我有一个traefik-inress控制器,以及两个单独的ALB,一个是内部的,一个是面向互联网的,都指向traefik。假设我有一个网址public.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