Envoy 离群检测

outlier detection 在异常检测领域中,常常需要决定新观察的点是否属于与现有观察点相同的分布(则它称为inlier),或者被认为是不同的(称为outlier)。离群是异常的数据,但是不一定是错误的数据点。 在Envoy中,离群点检测是动态确定上游集群中是否有某些主机表现不正常,然后将它们从正常的负载均衡集群中删除的过程。outlier detection可以与healthy check同时/独立启用,并构成整个上游运行状况检查解决方案的基础。 此处概念不做过多的说明,具体可以参考官方文档与自行google 监测类型 连续的5xx 连续的网关错误 连续的本地来源错误 更多介绍参考官方文档 outlier detection 离群检测测试 说明,此处只能在单机环境测试更多还的参考与实际环境 环境准备 docker-compose 模拟后端5个节点 yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 version: '3' services: envoy: image: envoyproxy/envoy-alpine:v1....

 ·  · 

Envoy的主动健康监测

实验文件 docker-compose yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 version: '3' services: envoy: image: envoyproxy/envoy-alpine:v1.15-latest environment: - ENVOY_UID=0 - HEALTHY=ok ports: - 80:80 - 443:443 - 82:9901 volumes: - ....

 ·  · 

Envoy V3APi 开启 TLS

方案架构 本次实例与官方Envoy front_proxy Example相似,首先会有一个Envoy单独运行。ingress的工作是给其他地方提供一个入口。来自外部的传入连接请求到这里,前端代理将会决定他们在内部的转发路径。 图源自Envoy官网文档 front_proxy 生成证书 text 1 openssl req -nodes -new -x509 -keyout certs/server.key -out certs/server.crt -days 365 -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=studyenvoy/OU=studyenvoy/CN=*.studyenvoy.cn" envoy配置说明 v3 api中envoy去掉了tls_context的配置,配置tls首先需要熟悉envoy的如下两个术语 Downstream:下游主机连接到 Envoy,发送请求并或获得响应。 Upstream:上游主机获取来自 Envoy 的链接请求和响应。 本次使用的是ingress的代理,需要配置的即为 Downstream v3api中使用的是transport_socket,transport_socket为 listeners 当中某一个 filter_chains 中上线文中的配置。 transport_socket 官方说明为: (config.core.v3.TransportSocket) Optional custom transport socket implementation to use for downstream connections. To setup TLS, set a transport socket with name tls and DownstreamTlsContext in the typed_config. If no transport socket configuration is specified, new connections will be set up with plaintext....

 ·  · 

envoy官方example运行失败问题处理

镜像内安装包失败处理 方法一:修改Dockerfile,在Dockerfile中增加如下 ubuntu示例 text 1 2 RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list RUN sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list apline示例 text 1 RUN sed -i 's@http://dl-cdn.alpinelinux.org/@https://mirrors.aliyun.com/@g' /etc/apk/repositories 方法二:使用http代理, ubuntu 参考 命令行使用代理 下载镜像失败处理 方法一:docker宿主机使用ss,开启局域网可连接。同局域网中的都可直接连此代理 方法二: docker systemd的 service文件中增加http代理 可看到已经可以成功运行envoy example示例 cannot bind ‘0.0.0.0:80’: Permission denied docker-compose文件 yaml 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 version: '3' services: envoy: image: envoyproxy/envoy-alpine:v1.15-latest volumes: - ....

 ·  · 

服务网格安全体系

服务网格安全框架 Microservice Security Basics 零信任安全 | 什么是零信任网络? 零信任是一种安全模型,其基础是维护严格的访问控制并且默认不信任任何人,即便是已在网络边界内的人。零信任安全 IAAA (Identification and Authentication, Authorization and Accountability Identification: 必须支持多个身份和属性 Your name, username, ID number, employee number, SSN etc. “I am Thor”. Authentication: 必须支持多种认证方式以及委托认证方式 Authorization: 对于单个请求的授权可以在请求路径中的多个点确认 Accountability: 从API中捕获相关安全数据或元数据 服务网格常见安全解决方案 网络级别控制 Network Level Contros local isolation 主机隔离 Network segementation 网络分割 意味着新人底层的服务器及网络设施,信任隔离机制及实现过程且信任网段内的所有组件; SSL/TLS mTLS、spiffe/spire 应用级别控制 Network Level Contros 传统网络令牌认证 Traditional Web Tokens API-oriented Tokens OAuth 2.0 OpenID Connect JWT TokenTypes Opaque tokens Transparent tokens 基于cookie的会话 cookie based sessions SAML Security Assertion Markup Language 一种基于XML开源标准的数据格式,它在当事方之间交换身份验证和授权数据,尤其是在身份提供者和服务提供者之间交换。 Envoy的身份认证机制 传输认证 传输认证:即服务组件的认证,它基于双向TLS实现传输认证(即mTLS),包括双向认证、信道安全和证书自动管理;每个服务都需要有其用于服务间双向认证的标识,以实现此种认证机制;...

 ·  ·