文档L.T./P>constmesh=newMesh(stack,'AppMesh',{name:'myAwsmMesh',});
通过覆盖属性,也可以使用"allow_all"出口过滤器创建网格。
constmesh=newMesh(stack,'AppMesh',{name:'myAwsmMesh',meshSpec:{egressFilter: appmesh.MeshFilterType.Allow_All,},});
添加虚拟路由
mesh需要virtualrouters
作为逻辑单元路由到virtualnodes
虚拟路由器处理网格中一个或多个虚拟服务的流量。创建虚拟路由器后,可以为虚拟路由器创建并关联将传入请求定向到不同虚拟节点的路由。
constrouter=mesh.addVirtualRouter('router',{portMappings:[{port: 8081,protocol: appmesh.Protocol.HTTP,},],});
路由器也可以使用构造函数创建并传入网格,而不是为网格调用addVirtualRouter()方法。
constmesh=newMesh(stack,'AppMesh',{name:'myAwsmMesh',meshSpec:{egressFilter: appmesh.MeshFilterType.Allow_All,},});constrouter=newappmesh.VirtualRouter(stack,'router',{mesh,// notice that mesh is a required property when creating a router with a new statementportMappings:[{port: 8081,protocol: appmesh.Protocol.HTTP,},],});
侦听器协议可以是http
或tcp
同样的模式适用于appmesh库中的所有构造,对于任何mesh.addxzy方法,也可以使用新的构造。这对于需要跨堆栈资源特别有用。其中,作为基础架构堆栈的一部分创建网格和创建资源(如节点)对于保存在应用程序堆栈中更为有用。
添加VirtualService
虚拟服务是虚拟节点通过虚拟路由器直接或间接提供的真实服务的抽象。依赖服务通过其virtualservicename调用您的虚拟服务,这些请求被路由到指定为虚拟服务提供商的虚拟节点或虚拟路由器。
我们建议您使用目标实际服务的服务发现名称(例如my seservice.default.svc.cluster.local
)。
创建虚拟服务时:
- 如果希望虚拟服务跨多个虚拟节点传播流量,请指定一个虚拟路由器。
- 如果希望虚拟服务直接到达虚拟节点,而不需要虚拟路由器,请指定一个虚拟节点。
将虚拟路由器添加为提供程序:
mesh.addVirtualService('virtual-service',{virtualRouter: router,virtualServiceName:'my-service.default.svc.cluster.local',});
添加虚拟节点作为提供程序:
mesh.addVirtualService('virtual-service',{virtualNode: node,virtualServiceName:`my-service.default.svc.cluster.local`,});
注意必须只选择一个虚拟节点
或虚拟路由器
。
添加虚拟节点
虚拟节点充当指向特定任务组的逻辑指针,例如amazon ecs服务或kubernetes部署。
创建虚拟节点时,必须为任务组指定dns服务发现主机名。您的虚拟节点
期望的任何入站流量都应指定为侦听器。您的虚拟节点希望到达的任何出站流量都应指定为后端。
新虚拟节点的响应元数据包含与虚拟节点关联的amazon资源名(arn)。将此值(完整ARN或截断的资源名称)设置为任务定义或POD规范中任务组的特使代理容器的appmesh_virtual_node_name环境变量。例如,该值可以是mesh/default/virtualnode/simpleapp。然后将其映射到node.id和node.cluster-demission参数。
< Buff行情>
如果需要特使统计信息或跟踪使用其他名称,可以使用APPMESH虚拟节点群集环境变量替代由APPMESH虚拟节点名称设置的node.cluster值。
constvpc=newec2.Vpc(stack,'vpc');constnamespace=newcloudmap.PrivateDnsNamespace(stack,'test-namespace',{vpc,name:'domain.local',});constnode=mesh.addVirtualNode('virtual-node',{hostname:'node-a',namespace,listeners:{portMappings:[{port: 8081,protocol: appmesh.Protocol.HTTP,},],healthChecks:[{healthyThreshold: 3,intervalMillis: 5000,// minimumpath:`/health-check-path`,port: 8080,protocol: appmesh.Protocol.HTTP,timeoutMillis: 2000,// minimumunhealthyThreshold: 2,},],},});
使用构造函数创建一个virtualnode
并添加标记。
constnode=newappmesh.VirtualNode(stack,'node',{mesh,hostname:'node-1',namespace,listener:{portMappings:[{port: 8080,protocol: appmesh.Protocol.HTTP,},],healthChecks:[{healthyThreshold: 3,intervalMillis: 5000,// minpath:'/ping',port: 8080,protocol: appmesh.Protocol.HTTP,timeoutMillis: 2000,// minunhealthyThreshold: 2,},],},});node.node.apply(newcdk.Tag('Environment','Dev'));
Listeners属性稍后可以用mesh.addListeners()
方法保留为空DDED。healthcheck
属性是可选的,但如果指定侦听器,则portmappings
必须至少包含一个属性。
添加路线
路由与虚拟路由器相关联,用于匹配对虚拟路由器的请求,并相应地将流量分配给其关联的虚拟节点。
您可以在route
规范中使用prefix参数来实现基于路径的请求路由。例如,如果您的虚拟服务名称是my-service.local,并且您希望路由
将请求与my-service.local/metrics匹配,则前缀应为/metrics。
如果您的路由
与请求匹配,则可以使用相对权重将流量分配给一个或多个目标虚拟节点。
constapp=newcdk.App();conststack=newcdk.Stack(app,'stack');
0
添加具有多个目标的单一路线,并将流量分成50/50
constapp=newcdk.App();conststack=newcdk.Stack(app,'stack');
1
还可以同时向不同的应用程序或目标添加多个路由。
constapp=newcdk.App();conststack=newcdk.Stack(app,'stack');
2
路由ID
和路由目标的数目必须匹配,因为每个路由需要为每个路由器指定一个唯一的名称。
欢迎加入QQ群-->: 979659372
推荐PyPI第三方库