网格云脚本基础结构和管理

概述

在本文中,你将了解网格云基础结构和管理的各个方面,包括生成和发布云脚本项目时部署到 Azure 订阅的服务。

部署的资源

网格云脚本由 .在云中运行的基于 NET 的应用。 部署到客户的 Azure 订阅的网格云脚本云基础结构包含以下 Azure 资源:

  1. App 服务计划:表示可在其中运行 Web 应用的计算群集。 它还可以运行一个或多个不同的 Web 应用。

  2. Azure VNet:这是应用服务实例部署到的虚拟网络资源,允许它们相互通信。

  3. Azure Web 应用实例:表示在特定 VM 上运行的 Web 应用的实例。

  4. Azure 存储帐户:保存已发布的内容和有关 Azure Web 应用实例的信息。 它细分为两个组件:

    1. 网格云脚本服务 Blob 存储:保存网格上传器上传的网格云脚本服务 Blob。
    2. 新奥尔良成员资格表:保存有关新奥尔良孤岛实例的生存情况的信息。
  5. Log Analytics 工作区:保存从App 服务上运行的网格云脚本服务发出的日志。

  6. Application Insights:提供应用程序性能监视(APM)功能。 APM 工具可用于监视应用程序从开发、测试到生产环境。

应用服务计划

App 服务计划定义一组计算资源,使 Web 应用能够运行。

在某个区域(例如“西欧”)中创建应用服务计划时,将在该区域中为该计划创建一组计算资源。 放入此应用服务计划的任何应用都在应用服务计划定义的这些计算资源中运行。 每个应用服务计划定义:

  • 操作系统(Windows、Linux)
  • 区域(美国西部、美国东部,等等)
  • VM 实例数
  • VM 实例大小(“小型”、“中型”、“大型”)
  • 定价层(“免费”、“共享”、“基本”、“标准”、“高级”、“高级 V2”、“高级 V3”、“独立”、“独立 V2”)

有关详细信息,请参阅App 服务计划文档

App 服务计划的网格工具包默认资源设置

  • SKU 名称:P1v2
  • SKU 层:PremiumV2
  • SKU 容量:1
  • 类型:Linux
  • 保留: True

在网格云脚本服务的上下文中,App 服务计划是计算组件。 它可以自动缩放并处理不同实例相互通信的方式(网络)。 CloudHost 是运行和管理网格云脚本服务的应用程序,目前以 Docker 映像的形式提供,因此我们使用基于 Linux 的计划。 高级计划更适用于生产工作负荷。

有关默认值的详细信息,请参阅 App 服务 计划资源的 Bicep 和 ARM 模板参考

应用程序服务

Azure 应用服务是一项基于 HTTP 的服务,用于托管 Web 应用程序、REST API 和移动后端 。 应用服务可将 Microsoft Azure 的强大功能(例如安全性、负载均衡、自动缩放和自动管理)添加到应用程序。 使用应用服务时,需要支付 Azure 计算资源的使用费。 使用的计算资源量由运行应用的应用服务计划确定。

有关详细信息,请参阅 App 服务 Docs

网格工具包默认资源设置 - App 服务

  • httpsOnly:True
  • alwaysOn:True
  • vnetPrivatePorts Count: 2
  • vnetRouteAllEnabled: True
  • vnetName:默认虚拟网络名称

有关默认值的详细信息,请参阅 App 服务 计划资源的 Bicep 和 ARM 模板参考

虚拟网络

Azure 虚拟网络是 Azure 中专用网络的基本构建基块。 虚拟网络允许许多类型的 Azure 资源(例如 Azure 虚拟机 (VM))以安全方式彼此通信、与 Internet 通信,以及与本地网络通信。 虚拟网络类似于你在自己的数据中心内运行的传统网络。 Azure 虚拟网络带来了 Azure 的基础结构的额外优势,例如缩放、可用性和隔离。

有关详细信息,请参阅 虚拟网络 Docs

网格工具包默认资源设置 - 虚拟网络

  • AddressSpace addressPrefixes:10.0.0.0/16
  • 子网 addressPrefix:10.0.0.0/24
  • 子网委派名称:委派
  • 子网委派服务名称:Microsoft.Web/serverFarms

有关默认值的详细信息,请参阅虚拟网络资源的 Bicep 和 ARM 模板参考

存储帐户

Azure 存储帐户包含所有 Azure 存储数据对象:Blob、文件、队列和表。 存储帐户为 Azure 存储数据提供一个唯一的命名空间,可通过 HTTP 或 HTTPS 从世界上的任何位置访问该数据。 Azure 存储帐户中的数据持久,高度可用、安全且可大规模缩放。

