我已经在我的 ubuntu 机器上部署了egress-operator,这个操作员在内部使用envoy代理来控制出口流量。
这个想法是只允许来自 test-pod 的白名单域用于出口。我已经应用了yaml
这个运营商的外部服务,但它给出了相反的结果,而不是允许google.com
它阻止 google.com 并允许其他调用。我可能做错了什么?
我的 ExternalService.yaml
apiVersion: egress.monzo.com/v1
kind: ExternalService
metadata:
name: google
spec:
dnsName: google.com
# optional, defaults to false, instructs dns server to rewrite queries for dnsName
hijackDns: true
ports:
- port: 80
- port: 443
protocol: TCP
minReplicas: 1
maxReplicas: 3
我的 testpod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
namespace: testNs-system
labels:
egress.monzo.com/allowed-gateway: google
spec:
containers:
- image: nginx:1.14.2
command:
- "sleep"
- "604800"
imagePullPolicy: IfNotPresent
name: nginx
restartPolicy: Always
从 testpod 何时curl -v https://google.com
被阻止并且允许其他 url。根据运营商的自述文件,我还需要一个默认拒绝出口 K3s 策略,因此我也应用了它。但在default-deny-Egress
政策之后,包括 google.com(列入白名单的那个)在内的所有出口呼叫都被 testpod 阻止了。
Default-Deny-All-Egress.yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all-egress
namespace: testNs-system
spec:
podSelector:
matchLabels:
app: nginx
egress.monzo.com/allowed-gateway: google
policyTypes:
- Egress
egress: []
如何路由来自 egress-operator pod 或 egress-operator 网关的出口流量?