带有微服务的 Kubernetes 网络策略

标签 kubernetes

问题:

Kubernetes 的网络策略没有按预期运行(导出和入口似乎切换到我?)更重要的是,我似乎无法在不阻塞前端的情况下直接锁定网络流量访问/api/路由。

代码设置:

使用 Axios 与后端对话的前端(React)。设置为微服务并使用 Ingress 根据路由适本地推送流量。外部托管数据库。

Kubernetes 设置

  • 前端部署与服务
  • API部署与服务
  • 依赖于 http 路径的入口服务。
  • 集群外的外部管理数据库。

  • 有问题的网络策略:
    kind: NetworkPolicy
    apiVersion: networking.k8s.io/v1
    metadata:
      name: api-blocking
    spec:
      podSelector:
        matchLabels:
          component: api
      policyTypes:
        - Ingress
        - Egress
      ingress:
        - from:
            - ipBlock:
                cidr: 111.111.111.0/32
          ports:
            - port: 98711
      egress:
        - to:
            - podSelector:
                matchLabels:
                  component: frontend
          ports:
            - port: 3000
    

    允许进入具有特定端口号的特定 CIDR 的流量允许 db 获取适本地发生。允许到前端的导出流量有助于前端能够获取后端数据。

    但是,网络策略的任何组合都不会阻止用户转到/api/,而不会导致前端崩溃。希望找到一种方法来锁定它并只允许特定的客户端 pod 连接到后端?

    ....输入此内容后,也许我需要入口服务的网络策略?

    更新:
    我尝试使用网络插件特定规则。

    我编写规则的方式是只允许入口和导出的“前端”端点访问/api/http 路由。它似乎并没有阻止它从访问 API 的网络流量中分离出来。

    具有占位符值的部分示例:
    ingress:
        - fromEndpoints:
            - matchLabels:
                component: frontend
          toPorts:
            - ports:
                - port: '1111'
              rules:
                http:
                  - path: '/api/ping'
    

    最佳答案

    I can't seem to lock down web traffic from accessing the /api/ route directly without also blocking the frontend.



    我认为标准网络策略对象不可能做到这一点,因为它只允许您根据 pods, namespaces and IPs 将流量列入白名单。 .

    对我来说,Calico Network Policies 似乎更细化。 (检查 for Application layer policy)。

    关于带有微服务的 Kubernetes 网络策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56615107/

    相关文章:

    kubernetes - 如何将 OpenStack 卷附加到 Kubernetes 静态 Pod?

    kubernetes - 集群上的事件与 kustomize 之间的区别

    kubernetes - 如何获取谷歌云平台服务的DNS名称?

    amazon-web-services - 如何在AWS EC2上对Rancher和Kubernetes集群进行自动扩展?

    ssl - 点燃 pod 之间的 TLS 通信

    kubernetes - minReadySeconds如何影响就绪探针?

    kubernetes - 不使用 kubectl cp 将文件复制到 kubernetes pod 中

    kubernetes - 可以在其他 namespace 中设置kubernetes监视

    kubernetes - Kubernetes Engine和Container Engine有什么区别?为什么后者没有出现在我的仪表板上?

    kubernetes - storageClassName “standard”的GKE PersistentVolumeClaim永远处于待命状态