Моя настройка: Запуск EKS 1.14 с Calico и Istio 1.5.
Попытка заставить образец bookinfo работать с указанными c NetworkPolicies.
Я применил GlobalNetworkPolicy, который запрещает все трафик c:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: default-deny
spec:
selector: all()
types:
- Ingress
- Egress
Я также добавил GlobalNetworkPolicy для Istio в пространство имен и трафик внутри имен c:
apiVersion: projectcalico.org/v3
kind: GlobalNetworkPolicy
metadata:
name: allow-istio-system-to-ns
spec:
selector: all()
namespaceSelector: istio-injection == 'enabled'
types:
- Ingress
- Egress
ingress:
- action: Allow
source:
selector: all()
namespaceSelector: projectcalico.org/namespace == 'istio-system'
- action: Allow
source:
selector: all()
namespaceSelector: istio-injection == 'enabled'
egress:
- action: Allow
и NetworkPolicy, позволяющий входить и выходить в istio-системе
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-istio-system-all
namespace: istio-system
spec:
selector: all()
types:
- Ingress
- Egress
ingress:
- action: Allow
egress:
- action: Allow
И NetworkPolicy разрешает трафик c на входной шлюз на портах 80 и 443. Я знаю, что это избыточно, но я надеялся сократить предыдущий только до необходимого входа.
apiVersion: projectcalico.org/v3
kind: NetworkPolicy
metadata:
name: allow-istio-ingress-on-80-443
namespace: istio-system
spec:
selector: app == 'istio-ingressgateway'
ingress:
- action: Allow
protocol: TCP
destination:
ports:
- 80
- 443
Также некоторые другие, не связанные NetworkPolicies (доступ к kube-dns, metrics-server). Развертывание bookinfo работает с политиками и без них, а также с развертыванием шлюза.
Соединение между компонентами работает (я могу запустить c в один модуль и подключиться к другим). Но когда я пытаюсь получить доступ к странице продукта через шлюз с политиками, я ничего не получаю, вместо HTML, который я получаю без политик.
Я пропускаю трафик c что должно быть разрешено? Должны ли у меня быть политики для мастер-узлов или для балансировщика нагрузки где-то еще?
Редактировать: Если я разрешу все входы в istio-систему и в пространство имен, это работает. Так что я думаю, что просто пропускаю какой-то другой вход из пространства имен, есть ли способ ограничить его только балансировкой нагрузки?