你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
如何配置 APM 集成和 CA 证书
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。 有关详细信息,请参阅将 Azure Spring Apps 标准消耗和专用计划迁移到 Azure 容器应用。
本文适用于:❌ 基本版/标准版 ✔️ 企业版
本文介绍如何在 Azure Spring Apps Enterprise 计划中配置应用程序性能监视器 (APM) 集成和证书颁发机构 (CA) 证书。
可以在 Azure Springs Apps Enterprise 计划实例上启用或禁用 Tanzu 生成服务。 有关详细信息,请参阅使用 Tanzu 生成服务的按需生成服务部分。
先决条件
- 已预配的 Azure Spring Apps 企业计划实例。 有关详细信息,请参阅快速入门:使用企业计划生成应用并将其部署到 Azure Spring Apps。
- Azure CLI 版本 2.49.0 或更高版本。 使用以下命令安装 Azure Spring Apps 扩展:
az extension add --name spring
支持的方案 - APM 和 CA 证书集成
Tanzu 生成服务使用生成包绑定与 Tanzu 合作伙伴生成包和其他云本机生成包(例如 GitHub 上的 ca-certificates 生成包)集成。
目前,Azure Spring Apps 支持以下 APM 类型:
- ApplicationInsights
- Dynatrace
- AppDynamics
- New Relic
- ElasticAPM
Azure Spring Apps 支持所有语言系列生成包的 CA 证书,但并非支持所有 APM。 下表显示了 Tanzu 语言系列生成包支持的绑定类型。
Buildpack | ApplicationInsights | New Relic | AppDynamics | Dynatrace | ElasticAPM |
---|---|---|---|---|---|
Java | ✔ | ✔ | ✔ | ✔ | ✔ |
.NET | ✔ | ✔ | |||
Go | ✔ | ||||
Python | |||||
NodeJS | ✔ | ✔ | ✔ | ✔ | |
Web 服务器 | ✔ | ||||
Java 本机映像 | |||||
PHP | ✔ | ✔ | ✔ |
有关使用 Web 服务器的信息,请参阅部署 Web 静态文件。
默认情况下,Tanzu 生成服务在 Azure Spring Apps Enterprise 中处于启用状态。 如果选择禁用生成服务,则可以部署应用程序,但只能通过使用自定义容器映像来进行部署。 本部分提供有关已启用和已禁用生成服务的方案的指导。
支持的 APM 类型
本部分列出了可用于集成的 APM 支持的语言和所需的环境变量。
Application Insights
支持的语言:
- Java
生成包绑定所需的环境变量:
connection-string
有关其他支持的环境变量,请参阅 Application Insights 概述。
DynaTrace
支持的语言:
- Java
- .NET
- Go
- Node.js
- WebServers
- PHP
生成包绑定所需的环境变量:
api-url
或environment-id
(在生成步骤中使用)api-token
(在生成步骤中使用)TENANT
TENANTTOKEN
CONNECTION_POINT
有关其他支持的环境变量,请参阅 Dynatrace
New Relic
支持的语言:
- Java
- .NET
- Node.js
- PHP
生成包绑定所需的环境变量:
license_key
app_name
有关其他支持的环境变量,请参阅 New Relic
Elastic
支持的语言:
- Java
- Node.js
- PHP
生成包绑定所需的环境变量:
service_name
application_packages
server_url
有关其他支持的环境变量,请参阅 Elastic
AppDynamics
支持的语言:
- Java
- Node.js
生成包绑定所需的环境变量:
agent_application_name
agent_tier_name
agent_node_name
agent_account_name
agent_account_access_key
controller_host_name
controller_ssl_enabled
controller_port
有关其他支持的环境变量,请参阅 AppDynamics
生成器中的绑定已弃用
注意
以前,可通过生成器中的绑定来管理 APM 集成和 CA 证书。 生成器中的绑定功能已弃用,并会在将来移除。 建议迁移绑定中配置的 APM。 有关详细信息,请参阅迁移绑定中配置的 APM 部分。
对生成服务使用自己的容器注册表或禁用生成服务时,生成器中的绑定功能不可用。
对生成服务使用托管 Azure 容器注册表时,该注册表仍可用于实现后向兼容性,但将来会被移除。
使用 Azure CLI 创建服务实例时,可能会收到错误消息 Buildpack bindings feature is deprecated, it's not available when your own container registry is used for build service or build service is disabled
。 此消息表明使用的是旧版 Azure CLI。 要解决此问题,请升级 Azure CLI。 有关详细信息,请参阅如何更新 Azure CLI。
为应用生成和部署配置 APM 集成
可以通过以下两种方式在 Azure Spring Apps 中配置 APM:
在服务级别管理 APM 配置,并通过引用它们来绑定到应用生成和部署。 此方法是配置 APM 的推荐方法。
通过生成器中的绑定管理 APM 配置,并通过引用生成器来绑定到应用生成和部署。
注意
此方法是配置 APM 的旧方法,现已弃用。 建议迁移绑定中配置的 APM。 有关详细信息,请参阅迁移绑定中配置的 APM 部分。
现在,可以通过在服务实例级别管理 APM 配置来在 Azure Spring Apps 中配置 APM,并通过引用它们来绑定到应用生成和部署。 此方法是配置 APM 的推荐方法。
以下各部分提供了这两种方法的指导。
在服务实例级别管理 APM(推荐)
可以创建 APM 配置并绑定到应用生成和部署,如以下部分中所述。
管理 Azure Spring Apps 中的 APM 配置
可以使用 Azure 门户或 Azure CLI 在 APM 配置中配置属性或机密,从而管理 APM 集成。
注意
通过 APM 配置来配置属性或机密时,请使用不带 APM 名称作为前缀的键名称。 例如,请勿对 Dynatrace 使用 DT_
前缀,也不要对 Application Insights 使用APPLICATIONINSIGHTS_
前缀。 Tanzu APM 生成包将键名称转换为带有前缀的原始环境变量名称。
如果要替代或配置某些属性或机密(例如应用名称或应用级别),则需要在使用带有 APM 名称作为前缀的原始环境变量来部署应用时设置环境变量。
按照以下步骤显示、添加、编辑或删除 APM 配置:
打开 Azure 门户。
在导航窗格中,选择“APM”。
要创建 APM 配置,请选择“添加”。 如果想要全局启用 APM 配置,请选择“全局启用”。 所有后续生成和部署都会自动使用 APM 配置。
要查看或编辑 APM 配置,请选择配置对应的省略号 (...) 按钮,然后选择“编辑 APM”。
要删除 APM 配置,请选择配置对应的省略号 (...) 按钮,然后选择“删除”。 如果任何生成或部署使用了 APM 配置,则无法删除该配置。
按照以下步骤查看绑定到生成的 APM 配置:
按照以下步骤查看绑定到部署的 APM 配置:
有关生成包的 properties
和 secrets
参数的详细信息,请参阅支持的方案 - APM 和 CA 证书集成部分。
绑定到应用生成和部署
对于使用托管 Azure 容器注册表的生成服务,请使用以下命令将 APM 集成到部署中:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--apms <APM-name> \
--artifact-path <path-to-your-JAR-file>
全局启用 APM 配置后,所有后续生成和部署都会自动使用它,并且无需指定 --apms
参数。 如果要替代为部署全局启用的 APM 配置,请通过 --apms
参数指定 APM 配置。
对于使用自己的容器注册表的生成服务,可以将应用程序生成到容器映像中,并将该映像部署到当前或其他 Azure Spring Apps Enterprise 服务实例。
若提供自己的容器注册表,则会将生成与部署分隔开。 可以使用生成命令通过生成器创建或更新生成,然后使用部署命令将容器映像部署到服务。
使用以下命令生成映像并配置 APM:
az spring build-service build <create|update> \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--apms <APM-name> \
--artifact-path <path-to-your-JAR-file>
全局启用 APM 配置后,所有后续生成和部署都会自动使用它,并且无需指定 --apms
参数。 如果要替代为生成全局启用的 APM 配置,请通过 --apms
参数指定 APM 配置。
使用以下命令通过之前生成的容器映像部署应用程序并配置 APM。 可以使用全局启用的 APM 配置,也可以使用 --apms
参数来指定 APM 配置。
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--container-image <your-container-image> \
--container-registry <your-container-registry> \
--registry-password <your-password> \
--registry-username <your-username> \
--apms <your-APM>
禁用生成服务后,只能使用容器映像来部署应用程序。 有关详细信息,请参阅使用自定义容器映像部署应用程序。
可以使用多个 Azure Spring Apps Enterprise 实例,其中一些实例生成和部署映像,而其他实例仅部署映像。 假设出现了下面这种情景:
对于一个实例,可以使用用户容器注册表启用生成服务。 然后,使用 APM 或 CA 证书从生成工件文件或源代码生成到容器映像中。 然后,部署到当前 Azure Spring Apps 实例或其他服务实例。 有关详细信息,请参阅如何在 Azure Spring Apps Enterprise 中部署多语言应用的生成和部署多语言应用程序部分。
在另一个禁用了生成服务的实例中,使用注册表中的容器映像部署应用程序,并利用 APM。
在这种情况下,可以使用全局启用的 APM 配置,也可以使用 --apms
参数来指定 APM 配置,如以下示例所示:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--container-image <your-container-image> \
--container-registry <your-container-registry> \
--registry-password <your-password> \
--registry-username <your-username> \
--apms <your-APM>
通过生成器中的绑定管理 APM(已弃用)
当生成服务使用 Azure Spring Apps 托管容器注册表时,可以将应用程序生成到映像,然后部署它,但只能在当前 Azure Spring Apps 服务实例内进行部署。
通过生成器中的绑定管理 APM 配置
可以通过生成器中的绑定来管理 APM 配置。 有关详细信息,请参阅在 Azure Spring Apps 的生成器中管理绑定(已弃用)部分。
绑定到应用生成和部署
使用以下命令将 APM 集成到部署中。 APM 通过生成器中的绑定进行配置:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--artifact-path <path-to-your-JAR-file>
在创建服务实例时启用 Application Insights
如果在创建服务实例时启用 Application Insights,则以下条件适用:
- 如果对生成服务使用托管 Azure 容器注册表,则 Application Insights 绑定到默认生成器中的绑定。
- 如果对生成服务使用自己的容器注册表或禁用生成服务,则会为 Application Insights 创建默认 APM 配置。 默认 APM 是全局启用的,所有后续生成和部署都会自动使用它。
为应用生成和部署配置 CA 证书
可以通过以下两种方式在 Azure Spring Apps 中配置 CA 证书:
- 可以在 TLS/SSL 设置中管理公共证书,并通过引用它们来绑定到应用生成和部署。 此方法是配置 CA 证书的推荐方法。
- 可以在 TLS/SSL 设置中管理公共证书,并通过生成器中的绑定来绑定 CA 证书。 有关详细信息,请参阅在 Azure Spring Apps 的生成器中管理绑定(已弃用)部分。
注意
此方法是配置 CA 证书的旧方法,已被弃用。 建议迁移绑定中配置的 CA 证书。 有关详细信息,请参阅迁移绑定中配置的 CA 证书部分。
现在可以在 TLS/SSL 设置中管理公共证书,并通过引用它们来绑定到应用生成和部署。 此方法是配置 CA 证书的推荐方法。
要在服务实例级别管理公共证书,请参阅在 Azure Spring Apps 的应用程序中使用 TLS/SSL 证书的导入证书部分。 然后,按照以下部分中介绍的方法之一将 CA 证书绑定到应用生成和部署。
将 CA 证书绑定到应用生成和部署
有关如何将 CA 证书绑定到部署的信息,请参阅在 Azure Spring Apps 的应用程序中使用 TLS/SSL 证书的加载证书部分。 然后,按照以下说明绑定到应用生成。
启用生成服务并使用托管 Azure 容器注册表时,请使用以下命令将 CA 证书集成到部署中:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--build-certificates <CA certificate-name> \
--artifact-path <path-to-your-JAR-file>
对生成服务使用自己的容器注册表或禁用生成服务时,请使用以下命令将 CA 证书集成到生成中:
az spring build-service build <create|update> \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--certificates <CA certificate-name> \
--artifact-path <path-to-your-JAR-file>
查看绑定到应用生成的 CA 证书
使用以下步骤查看绑定到生成的 CA 证书:
通过生成器中的绑定来绑定 CA 证书(已弃用)
CA 证书使用 ca-certificates 生成包来支持在生成和运行时向系统信任存储提供 CA 证书。
在 Azure Spring Apps Enterprise 计划中,CA 证书使用 Azure 门户中“TLS/SSL 设置”页上的“公钥证书”选项卡,如以下屏幕截图所示:
可以在“编辑绑定”页上配置 CA 证书。 succeeded
证书显示在“CA 证书”列表中。
在 Azure Spring Apps 的生成器中管理绑定(已弃用)
本部分仅适用于启用了生成服务的 Azure Spring Apps Enterprise 服务实例。 启用生成服务后,一个生成包绑定表示针对一种 APM 类型的凭据配置,或针对 CA 证书类型的 CA 证书配置。 对于 APM 集成,请按照前面的说明为 APM 配置必要的环境变量或机密。
注意
为 APM 绑定配置环境变量时,请使用不带前缀的键名称。 例如,请勿对 Dynatrace 绑定使用 DT_
前缀,也不要对 Application Insights 使用 APPLICATIONINSIGHTS_
前缀。 Tanzu APM 生成包将键名称转换为带有前缀的原始环境变量名称。
可以通过 Azure 门户或 Azure CLI 管理 buildpack 绑定。
使用以下步骤查看生成包绑定:
在 Azure 门户中,转到 Azure Spring Apps Enterprise 服务实例。
在导航窗格中,选择“生成服务”。
选择“绑定”列下的“编辑”,查看为生成器配置的绑定。
查看“编辑默认生成器的绑定”页上的绑定。
创建生成包绑定
要创建生成包绑定,请在“编辑绑定”页上选择“取消绑定”,指定绑定属性,然后选择“保存”。
取消绑定 buildpack 绑定
可使用“取消绑定绑定”命令或通过编辑绑定属性来取消绑定生成包绑定。
要使用“取消绑定绑定”命令,请选择“已绑定”超链接,然后选择“取消绑定绑定”。
要通过编辑绑定属性来取消绑定生成包绑定,请选择“编辑绑定”,然后选择“取消绑定”。
当取消绑定某个绑定时,绑定状态会从“已绑定”变为“未绑定”。
从生成器中的绑定迁移 APM 和 CA 证书
生成器中的绑定功能已弃用,并会在将来移除。 建议迁移生成器中的绑定。
可以在绑定中配置 APM 和 CA 证书,并按照以下部分来迁移它们。
迁移在绑定中配置的 APM
在大多数用例中,默认生成器的绑定中仅配置了一个 APM。 可以在绑定中创建一个具有相同配置的新 APM 配置,并全局启用此 APM 配置。 所有后续生成和部署都自动使用此配置。 使用以下步骤进行迁移:
使用以下命令创建 APM 配置:
az spring apm create \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-APM-name> \ --type <your-APM-type> \ --properties a=b c=d \ --secrets e=f g=h
使用以下命令全局启用 APM 配置:
az spring apm enable-globally \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-APM-name> \
使用以下命令重新部署所有应用程序,以使用全局启用的新 APM 配置:
az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <app-name> \ --builder <builder-name> \ --artifact-path <path-to-your-JAR-file>
验证新的 APM 配置是否适用于所有应用程序。 如果一切正常,请使用以下命令移除生成器中的 APM 绑定:
az spring build-service builder buildpack-binding delete \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-APM-buildpack-binding-name> \ --builder-name <your-builder-name>
如果绑定中配置了多个 APM,可以在绑定中创建多个具有相同配置的 APM 配置,并全局启用 APM 配置(如果适用)。 如果要替代全局启用的 APM,请使用 --apms
参数指定部署的 APM 配置,如以下命令所示:
az spring app deploy \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <app-name> \
--builder <builder-name> \
--apms <APM-name> \
--artifact-path <path-to-your-JAR-file>
在迁移过程中,APM 在绑定和 APM 配置中进行配置。 在这种情况下,APM 配置生效,并会忽略绑定。
迁移在绑定中配置的 CA 证书
使用以下步骤迁移 CA 证书:
对于在绑定中配置的 CA 证书,如果在运行时使用它,可以将该证书加载到应用程序中。 有关详细信息,请参阅在 Azure Spring Apps 的应用程序中使用 TLS/SSL 证书的加载证书部分。
使用以下命令重新部署使用 CA 证书的所有应用程序。 如果在生成时使用证书,请使用
--build-certificates
参数指定在生成时用于部署的 CA 证书:az spring app deploy \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <app-name> \ --builder <builder-name> \ --build-certificates <CA certificate-name> \ --artifact-path <path-to-your-JAR-file>
验证 CA 证书是否适用于使用该证书的所有应用程序。 如果一切正常,请使用以下命令移除生成器中的 CA 证书绑定:
az spring build-service builder buildpack-binding delete \ --resource-group <resource-group-name> \ --service <Azure-Spring-Apps-instance-name> \ --name <your-CA-certificate-buildpack-binding-name> \ --builder-name <your-builder-name>