首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用AWS CDK创建AWS应用程序网格

如何使用AWS CDK创建AWS应用程序网格
EN

Stack Overflow用户
提问于 2019-10-19 17:48:26
回答 1查看 375关注 0票数 1

我正在尝试为(目前)9个.NET核心微服务创建一个堆栈,以便在ECS Fargate中运行,并通过应用程序网格相互通信。我计划创建一个基础架构堆栈,它创建App Mesh资源和ECS集群,以及一个微服务堆栈,它为每个服务创建资源,并将它们添加到App Mesh和ECS集群。

我现在有这样的代码:

代码语言:javascript
复制
Vpc = Amazon.CDK.AWS.EC2.Vpc.FromLookup(this, "vpc", new VpcLookupOptions
{
    VpcId = "xxxxxxxxxxxx"
});

DefaultCloudMapNamespace = new CloudMapNamespaceOptions
{
    Vpc = Vpc,
    Name = dnsNamespace,
    Type = NamespaceType.DNS_PRIVATE,
};

EcsCluster = new Cluster(this, $"{Env}-linux-cluster", new ClusterProps
{
    Vpc = Vpc,
    ClusterName = $"{Env}-linux-cluster",
    DefaultCloudMapNamespace = DefaultCloudMapNamespace
});

这似乎没问题--它在Route53中创建了一个托管专区。

当我创建云地图的Service时,我使用了以下代码:

代码语言:javascript
复制
var cloudMapService = new Service(this, serviceName, new ServiceProps
{
    Namespace = new PrivateDnsNamespace(this, $"{serviceNameHyphen}-cm-namespace", new PrivateDnsNamespaceProps
    {
        Vpc = infrastructureStack.Vpc,
        Name = $"{serviceName}.dev",
    }),
    DnsRecordType = DnsRecordType.SRV,
    DnsTtl = Duration.Seconds(60),
    RoutingPolicy = RoutingPolicy.MULTIVALUE,
    Name = serviceName
});

这是我第一次使用App Mesh & Cloud Map,但我希望对Cloud Map命名空间和Cloud Map Service命名空间使用相同的私有托管区域。

这是正确的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2021-11-04 11:40:10

我的方法是:

我首先创建命名空间

代码语言:javascript
复制
    cloud_map = sds.PrivateDnsNamespace(
        self,
        "PrivateNameSpace",
        vpc=vpcObject,
        description=' '.join(["Private DNS for", self.node.try_get_context('EnvironmentName')]),
        name=service_domain
    )

然后,当创建虚拟服务时,我为它使用相同的域

代码语言:javascript
复制
        vservice = mesh.VirtualService(
            self,
            "VirtualService",
            virtual_service_name='.'.join([node_name, service_domain]),
            virtual_service_provider=mesh.VirtualServiceProvider.virtual_node(vnode)
        )

然后在创建ECS服务时调用它

代码语言:javascript
复制
    ecs_service = ecs.Ec2Service(
        self,
        "ECSService",
        task_definition=ecs_task,
        placement_strategies=[
            ecs.PlacementStrategy.spread_across_instances()
        ],
        desired_count=desiredCount,
        cluster=clusterObject,
        security_groups=[sgObject],
        vpc_subnets=ec2.SubnetSelection(
            subnet_type=ec2.SubnetType.PRIVATE
        ),
        enable_ecs_managed_tags=True,
        health_check_grace_period=cdk.Duration.seconds(120),
        max_healthy_percent=200,
        min_healthy_percent=50,
        cloud_map_options=ecs.CloudMapOptions(
            cloud_map_namespace=cloud_map,
            dns_record_type=cm.DnsRecordType.A,
            dns_ttl=cdk.Duration.seconds(300),
            failure_threshold=1,
            name=node_name
        ),
    )
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58462398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档