首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使服务只能从内网Kubernetes访问

使服务只能从内网Kubernetes访问
EN

Stack Overflow用户
提问于 2018-02-13 17:52:28
回答 3查看 1.1K关注 0票数 2

我收到了kubernetes服务的公共ip地址,我可以将其配置为NGINX入口中的负载均衡器ip。可以从公共互联网访问此公共ip地址。

有没有一种方法或配置可以使这些服务只能从kubernetes中的客户端网络访问?

EN

回答 3

Stack Overflow用户

发布于 2018-02-13 20:20:44

使用Kubernetes Nginx Ingress,它就像在入口对象上设置注释一样简单,如下所示:

代码语言:javascript
复制
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/whitelist-source-range: '8.8.8.8/32'

https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/annotations.md#whitelist-source-range

票数 4
EN

Stack Overflow用户

发布于 2018-02-13 20:08:07

您可以按照建议使用VPN并创建一个内部LoadBalancer,或者您可以查看我认为是Kubernetes标准方式的Network Policies来实现您的解决方案。

默认情况下,如果命名空间中不存在策略,则允许所有进出该命名空间中的pods的进出流量。下面的示例允许您更改该命名空间中的默认行为。

您将需要创建一个NetworkPolicy资源,在规范中,您将必须描述利用可用字段的行为,我建议您检查official documentation以检索有关结构的更多信息。

PolicyTypes:

  • ...
  • ingress:每个NetworkPolicy可以包括白名单入口规则的列表。每条规则都允许与发件人和端口部分匹配的流量。示例策略包含一个规则,该规则匹配来自以下三个来源之一的单个端口上的流量,第一个来源是通过ipBlock指定的,第二个来源是通过namespaceSelector指定的,第三个来源是通过podSelector.
  • ...

指定的

请记住,为了实现它们,你需要使用支持NetworkPolicy,的网络解决方案,如果你只是创建资源,而没有控制器来实现它,它将不会有任何效果。

策略示例:

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: test-network-policy
  namespace: default
spec:
  podSelector:
    matchLabels:
      role: db
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - ipBlock:
        cidr: 172.17.0.0/16
        except:
        - 172.17.1.0/24
    - namespaceSelector:
        matchLabels:
          project: myproject
    - podSelector:
        matchLabels:
          role: frontend
    ports:
    - protocol: TCP
      port: 6379
  egress:
  - to:
    - ipBlock:
        cidr: 10.0.0.0/24
    ports:
    - protocol: TCP
      port: 5978
票数 2
EN

Stack Overflow用户

发布于 2018-02-14 05:42:59

使用网络策略很好。但是,更简单的方法是使用将nginx入口控制器的ExternalIP设置为客户端网络中的IP地址。这将仅在客户端网络上公开服务。

以下是helm的示例配置

代码语言:javascript
复制
helm install --name my-ingress stable/nginx-ingress \
    --set controller.service.externalIPs=<IP address in client network>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48763859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档