要实现“不允许通过ISTIO允许外部流量”,可以使用Istio的网络策略功能来限制外部流量。下面是一个示例解决方法:
deny-external-traffic.yaml
:apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: deny-external-traffic
spec:
host: "*"
trafficPolicy:
portLevelSettings:
- port:
number: 80
tls:
mode: DISABLE
loadBalancer:
simple: ROUND_ROBIN
- port:
number: 443
tls:
mode: DISABLE
loadBalancer:
simple: ROUND_ROBIN
subsets:
- name: allow-internal
labels:
istio: allow-internal
kubectl apply -f deny-external-traffic.yaml
allow-internal-traffic.yaml
,用于允许来自Kubernetes内部的流量:apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: allow-internal-traffic
spec:
hosts:
- "*"
gateways:
- istio-system/ingressgateway
http:
- match:
- sourceLabels:
istio: allow-internal
route:
- destination:
host: "*" # 可以根据需要指定具体的服务
port:
number: 80
kubectl apply -f allow-internal-traffic.yaml
通过以上步骤,ISTIO将只允许来自Kubernetes内部的流量,所有的外部流量都将被拒绝。