本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
虚拟网关
虚拟网关允许网格外的资源与网格内的资源进行通信。虚拟网关代表在 Amazon ECS 服务、Kubernetes 服务或 Amazon EC2 实例中运行的某个 Envoy 代理。与虚拟节点(代表使用应用程序运行的 Envoy)不同,虚拟网关代表自己部署的 Envoy。
外部资源必须能够将 DNS 名称解析为分配给运行 Envoy 的服务或实例的 IP 地址。然后,Envoy 可以访问网格内部资源的所有 App Mesh 配置。在虚拟网关处理传入请求的配置是使用网关路由指定的。
重要
默认情况下,具有 HTTP 或 HTTP2 侦听器的虚拟网关将传入请求的主机名重写为 Gateway Route 目标虚拟服务的名称,并将 Gateway Route 中的匹配前缀重写为。/
例如,如果您已将 Gateway 路由匹配前缀配置为,如果传入请求为/chapter/1
,则请求将被重写为/1
。/chapter
要配置重写,请参阅网关路由中的创建网关路由部分。
创建虚拟网关时proxyConfiguration
,user
不应进行配置。
要完成演 end-to-end 练,请参阅配置入站网关
创建虚拟网关
注意
创建虚拟网关时,必须添加带有标签的命名空间选择器,以标识与网关路由关联到创建的虚拟网关的命名空间列表。
- Amazon Web Services Management Console
-
使用创建虚拟网关Amazon Web Services Management Console
-
通过 https://console.aws.amazon.com/appmesh/
打开 App Mesh 控制台。 -
选择要在其中创建虚拟网关的网关。列出了您拥有和与您共享的所有网格。
-
在左侧导航栏中选择虚拟网关。
-
选择创建虚拟网关。
-
对于虚拟网关名称,为您的虚拟网关输入名称。
-
(可选,但推荐)配置客户端策略默认值。
-
(可选)如果您希望网关仅使用传输层安全 (TLS) 与虚拟服务通信,请选择强制执行 TLS。
-
(可选)对于端口,指定一个或多个要强制与虚拟服务进行 TLS 通信的端口。
-
对于 Conflict method(验证方法),选择下列选项之一。您指定的证书必须已存在并满足特定要求。有关更多信息,请参阅 证书要求:
-
Amazon Private Certificate Authority托管 — 选择一个或多个现有证书。
-
E@@ nvoy Secret Discovery Service (SDS) 托管 — 输入 Envoy 使用秘密发现服务获取的密钥的名称。
-
本地文件托管-指定部署 Envoy 的文件系统上证书链文件的路径。
-
-
(可选)输入主题 Subjec t(主题)。要添加其他 SAN,请选择添加 SAN。SAN 必须采用 FQDN 或 URI 格式。
-
(可选)选择提供客户端证书和以下选项之一,以便在服务器请求客户端证书时提供客户端证书并启用双向 TLS 身份验证。要了解有关双向 TLS 的更多信息,请参阅 App Mesh 双向 TLS 身份验证文档。
-
E@@ nvoy Secret Discovery Service (SDS) 托管 — 输入 Envoy 使用秘密发现服务获取的密钥的名称。
-
本地文件托管-在部署 Envoy 的文件系统上指定证书链文件的路径以及私钥。有关使用对本地文件 end-to-end 进行加密的示例应用程序部署网格的完整演示,请参阅上的 “使用文件提供的 TLS 证书配置 TLS
” GitHub。
-
-
(可选)要配置日志,请选择日志。输入你希望 Envoy 使用的 HTTP 访问日志路径。我们建议使用该
/dev/stdout
路径,以便您可以使用 Docker 日志驱动程序将 Envoy 日志导出到 Amazon Lo CloudWatch gs 等服务。注意
日志必须仍由您应用程序中的代理进行接收并发送至目标。此文件路径仅指示 Envoy 要发送日志的位置。
-
配置监听器。
-
选择协议并指定 Envoy 侦听流量的端口。http 侦听器允许连接过渡到 websockets。您可以单击 “添加监听器” 来添加多个监听器。“删除” 按钮将删除该监听器。
(可选)启用连接池
连接池限制了虚拟网关 Envoy 可同时建立的连接数。它旨在保护您的 Envoy 实例免受连接不堪重负,并允许您调整流量调整以适应应用程序的需求。
您可以为虚拟网关侦听器配置目标端连接池设置。默认情况下,App Mesh 将客户端连接池设置设置设置为无限,从而简化了网格配置。
注意
connectionPool
和connectionPool
portMapping 协议必须相同。如果您的侦听器协议为grpc
或http2
,则maxRequests
仅指定。如果您的侦听器协议是http
,则可以同时指定maxConnections
和maxPendingRequests
。-
对于最大连接数,指定最大出站连接数。
-
对于最大请求数,指定可使用虚拟网关某个 Envoy 创建的最大parallel 请求数。
-
(可选)对于最大待处理请求数,指定 Envoy 排队的最大连接数之后的溢出请求数。默认值为
2147483647
。
-
(可选)如果要为侦听器配置运行状况检查,请选择启用运行状况检查。
运行状况检查策略是可选的,但如果您为Health 策略指定任何值,则必须为Health 阈值、运行状况检查间隔、运行状况检查协议、超时期限和不健康阈值指定值。
-
对于 Health 检查协议,选择一个协议。如果选择 grpc,您的服务必须符合 GRPC Health 检查协议
。 -
对于 Health check port (运行状况检查端口),指定应对其运行状况检查的端口。
-
对于 Healthy threshold (正常阈值),指定在声明侦听器运行状况良好之前必须出现的连续成功的运行状况检查次数。
-
对于 Health check interval (运行状况检查间隔),指定执行每次运行状况检查间隔的时间(毫秒)。
-
对于 Path (路径),指定运行状况检查请求的目标路径。此值仅在Healt h 检查协议为
http
或时使用http2
。其他协议将忽略此值。 -
对于 Tmethoy(超时时间),以毫秒为单位指定接收来自运行状况检查的响应时要等待的时间。
-
对于 Unhealthy threshold (不正常阈值),指定在声明侦听器运行状况不正常之前必须出现的连续失败的运行状况检查次数。
-
(可选)如果要指定客户端是否使用 TLS 与该虚拟网关通信,请选择启用 TLS 终止。
-
对于模式,选择要在侦听器上配置 TLS 的模式。
-
对于 Conflict method(证书方法),选择下列选项之一。证书必须满足特定要求。有关更多信息,请参阅 证书要求:
-
Amazon Certificate Manager托管 — 选择现有证书。
-
E@@ nvoy Secret Discovery Service (SDS) 托管 — 输入 Envoy 使用秘密发现服务获取的密钥的名称。
-
本地文件托管-指定部署了 Envo y 的文件系统上的证书链和私钥文件的路径。
-
-
(可选)选择 “需要客户端证书” 和以下选项之一,以便在客户端提供证书时启用双向 TLS 身份验证。要了解有关双向 TLS 的更多信息,请参阅 App Mesh 双向 TLS 身份验证文档。
-
E@@ nvoy Secret Discovery Service (SDS) 托管 — 输入 Envoy 使用秘密发现服务获取的密钥的名称。
-
本地文件托管-指定部署 Envoy 的文件系统上证书链文件的路径。
-
-
(可选)输入主题 Subjec t(主题)。要添加其他 SAN,请选择添加 SAN。SAN 必须采用 FQDN 或 URI 格式。
-
-
-
选择创建虚拟网关完成操作。
-
- Amazon CLI
-
使用. 创建虚拟网关Amazon CLI。
使用以下命令创建虚拟网关并输入 JSON(用您自己的值替换
红色
值):-
aws appmesh create-virtual-gateway \ --mesh-name
meshName
\ --virtual-gateway-namevirtualGatewayName
\ --cli-input-json file://create-virtual-gateway.json
-
示例 create-virtual-gateway .json 的内容:
{ "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] } }
-
输出示例:
{ "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:
us-west-2
:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-06T10:42:42.015000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 1 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "ACTIVE" }, "virtualGatewayName": "virtualGatewayName" } }
有关使用 for App Mesh 创建虚拟网关的更多信息,请参阅Amazon CLI参考文献中的create-virtual-gateway命令。Amazon CLI
-
部署虚拟网关
部署仅包含 Envo y 容器的亚马逊 ECS 或 Kubernetes 服务。您还可以在Amazon EC2 实例中部署 Envoy 容器。有关更多信息,请参阅 A pp Mesh 和 Amazon EC2 入门。有关如何在 Amazon ECS 上部署的更多信息,请参阅 A pp Mesh 和 Amazon ECS 入门或部署到 Kubernetes 的 AAmazon pp Mesh 和 Kubernetes 入门。您需要将APPMESH_RESOURCE_ARN
环境变量设置为,mesh/
并且不得指定代理配置,这样代理的流量就不会被重定向到自身。默认情况下,当 Envoy 在指标和跟踪中引用自身时,App Mesh 使用您在 mesh-name
/virtualGateway/virtual-gateway-name
APPMESH_RESOURCE_ARN
中指定的资源的名称。您可以通过使用自己的名称设置 APPMESH_RESOURCE_CLUSTER
环境变量来覆盖此行为。
我们建议您部署容器的多个实例并设置Network Load Balancer 以对这些实例的流量进行负载均衡。负载均衡器的服务发现名称是您希望外部服务用来访问网格中的资源(例如 m yapp.example.com
)的名称。有关更多信息,请参阅创建Network Load Bal ancer (Amazon ECS)、创建外部Load Bal
为 Envoy 启用代理授权。有关更多信息,请参阅特使代理授权:
删除虚拟网关
- Amazon Web Services Management Console
-
使用删除虚拟网关Amazon Web Services Management Console
-
通过 https://console.aws.amazon.com/appmesh/
打开 App Mesh 控制台。 -
选择要从中删除虚拟网关的网关。列出了您拥有和与您共享的所有网格。
-
在左侧导航栏中选择虚拟网关。
-
选择要删除的虚拟网关,然后选择 Delete(删除)。如果虚拟网关有任何关联的网关路由,则无法将其删除。必须先删除所有关联的网关路由。您只能删除您的账户被列为资源所有者的虚拟网关。
-
在确认框中,键入,
delete
然后选择 “删除”。
-
- Amazon CLI
-
使用删除虚拟网关Amazon CLI
-
使用以下命令删除您的虚拟网关(用您自己的值替换
红色
值):aws appmesh delete-virtual-gateway \ --mesh-name
meshName
\ --virtual-gateway-namevirtualGatewayName
-
输出示例:
{ "virtualGateway": { "meshName": "meshName", "metadata": { "arn": "arn:aws:appmesh:
us-west-2
:123456789012:mesh/meshName/virtualGateway/virtualGatewayName", "createdAt": "2022-04-06T10:42:42.015000-05:00", "lastUpdatedAt": "2022-04-07T10:57:22.638000-05:00", "meshOwner": "123456789012", "resourceOwner": "123456789012", "uid": "a1b2c3d4-5678-90ab-cdef-11111EXAMPLE", "version": 2 }, "spec": { "listeners": [ { "portMapping": { "port": 9080, "protocol": "http" } } ] }, "status": { "status": "DELETED" }, "virtualGatewayName": "virtualGatewayName" } }
有关使用 for App Mesh 删除虚拟网关的更多信息,请参阅Amazon CLI参考文献中的delete-virtual-gateway命令。Amazon CLI
-