使用 Azure CNI 网络策略仅允许从 Kubernetes pod 出口到特定 FQDN/DNS
Allow egress from a Kubernetes pod to only specific FQDN/DNS with Azure CNI Network Policies
如何使用 Azure CNI 网络策略将来自 Kubernetes pod 的出口限制为仅特定 FQDN/DNS?
这可以通过以下方式实现:
Istio
apiVersion: config.istio.io/v1alpha2
kind: EgressRule
metadata:
name: googleapis
namespace: default
spec:
destination:
service: "*.googleapis.com"
ports:
- port: 443
protocol: https
纤毛
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "fqdn"
spec:
endpointSelector:
matchLabels:
app: some-pod
egress:
- toFQDNs:
- matchName: "api.twitter.com"
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": kube-system
"k8s:k8s-app": kube-dns
toPorts:
- ports:
- port: "53"
protocol: ANY
rules:
dns:
- matchPattern: "*"
OpenShift
apiVersion: network.openshift.io/v1
kind: EgressNetworkPolicy
metadata:
name: default-rules
spec:
egress:
- type: Allow
to:
dnsName: www.example.com
- type: Deny
to:
cidrSelector: 0.0.0.0/0
如何使用 Azure CNI 网络策略完成类似的事情?
应用 K8s 网络策略
`
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-rules
spec:
podSelector:
matchLabels:
role: pod_role
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
- host: www.example.com
`
参考https://kubernetes.io/docs/concepts/services-networking/network-policies/
AKS 不支持具有 FQDN/DNS 规则的 ATM 网络策略。
如果您使用 Azure CNI 和 Azure Policy 插件,您将获得默认的 Kubernetes 网络策略。
如果您使用 Azure CNI 和 Calico Policy 插件,您将获得高级的可能性,例如全球网络政策,而不是 FQDN/DNS。不幸的是,这是 Calico Cloud 上的付费功能。
如何使用 Azure CNI 网络策略将来自 Kubernetes pod 的出口限制为仅特定 FQDN/DNS?
这可以通过以下方式实现:
Istio
apiVersion: config.istio.io/v1alpha2
kind: EgressRule
metadata:
name: googleapis
namespace: default
spec:
destination:
service: "*.googleapis.com"
ports:
- port: 443
protocol: https
纤毛
apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
name: "fqdn"
spec:
endpointSelector:
matchLabels:
app: some-pod
egress:
- toFQDNs:
- matchName: "api.twitter.com"
- toEndpoints:
- matchLabels:
"k8s:io.kubernetes.pod.namespace": kube-system
"k8s:k8s-app": kube-dns
toPorts:
- ports:
- port: "53"
protocol: ANY
rules:
dns:
- matchPattern: "*"
OpenShift
apiVersion: network.openshift.io/v1
kind: EgressNetworkPolicy
metadata:
name: default-rules
spec:
egress:
- type: Allow
to:
dnsName: www.example.com
- type: Deny
to:
cidrSelector: 0.0.0.0/0
如何使用 Azure CNI 网络策略完成类似的事情?
应用 K8s 网络策略
`
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-rules
spec:
podSelector:
matchLabels:
role: pod_role
policyTypes:
- Egress
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
- host: www.example.com
`
参考https://kubernetes.io/docs/concepts/services-networking/network-policies/
AKS 不支持具有 FQDN/DNS 规则的 ATM 网络策略。
如果您使用 Azure CNI 和 Azure Policy 插件,您将获得默认的 Kubernetes 网络策略。
如果您使用 Azure CNI 和 Calico Policy 插件,您将获得高级的可能性,例如全球网络政策,而不是 FQDN/DNS。不幸的是,这是 Calico Cloud 上的付费功能。