你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
服务连接器内部机制
服务连接器是一个 Azure 扩展资源提供程序,旨在提供一种简单的方法来创建和管理 Azure 服务之间的连接。
服务连接器提供以下功能:
- 让你可以使用单个 Azure CLI 命令或者在 Azure 门户中通过几个步骤将 Azure 服务连接到一起。
- 支持与云原生应用程序配合使用的日益增多的数据库、存储、实时服务、状态存储和机密存储。
- 配置网络设置、身份验证以及管理连接环境变量或属性。
- 验证连接并提供有关修复错误连接的建议。
服务连接概述
服务连接的概念是服务连接器资源模型中的关键概念。 服务连接表示两个服务之间的链接的抽象。 服务连接具有以下属性:
属性 | 说明 |
---|---|
连接名称 | 服务连接的唯一名称。 |
源服务类型 | 源服务是可以连接到目标服务的服务。 它们通常是 Azure 计算服务,包括 Azure 应用服务、Azure 容器应用、Azure Functions、Azure Kubernetes 服务 (AKS) 和 Azure Spring Apps。 |
目标服务类型 | 目标服务是计算服务连接到的后备服务或依赖项服务。 服务连接器支持各种目标服务类型,其中包括主要数据库、存储、实时服务、状态和机密存储。 |
客户端类型 | 客户端类型是指接受连接环境变量或属性的特定格式的计算运行时堆栈、开发框架或特定客户端库类型。 |
身份验证类型 | 用于服务连接的身份验证类型。 它可以是机密/连接字符串、托管标识或服务主体。 |
源服务和目标服务支持多个同时存在的服务连接,这意味着你可以将每个资源连接到多个资源。
服务连接器在源实例的属性中管理连接。 可以通过在 Azure 门户中打开源服务实例或使用源服务的 CLI 命令直接创建、获取、更新和删除连接。
可以跨订阅或租户建立连接,这意味着源和目标服务可以属于不同的订阅或租户。 创建新的服务连接时,连接资源默认是在计算服务实例所在的同一区域中创建的。
创建和更新服务连接
在创建或更新服务连接时,服务连接器将运行多个任务,包括:
配置网络和防火墙设置。 详细了解 网络解决方案。
配置连接信息。 详细了解 连接配置。
配置身份验证信息。 服务连接器支持源服务和目标服务之间的所有可用身份验证类型。
- 系统分配的托管标识。 如果尚未启用,则服务连接器在源服务上启用系统分配的托管标识,然后将目标服务的 RBAC 角色授予托管标识。 用户可以指定要授予的角色。
- 用户分配的托管标识。 如果尚未启用,则服务连接器在源服务上启用用户分配的托管标识,然后将目标服务的 RBAC 角色授予托管标识。 用户可以指定要授予的角色。
- 连接字符串。 服务连接器从目标服务(如存储、Redis 缓存等)检索连接字符串,或基于用户输入(例如 Azure Database for SQL、PostgreSQL 等)构造连接字符串。
- 服务主体。 服务连接器将目标服务的 RBAC 角色授予托管标识。 用户可以指定要授予的角色。
服务连接器将相应的身份验证配置保存到源服务,例如,使用身份验证类型用户分配的托管标识保存 AZURE_CLIENT_ID、AZURE_TENANT_ID AZURE_STORAGEACCOUNT_ENDPOINT。
在发生故障时创建或更新连接回滚
如果在此过程中某个步骤失败,服务连接器会回滚之前的所有步骤,以在源和目标实例中保留初始设置。
资源提供程序
Microsoft.ServiceLinker 是服务连接器的资源提供程序的名称。
当用户在 Azure 门户中打开“服务连接器”选项卡时,ServiceLinker 资源提供程序会自动注册到用户的活动订阅中。 生成注册的用户将列为注册事件的发起者。
服务连接器允许用户跨订阅连接服务。 当用户创建与另一订阅中注册的目标服务的连接时,服务链接器也会在目标服务的订阅中注册。 当用户在最终创建连接之前选择“审阅 + 创建”选项卡时,会发生此注册。
连接配置
连接配置是在源服务中设置的。
在 Azure 门户中,打开源服务并导航到“服务连接器”。 展开每个连接并查看连接配置。
在 CLI 中,使用 list-configuration
命令获取连接配置。
az webapp connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
az spring connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
az containerapp connection list-configuration --resource-group <source-service-resource-group> --name <source-service-name> --connection <connection-name>
配置命名约定
在创建连接时,服务连接器将设置连接配置。 环境变量键值对是根据客户端类型和身份验证类型确定的。 例如,将 Azure SDK 与托管标识配合使用需要客户端 ID、客户端机密等。使用 JDBC 驱动程序需要数据库连接字符串。 按照以下约定命名配置:
Spring Boot 客户端:每个目标服务的 Spring Boot 库都有其自己的命名约定。 例如,MySQL 连接设置将为
spring.datasource.url
、spring.datasource.username
、spring.datasource.password
。 Kafka 连接设置将为spring.kafka.properties.bootstrap.servers
。其他客户端:
- 第一个连接配置的键名称使用
<Cloud>_<Type>_<Name>
格式。 例如:AZURE_STORAGEBLOB_RESOURCEENDPOINT
、CONFLUENTCLOUD_KAFKA_BOOTSTRAPSERVER
。 - 对于相同类型的目标资源,第二个连接配置的键名称使用
<Cloud>_<Type>_<Connection Name>_<Name>
格式。 例如:AZURE_STORAGEBLOB_CONN2_RESOURCEENDPOINT
、CONFLUENTCLOUD_KAFKA_CONN2_BOOTSTRAPSERVER
。
- 第一个连接配置的键名称使用
服务网络解决方案
服务连接器提供三种网络解决方案,供用户在创建连接时选择。 这些解决方案旨在促进资源之间的安全高效通信。
防火墙:此解决方案允许通过公用网络和计算资源通过公共 IP 地址访问目标资源进行连接。 选择此选项时,服务连接器会验证目标资源的防火墙设置,并添加一个规则以允许来自源资源的公共 IP 地址的连接。 如果资源的防火墙支持允许所有 Azure 资源访问,服务连接器将启用此设置。 但是,如果目标资源默认拒绝所有公共网络流量,则服务连接器不会修改此设置。 在这种情况下,应选择另一个选项或手动更新网络设置,然后再重试。
服务终结点:此解决方案使计算资源能够通过虚拟网络连接到目标资源,确保连接流量不会通过公用网络。 仅当满足某些先决条件时,它才可用:
- 计算资源必须启用虚拟网络集成。 对于 Azure 应用服务,可以在其网络设置中配置它;对于 Azure Spring Apps,用户必须在资源创建阶段设置虚拟网络注入。
- 目标服务必须支持服务终结点。 有关受支持的服务列表,请参阅虚拟网络服务终结点。
选择此选项时,服务连接器会将虚拟网络中计算资源的专用 IP 地址添加到目标资源的虚拟网络规则中,并在源资源的子网配置中启用服务终结点。 如果用户没有足够的权限,或者资源的 SKU 或区域不支持服务终结点,则连接创建会失败。
专用终结点:此解决方案是一种通过虚拟网络连接资源的推荐方法,仅在满足某些先决条件时才可用:
计算资源必须启用虚拟网络集成。 对于 Azure 应用服务,可以在其网络设置中配置它;对于 Azure Spring Apps,用户必须在资源创建阶段设置 VNet 注入。
目标服务必须支持专用终结点。 有关受支持的服务列表,请参阅专用链接资源。
选择此选项时,服务连接器不会在计算或目标资源中执行任何其他配置。 相反,它会验证是否存在有效的专用终结点,如果未找到连接,则会失败。 为方便起见,用户可以在创建连接时在 Azure 门户中选中“新建专用终结点”复选框。 使用它,服务连接器会自动按正确的顺序为专用终结点创建所有相关资源,从而简化连接创建过程。
服务连接验证
验证连接时,服务连接器将检查以下元素:
- 源和目标资源存在。
- 源:注册了正确的连接信息。
- 目标:注册了正确的网络和防火墙设置。
- 源和目标资源:注册了正确的身份验证信息。
删除连接
删除服务连接时也会删除连接信息。
后续步骤
请参阅以下概念文章,了解有关服务连接器的详细信息。
高可用性