Мы хотим, чтобы Istio разрешал входящий трафик в службу только из определенного пространства имен. Как мы можем сделать это с Istio? Мы работаем с версией Istio 1.1.3.
Обновление:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: test-app-ingress
namespace: test-ns
spec:
podSelector:
matchLabels:
app: testapp
ingress:
- ports:
- protocol: TCP
port: 80
from:
- podSelector:
matchLabels:
istio: ingress
Это не сработало. Я могу получить доступ к сервису и из других пространств имен. Далее я попробовал:
apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRole
metadata:
name: external-api-caller
namespace: test-ns
spec:
rules:
- services: ["testapp"]
methods: ["*"]
constraints:
- key: "destination.labels[version]"
values: ["v1", "v2"]
---
apiVersion: "rbac.istio.io/v1alpha1"
kind: ServiceRoleBinding
metadata:
name: external-api-caller
namespace: test-ns
spec:
subjects:
- properties:
source.namespace: "default"
roleRef:
kind: ServiceRole
name: "external-api-caller"
Я могу получить доступ к сервису из всех пространств имен. Где я ожидал, это должно быть разрешено только из пространства имен «по умолчанию»