我正试图通过Calico Cloud使用域来配置出口流量。
我知道DNS特性与付费的Calico Enterprise或Calico Cloud是可能的,就像提到的这里一样。我正在使用calico cloud试用。我可以使用destination.nets访问公平流量,但是当我使用destination.domains时,它会阻塞整个出口流量。
我的环境:
GKE cluster: 1.20.15-gke.3400
Calico version: Calico Cloud (Already connected cluster, Network Policy created via Calico Cloud UI)
Firewalls: Disabled对于测试,我使用默认的nginx pod和安装的ping。我试过ping或curl。为了方便起见,我允许任何协议。
使用网的工作配置:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: default.allow-google
spec:
tier: default
order: 0
selector: app == "nginx"
namespaceSelector: ''
serviceAccountSelector: ''
egress:
- action: Allow
source: {}
destination:
nets:
- 142.250.185.132/32 ## ip of www.google.com
- 87.248.100.216/32 ## ip of www.yahoo.com
doNotTrack: false
applyOnForward: false
preDNAT: false
types:
- Egress使用域发布策略:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: default.allow-google
spec:
tier: default
order: 0
selector: app == "nginx"
namespaceSelector: ''
serviceAccountSelector: ''
egress:
- action: Allow
source: {}
destination:
domains:
- '*.google.com'
- '*.yahoo.com'
- google.com
- yahoo.com
doNotTrack: false
applyOnForward: false
preDNAT: false
types:
- Egress问题:
提前感谢
发布于 2022-05-09 11:07:08
我缺乏kube-dns服务策略。
当您将GKE集群连接到Calico Cloud时,没有任何策略。如果您创建了nets规则,它将工作,因为它只在IPs上工作。但是,当您想要使用FQDN/DNS时,您需要创建允许连接到kube-dns服务的策略。YAML看起来如下:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: allow-kube-dns
spec:
selector: all()
egress:
- action: Allow
destination:
services:
name: kube-dns
namespace: kube-system更多细节可以找到这里。
对于故障排除,您可以检查是否使用host ($ host www.google.com)命令从dnsutils ($ apt install dnsutils)中看到任何输出。
应用以上YAML后,destination.domains策略按预期工作。
https://stackoverflow.com/questions/72139476
复制相似问题