Service Mesh chapter deprecated, redirect to https://jimmysong.io/istio-handbook
parent
e8b224a158
commit
94b362bd0c
|
@ -2,7 +2,7 @@
|
|||
|
||||
[Kubernetes](http://kubernetes.io)是Google基于[Borg](https://research.google.com/pubs/pub43438.html)开源的容器编排调度引擎,作为[CNCF](http://cncf.io)(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,Kubernetes可以帮你将系统自动地达到和维持在这个状态。Kubernetes作为云原生应用的基石,相当于一个云操作系统,其重要性不言而喻。
|
||||
|
||||
本书记录了本人从零开始学习和使用Kubernetes的心路历程,着重于经验分享和总结,同时也会有相关的概念解析,希望能够帮助大家少踩坑,少走弯路,还会指引大家关于关注Kubernetes生态周边,如微服务构建、DevOps、大数据应用、Service Mesh、Cloud Native等领域。
|
||||
本书记录了本人从零开始学习和使用Kubernetes的心路历程,着重于经验分享和总结,同时也会有相关的概念解析,希望能够帮助大家少踩坑,少走弯路,还会指引大家关于关注Kubernetes生态周边,如微服务构建、DevOps、大数据应用、[Service Mesh](https://jimmysong.io/posts/what-is-a-service-mesh/)、Cloud Native等领域。
|
||||
|
||||
本书的主题不仅限于Kubernetes,还包括以下几大主题:
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Service Mesh技术对比
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
这一章主要讲解Service Mesh技术之间的区别,Service Mesh与其他相关技术之间的区别,读者可以直接浏览该网站来查看对比:http://layer5.io/service-meshes/
|
||||
|
||||
为什么有了如Kubernetes这样的容器编排我们还需要Service Mesh呢,下表是对容器编排调度器的核心功能和缺少的服务级别能力对比。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 配置请求的路由规则
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
在上一节[安装istio](istio-installation.md)中我们创建[BookInfo](https://istio.io/docs/samples/bookinfo.html)的示例,熟悉了Istio的基本功能,现在我们再来看一下istio的高级特性——配置请求的路由规则。
|
||||
|
||||
使用istio我们可以根据**权重**和**HTTP headers**来动态配置请求路由。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# SOFAMesh中运行Dubbo on x-protocol
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
原文作者:彭泽文,阿里巴巴UC事业部高级开发工程师,有改动。
|
||||
|
||||
X-protocol 的定位是云原生、高性能、低侵入性的通用 Service Mesh 落地方案,依托 Kubernetes 基座,利用其原生的服务注册和服务发现机制,支持各种私有 RPC 协议低成本、易扩展的接入,快速享受 Service Mesh 所带来的红利。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Envoy 作为前端代理
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
本文是使用 Envoy 作为前端代理的介绍,仅使用 docker 容器和 docker-compose 做编排在单机中运行,帮助我们从更底层了解 Envoy,当我们将 Envoy 作为 Istio Service Mesh 的 data panel 的时候将更加游刃有余。
|
||||
|
||||
## 快速开始
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Envoy mesh 教程
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
本文是在 Kubernetes 集群中,使用 Envoy 来做 mesh,来为一个简单的使用 Python 编写的 Flask 应用程序做反向代理和负载均衡。
|
||||
|
||||
**注**:本教程中的示例来自 [envoy-steps](https://github.com/datawire/envoy-steps),本文中使用的所有的代码和 YAML 配置见 [envoy-tutorial](https://github.com/rootsongjc/envoy-tutorial)。
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
# Envoy 的架构与基本术语
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
在了解一门技术之前一开始就要了解其中的基本概念和术语,只有融入了该语境才能理解这门技术。本文将为大家介绍 Envoy 中的基本术语和重点概念。
|
||||
|
||||
## 架构
|
||||
|
||||
下图是 Envoy proxy 的架构图,显示了 host B 经过 Envoy 访问 host A 的过程。每个 host 上都可能运行多个 service,Envoy 中也可能有多个 Listener,每个 Listener 中可能会有多个 filter 组成了 chain。
|
||||
|
||||
![Envoy proxy 架构图](../images/envoy-arch-v0.1.png)
|
||||
![Envoy proxy 架构图](../images/envoy-arch.png)
|
||||
|
||||
其中的基本术语将在下面解释。
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
# Envoy
|
||||
|
||||
[Envoy](https://github.com/envoyproxy/envoy) 是一款由 Lyft 开源的,使用 C++ 编写的 L7 代理和通信总线,目前是 [CNCF](https://cncf.io) 旗下的开源项目,代码托管在 GitHub 上,它也是 [Istio](https://istio.io) service mesh 中默认的 data plane。
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
[Envoy](https://github.com/envoyproxy/envoy) 是一款由 Lyft 开源的,使用 C++ 编写的 L7 代理和通信总线,目前是 [CNCF](https://cncf.io) 旗下的开源项目且已经毕业,代码托管在 GitHub 上,它也是 [Istio](https://istio.io) service mesh 中默认的 data plane。
|
||||
|
||||
ServiceMesher 共同联合翻译了 [Envoy 最新版本的官方文档](https://www.envoyproxy.io/docs/envoy/latest/),翻译的代码托管在 <https://github.com/servicemesher/envoy>,Envoy 官方文档中文版地址:<http://www.servicemesher.com/envoy/>。
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 安装和拓展 Istio mesh
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)**。
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
## 前置条件
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 集成虚拟机
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
该示例跨越 Kubernetes 集群和一组虚拟机上部署 Bookinfo 服务,描述如何使用 Istio service mesh 将此基础架构以单一 mesh 的方式操控。
|
||||
|
||||
> 注意:本文档还在建设中,并且只在 Google Cloud Platform 上进行过测试。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 如何参与 Istio 社区及注意事项
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
本文讲述了如何参与 Istio 社区和进行 Istio 开发时需要注意的事项。
|
||||
|
||||
### 工作组
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# 安装并试用Istio service mesh
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)**。
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
官方文档地址 [快速开始](https://istio.io/docs/setup/kubernetes/)
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Istio 教程
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
本文是 Istio 管理 Java 微服务的案例教程,使用的所有工具和软件全部基于开源方案,替换了 [redhat-developer-demos/istio-tutorial](https://github.com/redhat-developer-demos/istio-tutorial) 中的 minishift 环境,使用 [kubernetes-vagrant-centos-cluster](https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster) 替代,沿用了原有的微服务示例,使用 Zipkin 做分布式追踪而不是 Jaeger。
|
||||
|
||||
本文中的代码和 YAML 文件见 <https://github.com/rootsongjc/istio-tutorial>。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Istio 免费学习资源汇总
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
8月1日0点,[Istio 1.0发布,已生产就绪!](http://www.servicemesher.com/blog/announcing-istio-1.0/)大家都已经跃跃欲试了,几天前我发布了[一键在本地搭建运行Istio 1.0的分布式Kubernetes集群](https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster)教程,在本地搭建起来还是有些门槛,稍显复杂,现在我推荐几个可以在线上学习的地方。这是目前搜集的比较完整的Isito学习环境和包含代码的示例教程有如下几个:
|
||||
|
||||
目前搜集的比较完整的Isito学习环境和包含代码的示例教程有如下几个:
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Istio简介
|
||||
|
||||
**注意:Istio 1.10于2018年8月1日发布1.0,关于Istio的更多信息请见Istio官方文档:<https://istio.io>,中文版:<https://istio.io/zh>**。
|
||||
**注意:Istio 1.10于2018年8月1日发布1.0,关于Istio的更多信息请见Istio官方文档:<https://istio.io>,中文版:<https://istio.io/zh>,本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
[Istio](https://istio.io)是由Google、IBM和Lyft开源的微服务管理、保护和监控框架。Istio为希腊语,意思是”起航“。
|
||||
|
||||
|
@ -41,11 +41,7 @@ Amalgam8是一款基于内容和版本的路由布局,用于集成多语言异
|
|||
|
||||
下面是Istio的架构图。
|
||||
|
||||
![Istio架构图](../images/istio-arch-v0.1.jpg)
|
||||
|
||||
下图是Istio中控制平面与数据平面的交互流程图。
|
||||
|
||||
![Istio的控制平面和数据平面](../images/istio-arch.jpg)
|
||||
![Istio架构图](../images/istio-arch.jpg)
|
||||
|
||||
Istio架构分为控制平面和数据平面。
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
## 采纳和演进
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
没有人会一下子采纳Service Mesh架构的所有组件,或者一次性将所有的应用都改造成Service Mesh的,都是渐渐式采纳,从非核心系统开始改造。采纳Service Mesh就两种路径:
|
||||
|
||||
- 全盘采纳:通常对于新应用来说才会这样做,也叫做Greenfiled项目
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 总结
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
最后是对全书的总结,2018年必然是一场服务网格或者说Proxy的战争。
|
||||
|
||||
### 用还是不用
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 定制和集成
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
例如Istio这样的Service Mesh中有很多地方可以给大家定制,例如作为数据平面的sidecar,虽然默认使用的是Envoy,但是你可以开发自己的sidecar代理;还有Mixer中的各种adpater,你也可以开发自己的adapter来扩展遥测和鉴权功能,[Consul Connect](http://www.servicemesher.com/blog/consul-1-2-service-mesh/)就是个例子。
|
||||
|
||||
当前可选择的开源的代理可以在[landscape](http://layer5.io/landscape/)里找到,例如使用nginMesh替代Envoy作为数据平面。下图是使用nginMesh作为sidecar的架构图。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Service Mesh基础
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
> 本文是对[The Enterprise Path to Service Mesh Architecutures](https://www.nginx.com/resources/library/the-enterprise-path-to-service-mesh-architectures/)一书的解读。
|
||||
|
||||
微服务将原先的单体架构中的应用内通信,转变为基于RPC的远程通信,虽然这样提高了研发效率,提高了开发语言选择的多样性,但是随着单体应用的解体,原先的巨石散落为石块变得四处都是,如何管理这些微服务就成了难题。当微服务的个数少的时候还可以通过人工配置的方式去管理,但随着业务规模的增大,微服务的数量也可能呈指数级增长,如何协调管理成百上千的服务,这就需要有一套设计良好的框架。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Service Mesh 服务网格
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
Service mesh 又译作 ”服务网格“,作为服务间通信的基础设施层。Buoyant 公司的 CEO Willian Morgan 在他的这篇文章 [WHAT’S A SERVICE MESH? AND WHY DO I NEED ONE?](https://buoyant.io/2017/04/25/whats-a-service-mesh-and-why-do-i-need-one/) 中解释了什么是 Service Mesh,为什么云原生应用需要 Service Mesh。
|
||||
|
||||
> A service mesh is a dedicated infrastructure layer for handling service-to-service communication. It’s responsible for the reliable delivery of requests through the complex topology of services that comprise a modern, cloud native application. In practice, the service mesh is typically implemented as an array of lightweight network proxies that are deployed alongside application code, without the application needing to be aware.
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# Istio 中 sidecar 的注入及示例
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
我们知道 Istio 通过向 Pod 中注入一个 sidecar 容器来将 Pod 纳入到 Istio service mesh 中的,那么这些 sidecar 容器的注入遵循什么样的规范,需要给每个 Pod 增加哪些配置信息才能纳入 Istio service mesh 中呢?这篇文章将给您答案。
|
||||
|
||||
## Pod Spec 中需满足的条件
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
## SOFAMesh
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
SOFAMesh由蚂蚁金服开源,在兼容Istio整体架构和协议的基础上,做出部分调整:
|
||||
|
||||
![SOFAMesh architecture](https://ws4.sinaimg.cn/large/0069RVTdgy1fu08m7p22kj31kw1biq98.jpg)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 使用 SOFAMosn 构建 SOFAMesh
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
本文介绍的内容将包括 :
|
||||
|
||||
- [SOFAMosn](https://github.com/alipay/sofa-mosn) 与 [SOFAMesh](https://github.com/alipay/sofa-mesh) 的关系
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# SOFAMosn
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
GitHub地址:https://github.com/alipay/sofa-mosn
|
||||
|
||||
MOSN 是一款采用 Golang 开发的 Service Mesh 数据平面代理,功能和定位类似 Envoy,旨在提供分布式,模块化,可观察,智能化的代理能力。MOSN 支持 Envoy 和 Istio 的 API,可以和 Istio 集成。Sofa Mesh 中,我们使用 MOSN 替代 Envoy。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 企业级服务网格架构之路
|
||||
|
||||
**注意:本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
本节是根据由Nginx赞助,O’Reilly出版社出品的关于服务网格的书籍总结而来,本书标题是 _The Enterprise Path to Service Mesh_ ,还有个副标题 _Decoupling at Layer 5_ ,第一版发行于2018年8月8日。这本书一共61页,本文是我对该书的一些解读,读者可以在[Nginx的网站](https://www.nginx.com/resources/library/the-enterprise-path-to-service-mesh-architectures/)上免费下载阅读完整内容。
|
||||
|
||||
追本溯源,Service Mesh实际上是一种SDN,等同于OSI模型中的会话层。 每一次技术变革,必然要导致生产力和生产关系的变革,我们看到这种趋势正在加速。本书中给出了企业上Service Mesh的路径,可供广大技术和管理人员参考。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
## 深入理解 Istio中的Sidecar注入与流量劫持
|
||||
|
||||
**注意:本文档已失效,请浏览 [Istio 官方文档](https://istio.io/zh)。本书中的 Service Mesh 章节已不再维护,请转到 [istio-handbook](https://jimmysong.io/istio-handbook) 中浏览。**
|
||||
|
||||
在讲解 Istio 如何将 Envoy 代理注入到应用程序 Pod 中之前,我们需要先了解以下几个概念:
|
||||
|
||||
- Sidecar 模式:容器应用模式之一,Service Mesh 架构的一种实现方式。
|
||||
|
|
Loading…
Reference in New Issue