快速开始
本文用于帮助初次接触 MOSN 项目的开发人员,快速搭建开发环境,完成编译,测试,镜像制作和示例配置的运行。
准备运行环境
- 如果您使用容器运行 MOSN,请先 安装 docker
- 如果您使用本地机器,请使用类 Unix 环境
- 安装 Go 的编译环境
获取代码
MOSN 项目的代码托管在 Github,获取方式如下:
git clone git@github.com:mosn/mosn.git
最终 MOSN 的源代码代码路径为 $GOPATH/src/mosn.io/mosn
导入 IDE
使用您喜爱的 Go IDE 导入 mosn 项目,推荐 Goland。
编译代码
在项目根目录下,根据自己机器的类型以及欲执行二进制的环境,选择以下命令编译 MOSN 的二进制文件。
切换 Istio 支持版本
MOSN 目前支持xDS v2 与 xDS v3,分别以Istio 1.5.2 和 Istio 1.10.6 为代表,可以根据需求在不同的版本支持之间切换。默认使用的是1.10.6版本。
切换到1.5.2 版本(xDS v2)
make istio-1.5.2
切换到1.10.6版本(xDS v3)
make istio-1.10.6
使用 docker 镜像编译
make build // 编译出 linux 64bit 可运行二进制文件
本地编译
使用下面的命令编译本地可运行二进制文件。
make build-local
完成后可以在 build/bundles/${version}/binary
目录下找到编译好的二进制文件。
运行测试
支持两种环境来运行测试,如果有 docker 环境的,推荐使用 docker 环境,环境更干净可控。 MOSN 项目集成的 CI 是使用的 docker 环境来运行的。
使用 docker 环境运行测试
在项目根目录下执行如下命令:
# 单元测试
make unit-test
# 集成测试(较慢)
make integrate
# 新版集成测试(较慢)
make integrate-new
使用本地环境运行测试
在项目根目录下执行如下命令:
# 单元测试
make ut-local
# 集成测试(较慢)
make integrate-local
# 新版集成测试(较慢)
make integrate-framework
运行 MOSN
运行下面的命令,将使用一个 示例配置文件 启动 MOSN。
./build/bundles/${version}/binary/mosn start -c configs/mosn_config.json
MOSN 配置说明
这个示例,我们模拟了经典的 service mesh 中,MOSN 作为 sidecar 的场景。
POD A POD B
------------------ -------------------
| App A => MOSN A | ==> | MOSN B => App B |
------------------- -------------------
建议打开 示例配置文件 ,阅读如下配置说明。
应用服务
其中,appListener
这个 listener 监听了 2047
端口,使用 application
这个 router,
router 内配置了 direct_response
,输出静态配置内容。
在这个示例里,模拟一个应用服务,App B
。
我们可以使用如下命令测试:
$ curl 'http://localhost:2047/'
Welcome to MOSN!
The Cloud-Native Network Proxy Platform.
流量代理转发
其中,serverListener
这个 listener 监听了 2046
端口,使用 server_router
这个 router,
router 内配置启用了 proxy
这个 filter,转发到 serverCluster
这个 cluster。
在 cluster_manager
中可以看到 serverCluster
的具体配置:127.0.0.1:2047
,也就是上面的 App B
。
serverListener
在示例里模拟了 MOSN B
,代理了 App B
的入口流量。
clientListener
和 serverListener
类似,由 2045
端口转发到 2046
。
模拟了 MOSN A
,代理了 App A
的入口流量。
剩下 App A
,我们可以通过 curl
来模拟:
$ curl 'http://localhost:2045/'
Welcome to MOSN!
The Cloud-Native Network Proxy Platform.
以上就构建了 MOSN 作为 sidecar 的典型使用示例。 其他更多场景的用法,请参考 配置概览。
创建镜像
执行如下命令创建 docker image
make image
更多 MOSN 示例程序
参考 examples
目录下的示例工程运行 Samples。
使用 MOSN 搭建 Service Mesh 平台
请参考与 Istio 集成。