有关详细信息,请参阅 存储帐户文档

网格工具包默认资源设置 - 存储帐户

  • SKU 名称:Standard_LRS
  • 种类:StorageV2

有关默认值的详细信息,请参阅 存储帐户资源的 Bicep 和 ARM 模板参考

Log Analytics 工作区

Log Analytics 工作区是一种适用于来自 Azure Monitor 和其他 Azure 服务(例如 Microsoft Sentinel 和 Microsoft Defender for Cloud)的日志数据的独特环境。 它是Azure 门户中的工具,用于编辑和运行针对 Azure Monitor 日志存储中的数据的日志查询。

有关详细信息,请参阅 Log Analytics 工作区文档

网格工具包默认资源设置 - Log Analytics 工作区

  • forceCmkForQuery: false
  • retentionInDays:30
  • SKU 名称:PerGB2018
  • dailyQuotaGb: 2GB

有关默认值的详细信息,请参阅 工作区资源的 Bicep 和 ARM 模板参考

Application Insights

Application Insights 是 Azure Monitor 的一个扩展,提供应用程序性能监视 (APM) 功能。 APM 工具可用于通过以下方式监视从应用程序开发到测试,再到生产的整个生命周期:

主动了解应用程序的执行情况。 被动查看应用程序执行数据以确定事件的原因。 除了收集描述应用程序活动与运行状况的指标和应用程序遥测数据外,还可以使用 Application Insights 收集和存储应用程序跟踪日志记录数据

有关详细信息,请参阅 Application Insights Docs

网格工具包默认资源设置 - Application Insights

  • 类型:Web
  • Request_Source:rest
  • WorkspaceResourceId:默认 Log Analytics 工作区 ID。

有关默认值的详细信息,请参阅虚拟网络资源的 Bicep 和 ARM 模板参考

网格云脚本服务基础结构关系图

显示网格云脚本服务基础结构的关系图

流量流经每个组件

客户端 <-> AppService 实例:客户端请求/响应(连接请求、云脚本通知等)。

App 服务实例:用于确定实时性的 TCP ping 消息。

App 服务实例 <-> LogAnalytics/AppInsights:应用程序遥测(应用程序日志)。

App 服务实例 <-> 成员身份表:有关每个应用服务实例的实时性信息。

App 服务实例 <-> Blob 存储:云中运行的云脚本的 zip。

资源提供程序注册

要注册的服务包括:

  1. Microsoft.Web
  2. Microsoft.Storage
  3. Microsoft.Network
  4. Microsoft.Insights
  5. Microsoft.OperationalInsights

说明

  • 如果需要有关错误的帮助,请参阅 资源提供程序注册错误

  • 如 Azure 文档中所述,注册服务是在订阅级别完成的。 换句话说,无需为不同的资源组注册服务。

