快速开始

快速搭建开发环境,完成编译,测试,镜像制作和示例配置的运行。

本文用于帮助初次接触 MOSN 项目的开发人员,快速搭建开发环境,完成编译,测试,镜像制作和示例配置的运行。

准备运行环境

  • 如果您使用容器运行 MOSN,请先 安装 docker
  • 如果您使用本地机器,请使用类 Unix 环境
  • 安装 Go 的编译环境

获取代码

MOSN 项目的代码托管在 Github,获取方式如下:

  1. 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)

  1. make istio-1.5.2

切换到1.10.6版本(xDS v3)

  1. make istio-1.10.6

使用 docker 镜像编译

  1. make build // 编译出 linux 64bit 可运行二进制文件

本地编译

使用下面的命令编译本地可运行二进制文件。

  1. make build-local

完成后可以在 build/bundles/${version}/binary 目录下找到编译好的二进制文件。

运行测试

支持两种环境来运行测试,如果有 docker 环境的,推荐使用 docker 环境,环境更干净可控。 MOSN 项目集成的 CI 是使用的 docker 环境来运行的。

使用 docker 环境运行测试

在项目根目录下执行如下命令:

  1. # 单元测试
  2. make unit-test
  3. # 集成测试(较慢)
  4. make integrate
  5. # 新版集成测试(较慢)
  6. make integrate-new

使用本地环境运行测试

在项目根目录下执行如下命令:

  1. # 单元测试
  2. make ut-local
  3. # 集成测试(较慢)
  4. make integrate-local
  5. # 新版集成测试(较慢)
  6. make integrate-framework

运行 MOSN

运行下面的命令,将使用一个 示例配置文件 启动 MOSN。

  1. ./build/bundles/${version}/binary/mosn start -c configs/mosn_config.json

MOSN 配置说明

这个示例,我们模拟了经典的 service mesh 中,MOSN 作为 sidecar 的场景。

  1. POD A POD B
  2. ------------------ -------------------
  3. | App A => MOSN A | ==> | MOSN B => App B |
  4. ------------------- -------------------

建议打开 示例配置文件 ,阅读如下配置说明。

应用服务

其中,appListener 这个 listener 监听了 2047 端口,使用 application 这个 router, router 内配置了 direct_response,输出静态配置内容。 在这个示例里,模拟一个应用服务,App B

我们可以使用如下命令测试:

  1. $ curl 'http://localhost:2047/'
  2. Welcome to MOSN!
  3. 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 BserverListener 在示例里模拟了 MOSN B,代理了 App B 的入口流量。

clientListenerserverListener 类似,由 2045 端口转发到 2046。 模拟了 MOSN A,代理了 App A 的入口流量。

剩下 App A,我们可以通过 curl 来模拟:

  1. $ curl 'http://localhost:2045/'
  2. Welcome to MOSN!
  3. The Cloud-Native Network Proxy Platform.

以上就构建了 MOSN 作为 sidecar 的典型使用示例。 其他更多场景的用法,请参考 配置概览

创建镜像

执行如下命令创建 docker image

  1. make image

更多 MOSN 示例程序

参考 examples 目录下的示例工程运行 Samples

使用 MOSN 搭建 Service Mesh 平台

请参考与 Istio 集成

修改于 2022年10月28日: docs: Changes to the v1.2.0 configuration (#217) (d237414)