我有几个关于 Kubernetes 的问题:如何保护 Kubernetes 集群?
我的计划是开发一个默认保护 Kubernetes 集群的应用程序。我已经成功编写并测试了一些网络策略。作为第二步,我想根据云提供商等在我的应用程序中动态设置这些信息。
1.)我想阻止访问主机网络以及元数据服务(我的集群在 AWS 上运行):
egress:
- to:
- ipBlock:
cidr: 0.0.0.0/0
except:
- 10.250.0.0/16 # host network
- 169.254.169.254/32 # metadata service
有谁知道我如何动态访问主机网络?我发现一个问题说你必须使用元数据服务:https ://github.com/kubernetes/kubernetes/issues/24657
有谁知道我如何知道我目前在哪个云提供商上运行?根据该信息,我想设置元数据服务 IP。
2.) 我想阻止对“kube-system”命名空间的访问:
egress:
- to:
- podSelector:
matchExpressions:
- key: namespace
operator: NotIn
values:
- kube-system
有谁知道我可以如何强制执行实际的拒绝访问?据我了解,标有“命名空间”的键只是我选择的名称。Kubernetes 怎么知道我实际上是指命名空间而不是其他意思?
3.) 我想阻止 Internet 访问:
spec:
podSelector: {}
policyTypes:
- Egress
有谁知道,像 DMZ 区域中的 DNS 服务器之类的东西是否仍然可以访问?
4.) 我想阻止与具有不同命名空间的 pod 的通信:
egress:
- to:
- namespaceSelector:
matchLabels:
project: default
在这里,我开发了一个动态设置命名空间的控制器。