系列文章:


总目录索引:九析带你轻松完爆 istio 服务网格系列教程

目录

1 前言

2 邀约

3 简介

4 Envoy 下载

5 Envoy 运行

6 Envoy 访问

7 Envoy 窥视

8 Envoy 修改

    8.1 修改 envoy.yaml

    8.2 创建新 Envoy 镜像

    8.3 运行新 Envoy 镜像

    8.4 访问新 Envoy 容器


1 前言

        如果你对博客有任何疑问,请告诉我。

1.png


2 邀约

        你可以从 b 站搜索 “九析”,获取免费的、更生动的视频资料:

clipboard2.png


3 简介

        本小节使你快速上手 Envoy。在使用 Envoy 前,首先需要下载并运行它。有两种方式获取 Envoy:下载编译好的二进制包;直接下载 Envoy 的学习镜像。本文使用后者。


4 Envoy 下载

        使用如下语句下载 Envoy 学习镜像:

docker pull envoyproxy/envoy-dev:89d6c6c6fa202aa7a01e85d2d887b56c8a3268ad

        下载成功后的截图如下所示:

clipboard3.png


5 Envoy 运行

        使用如下语句运行 Envoy 学习镜像:

docker run --rm -d -p 10000:10000 envoyproxy/envoy-dev:89d6c6c6fa202aa7a01e85d2d887b56c8a3268ad

        上述命令会对外开启 Envoy 监听器,监听器端口为 10000。Envoy 容器启动成功后,可以执行如下命令查看 envoy 对外暴露的端口:

开放平台架构图.png


6 Envoy 访问

        使用如下语句来访问 Envoy 容器提供的 http 路由服务:

curl -v http://localhost:10000

        执行结果一般会出错,结果如下图所示:

clipboard5.png

        出错的原因是官方提供的 Envoy 学习镜像是将所有对该 Envoy 的 http 请求路由到美国一个知名的搜索引擎网站去,而这个网站你们都知道,但是一般情况下却都访问不了。

为了操作成功,需要做一定的调整,经过简单调整,你也可以对 Envoy 有比较深入的了解。


7 Envoy 窥视

        执行如下语句进入到 Envoy 容器内部:

docker exec -it $(docker ps | grep -i envoy | awk '{print $1}') /bin/bash

        进入到容器内部之后,执行 ps -ef 查看当前容器内部运行进程列表:

ps -ef

        执行结果如下图所示:

clipboard6.png

        由上图可知 Envoy 启动时的配置文件 envoy.yaml,查看该文件内容如下所示:

clipboard7.png

        从上图中,我们可以看到基本 Envoy 配置包括两部分内容:

admin:管理信息。配置管理服务器

static_resources: 静态配置内容。此配置包含 Envoy 启动时静态配置的所有内容,比如监听器(listener)和集群(clusters)。监听器里又配置了过滤器链(filter_chains)

        结论:整个 Envoy 启动都是根据 envoy.yaml 的配置。上图配置中,Envoy 对外服务监听端口是 10000,所有 http 请求都路由到 www.gxxgle.com。


8 Envoy 修改

        因为初始的学习配置,导致很多人无法成功访问的。我们可以修改 envoy.yaml 配置文件,改成路由到百度即可。

8.1 修改 envoy.yaml

        执行如下语句将容器内的原始 envoy.yaml 配置文件拷贝到 docker 所在宿主机:

# 下面的 75f8e71991f2 代表运行的 envoy 容器

docker cp 75f8e71991f2:/etc/envoy/envoy.yaml ./

        编辑 envoy.yaml 文件如下:

route:

host_rewrite: www.baidu.com # 31行

socket_address:

address: www.baidu.com # 49行

sni: www.baidu.com # 55行

        修改内容如下图所示:

clipboard8.png

8.2 创建新 Envoy 镜像

        首先编写 Dockerfile 文件,内容如下 :

FROM envoyproxy/envoy-dev:89d6c6c6fa202aa7a01e85d2d887b56c8a3268ad

COPY envoy.yaml /etc/envoy/envoy.yaml

        接着执行如下语句创建镜像:

docker build -t envoy:v1 .

        然后执行如下语句查看是否镜像创建成功:

docker images | grep -i envoy

8.3 运行新 Envoy 镜像

        执行如下语句运行新创建的镜像:

docker run -d --name envoy -p 9901:9901 -p 10000:10000 envoy:v1

8.4 访问新 Envoy 容器

        执行如下语句访问新 Envoy 容器:

curl http://localhost:10000

        执行效果如下图所示:

clipboard9.png