网格云脚本服务部署的访问控制

  1. 开发人员必须具有可用于部署的电子邮件帐户。 这可以是新的或预先存在的帐户。

  2. 如果要通过 Azure 安全组管理访问控制,请创建此组(例如“网格云脚本服务开发人员”)。 有关与 Microsoft 365 组类型相比的 Azure 安全组的详细信息,请参阅 “了解组和组成员身份”。

  3. 确定希望开发人员如何访问 Azure 订阅。 这由开发人员是目录的本机成员还是来宾用户确定。

    1. 如果想要轻松管理访问控制,可以将本机成员添加到在上述步骤 #2 中创建的 Azure 安全组。
    2. 可以将来宾用户添加到 Azure 订阅,或将其添加到 Azure 安全组(请参阅上面的步骤 #2)。

    有关来宾用户的详细信息,请参阅Azure 门户中添加 B2B 协作用户。

有关访问控制的建议

下面是有关如何向开发人员授予在 Azure 中预配网格云脚本服务云基础结构的权限的一些建议。 这些限制因你希望访问控制策略的限制性而异。

  1. 为开发人员 授予为网格云脚本服务预配的整个订阅的参与者角色

  2. 为网格云脚本服务云基础结构部署创建专用资源组,并向开发人员授予此资源组中的参与者角色。 可以通过第二个先决条件(即“网格云脚本服务开发人员”)创建的 Azure 安全组执行此操作。 这会授予他们管理所有资源的完整访问权限,但不允许他们在 Azure RBAC 中分配角色、管理 Azure 蓝图中的分配或共享映像库。

  3. 在 Azure 中创建具有创建和管理网格云脚本服务云基础结构所需的最低权限的自定义角色。

    可以直接在第二个先决条件(即“网格云脚本服务开发人员”)中创建的 Azure 安全组上分配此角色。

    下面是你创建的自定义角色的建议权限:

    选择自定义角色的页面的屏幕。

    要上传的 JSON 文件应与此类似**:

    {
    "id": "88888-8888-8888-888-8888888",
        "properties": {
            "roleName": "MeshCloudScriptingServiceDeployer",
            "description": "Grants access to Mesh Cloud Scripting Services resources",
            "assignableScopes": [
                "/subscriptions/{subscriptionID}"
            ],
            "permissions": [
                {
                    "actions": [
                        "*/read",
                        "Microsoft.Authorization/*/read",
                        "Microsoft.ClassicCompute/virtualMachines/extensions/*",
                        "Microsoft.ClassicStorage/storageAccounts/listKeys/action",
                        "Microsoft.Compute/virtualMachines/extensions/*",
                        "Microsoft.HybridCompute/machines/extensions/write",
                        "Microsoft.Insights/alertRules/*",
                        "Microsoft.Insights/autoscalesettings/*",
                        "Microsoft.Insights/components/*",
                        "Microsoft.Insights/diagnosticSettings/*",
                        "Microsoft.Insights/generateLiveToken/read",
                        "Microsoft.Insights/metricAlerts/*",
                        "Microsoft.Insights/scheduledqueryrules/*",
                        "Microsoft.Insights/topology/read",
                        "Microsoft.Insights/transactions/read",
                        "Microsoft.Insights/webtests/*",
                        "Microsoft.Network/*",
                        "Microsoft.OperationalInsights/*",
                        "Microsoft.OperationsManagement/*",
                        "Microsoft.ResourceHealth/availabilityStatuses/read",
                        "Microsoft.Resources/deployments/*",
                        "Microsoft.Resources/subscriptions/resourcegroups/deployments/*",
                        "Microsoft.Resources/subscriptions/resourceGroups/read",
                        "Microsoft.Storage/storageAccounts/*",
                        "Microsoft.Support/*",
                        "Microsoft.Web/certificates/*",
                        "Microsoft.Web/hostingEnvironments/Join/Action",
                        "Microsoft.Web/listSitesAssignedToHostName/read",
                        "Microsoft.Web/serverFarms/join/action",
                        "Microsoft.Web/serverFarms/*",
                        "Microsoft.Web/sites/*"
                    ],
                    "notActions": [],
                    "dataActions": [],
                    "notDataActions": []
                }
            ]
        }
    }
    

    注意

    MeshCloudScriptingServiceDeployer 自定义角色不允许用户创建资源组。 如果希望用户创建资源组,他们还需要 Microsoft.Resources/subscriptions/resourcegroups/write 权限

网格云脚本服务的配额限制

网格云脚本服务基础结构利用高级App 服务 Linux 计划(P1V2)。 以下是部署网格云脚本服务时可能会遇到的App 服务限制:

资源 高级版 (P1V2)
每个Azure App 服务计划的 Web、移动或 API 应用 无限制
应用服务计划 每个资源组 100 个

注意

除非另有说明,否则应用和存储配额按App 服务计划。

注意

可托管在这些计算机上的实际应用数取决于应用的活动、计算机实例的大小以及相应的资源利用率。

如果收到以下错误:“此区域为订阅的配额为 0 个 PremiumV2 实例。 请尝试选择其他区域或 SKU,“请参阅 Azure 订阅限制和配额

清理过时的网格云脚本服务

如果已过时或未使用的网格云脚本服务,请按照以下步骤查找网格云脚本资源并删除它们。

  1. 登录到 Azure 门户。

  2. 导航到“所有资源”选项卡。

    选择Azure 门户中的所有资源

  3. 在“所有资源”页上:

    a. 选择适当的“订阅”。

    在 Azure 中选择订阅

    b. 添加带有“EnvironmentName”标记的筛选器。

    Azure 中的 EnvironmentName 筛选器

    c. 查找与要删除的环境匹配的资源。

    Azure 中的资源筛选器

  4. 单击步骤 3C 中找到的每个资源的名称旁边的省略号,然后单击下拉列表中的“删除”,清理过时的网格云脚本服务。 或者,可以使用 Azure CLI,如此 删除资源 文章中所述,按名称删除资源。

后续步骤