我是Kubernetes的新手。我们有三个名称空间(dev,uat,prod)。
我们的容器具有其他服务,我们希望通过Ingress(使用客户端身份验证)将其提供给外部世界。一切正常。
但是现在,我们只需使用K8s服务名称就可以从其他命名空间上的其他容器调用rest服务。我们想阻止这种访问。
我们只允许通过各自的k8s Ingress访问Pod。我们如何实现这一目标?
我试图创建两个网络策略来实现此目的,但这不起作用。
政策1
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: default-deny-all
namespace: ns1
spec:
podSelector: {}
ingress: []
政策2
kind: NetworkPolicy
apiVersion: networking.k8s.io/v1
metadata:
name: allow-external
spec:
podSelector:
matchLabels:
tier: backend
ingress:
- from: []
应用第一个策略后,我将无法通过Ingress访问我的休息服务。 应用第二个策略后,只需使用k8s服务名称即可通过所有容器再次访问rest服务,而无需通过Ingress。
有什么方法可以实现这一目标吗?
(此外,也不可以在名称空间中添加标签)