我有两个Kubernetes部署(DeploymentA和DeploymentB),我想知道是否有办法将所有来自DeploymentA中DeploymentB的传入流量列入白名单?因此只能通过DeploymentB来访问DeploymentA。
ClusterIP服务可用于访问Kubernetes中用于内部通信的部署,但是如何将来自特定部署(或其Pod)的所有请求列入白名单?例如,是否有一种方法可以获取特定部署的Pod的所有可能的IP地址,以将其列入白名单?
编辑1:
我有一个向Internet开放的Web应用程序,但其中的特定部分只能从特定的部署中访问。为此,我需要指定应该具有访问权限的部署的IP地址或名称。
谢谢!
答案 0 :(得分:1)
您可以使用Network policy
网络策略是有关如何允许Pod组与彼此以及其他网络端点进行通信的规范。
NetworkPolicy资源使用标签来选择容器,并定义规则以指定允许对选定容器进行哪些通信。
答案 1 :(得分:0)
以下网络策略应有助于仅允许从特定部署Pod(depA)到depB Pod的流量,因为您的问题是特定的,它将在部署之间路由流量,或者从 我们有出口规则,允许在UDP和TCP上进行流量
apiVersion: networking.k8s.io/v1
metadata:
name: foo-allow-to-hello
spec:
policyTypes:
- Ingress
- Egress
podSelector:
matchLabels:
app: depbB
ingress:
- from:
- podSelector:
matchLabels:
app: depA
egress:
- to:
- podSelector:
matchLabels:
app: depA
- ports
- protocol: UDP
port: 53
- protocol: TCP
port: 53
请注意,要强制执行上述策略,请在部署中相应地标记Pod。以下部署将适用于上述策略,请注意,吊舱上的标签与该策略中提到的标签相同。
controllers/nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: deploymentA
spec:
replicas: 3
selector:
matchLabels:
app: depA
template:
metadata:
labels:
app: depA
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80