前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 istio 中限制 namespace 访问外部资源

在 istio 中限制 namespace 访问外部资源

原创
作者头像
谢正伟
修改2020-08-05 16:54:33
2.3K0
修改2020-08-05 16:54:33
举报
文章被收录于专栏:云原生研究云原生研究

场景:在 istio 集群中,需要使用 namespace 来隔离资源,为特定 namespace 开放集群外访问白名单。

在 istio 的 Service Entry 文档中,我们可以找到相关的功能,关键字是 exportTo,以下是试验过程:

本示例使用了 腾讯云 tcm-demo 做为试验,具体参见:https://github.com/TencentCloudContainerTeam/tcm-demo

需要至少部署 2 个 namespace 的应用,本示例部署了 base 和 fox 两个命名空间及应用。

首先将 Istio 集群的外部访问设置为 REGISTRY_ONLY(修改 ConfigMap 的 istio 配置),腾讯云 TCM 可以直接在控制台设置。

代码语言:txt
复制
outboundTrafficPolicy:
  mode: REGISTRY_ONLY

创建 Service Entry,开放 fox 命名空间对 baidu 的访问权限。

代码如下:

代码语言:txt
复制
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: baidu-external
  namespace: fox
spec:
  hosts:
  - www.baidu.com
  exportTo:
  - "."
  ports:
  - number: 443
    name: https
    protocol: TLS
  resolution: DNS
  location: MESH_EXTERNAL

通过测试:

1 带有 sidecar 的 fox 命名空间下的 pod 可以访问 (没有 sidecar 的 pod 也可以访问 )。

代码语言:txt
复制
# wget -qSO- https://www.baidu.com
  HTTP/1.1 200 OK
  Content-Length: 2443
  Content-Type: text/html
  Server: bfe
  Date: Wed, 05 Aug 2020 08:09:24 GMT
  Connection: close
  
<!DOCTYPE html>
...

2 带有 sidecar 的 其他命名空间下的 pod 不可以访问

代码语言:txt
复制
# wget -qSO- https://www.baidu.com
ssl_client: www.baidu.com: handshake failed: unexpected EOF
wget: error getting response: Connection reset by peer

上面的配置中,起到关键作用的是 namespace 和 exportTo 两项配置。

按照官方文档:当前 exportTo 只可以为 “.” 或 “*”,分别对应着 当前命名空间 和 所有命名空间 有效。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档