在 istio 中限制 namespace 访问外部资源
时间:2022-07-22
本文章向大家介绍在 istio 中限制 namespace 访问外部资源,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
场景:在 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 可以直接在控制台设置。
outboundTrafficPolicy:
mode: REGISTRY_ONLY
创建 Service Entry,开放 fox 命名空间对 baidu 的访问权限。
代码如下:
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 也可以访问 )。
# 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 不可以访问
# 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 只可以为 “.” 或 “*”,分别对应着 当前命名空间 和 所有命名空间 有效。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- android使用SoundPool播放音效的方法
- android中Context深入详解
- Android中Notification通知用法详解
- Android build文件的删除的方法
- Android自定义Notification添加点击事件
- 深入理解Android Bitmap
- Android基于AlarmManager实现用户在线心跳功能示例
- 详解Android中获取软键盘状态和软键盘高度
- Android流式布局FlowLayout详解
- Linux 专题
- Go语言实现UDP通信
- Android多渠道打包的方法步骤
- Android编程实现压缩图片并加载显示的方法
- Android串口通信封装之OkUSB的示例代码
- Android 中Activity 之间传递参数