使用代理服务器管理 Fleet 的 Elastic Agent 连接
编辑使用代理服务器管理 Fleet 的 Elastic Agent 连接
编辑Elastic Agent 策略中的代理设置会覆盖由环境变量指定的代理设置。这意味着您可以为 Elastic Agent 指定与主机或系统级环境设置不同的代理设置。
本页介绍代理服务器在您的部署中允许的位置,以及如何配置 Elastic Agent 和 Fleet 的代理设置。部署代理服务器本身的步骤不在本文的讨论范围之内。
Elastic Agent 通常会发出两组连接,一组用于与 Fleet Server 的控制平面流量,另一组用于与 Elasticsearch 等输出的数据平面流量。同样,操作员会将 Elastic Agent 放置在代理服务器后面,并将控制和数据平面流量代理到它们的最终目的地。
Fleet 中心管理使您能够定义代理服务器,然后将输出或 Fleet Server 配置为通过任何这些代理访问。 这还使您能够在需要时修改代理服务器详细信息,而无需重新安装 Elastic Agent。
在此场景中,Fleet Server 和 Elasticsearch 部署在 Elastic Cloud 中,并且可以在端口 443 上访问。
在 Fleet 中为托管代理配置代理服务器
编辑以下步骤介绍如何设置 Fleet 组件以使用代理。
-
将代理服务器详细信息全局添加到 Fleet。
- 在 Fleet 中,打开 设置 选项卡。
-
选择 添加代理。 添加代理 或 编辑代理 浮出框打开。
- 添加代理的名称(在本示例中为
Proxy-A
),并指定代理 URL。 - 添加任何其他可选设置。
- 选择 保存并应用设置。代理信息已保存,并且该代理已准备好供 Fleet 中的其他组件引用。
-
将代理附加到 Fleet Server。
如果与 Fleet Server 的控制平面流量也需要通过代理服务器,则还需要将创建的代理添加到该 Fleet Server 的定义中。
- 在 Fleet 中,打开 设置 选项卡。
- 在 Fleet Server 主机 列表中,选择一个主机,然后选择编辑按钮进行配置。
-
在 代理 部分下拉列表中,选择您配置的代理。
在此示例中,策略中使用此 {fleets-server} 的所有 Elastic Agent 现在都将通过
Proxy-A
中定义的代理服务器连接到 Fleet Server。
对 Fleet Server 定义进行的任何可能导致 Elastic Agent 和 Fleet Server 之间连接问题的无效更改都将导致它们断开连接。唯一的补救方法是重新安装受影响的代理。这是因为与 Fleet Server 的连接确保策略更新到达代理。如果带有无效主机地址的策略到达代理,它将无法再连接,因此不会收到来自 Fleet Server 的任何其他更新(包括更正的设置)。在这方面,添加代理服务器(代理服务器代理无法访问),将破坏与 Fleet Server 的连接。
-
将代理附加到输出
同样,如果到输出的数据平面流量要通过代理传输,则需要将该代理定义添加到 Fleet 中定义的输出中。
- 在 Fleet 中,打开 设置 选项卡。
- 在 输出 列表中,选择一个输出,然后选择编辑按钮进行配置。
-
在 代理 部分下拉列表中,选择您配置的代理。
在此示例中,配置为写入所选输出的策略中的所有 Elastic Agent 现在都将通过
Proxy-A
中定义的代理服务器写入该输出。
如果代理无法访问配置的代理服务器,则它们将无法将数据写入配置了代理服务器的输出。在更改输出的代理时,请确保受影响的代理都具有与代理本身的连接。
-
将代理附加到代理下载源
同样,如果往返于工件注册表的下载流量需要通过代理服务器,则还需要将该代理定义添加到 Fleet 中定义的代理二进制源中。
- 在 Fleet 中,打开 设置 选项卡。
- 在 代理二进制下载 列表中,选择一个代理二进制源,然后选择编辑按钮进行配置。
-
在 代理 部分下拉列表中,选择您配置的代理。
在此示例中,注册到配置为从所选代理下载源下载的策略中的所有 Elastic Agent 现在都将通过
Proxy-A
中定义的代理服务器从该代理下载源下载。
如果代理无法访问配置的代理服务器,则它们将无法从配置了代理服务器的代理下载源下载二进制文件。在更改代理二进制源的代理时,请确保受影响的代理都具有与代理本身的连接。
-
配置 Elastic Agent 策略
现在,您可以配置 Elastic Agent 策略以使用可通过代理服务器访问的 Fleet Server 和输出。
- 如果策略配置了附加了代理的 Fleet Server,则该策略中所有代理的控制平面流量都将通过该代理到达 Fleet Server。
- 同样,如果输出定义附加了代理,则该策略中的所有代理都将通过代理写入(数据平面)到输出。
-
注册 Elastic Agent
现在,Fleet 已配置好,所有策略下载都将使用最新的配置代理更新代理。首次安装代理时,它需要与 Fleet(通过 Fleet Server)通信,才能下载其第一个策略配置。
设置用于从 Fleet 检索代理策略的代理
编辑如果 Elastic Agent 和 Fleet 之间存在代理,请在安装 Elastic Agent 并注册到 Fleet 时在命令行上指定代理设置。您在命令行中指定的设置将添加到运行 Elastic Agent 的系统上安装的 fleet.yml
文件中。
如果与 Fleet 的初始代理通信(即控制平面)需要遍历代理服务器,则需要使用 --proxy-url
命令行标志来配置代理,该标志在代理安装期间应用。建立与 Fleet 的连接后,可以通过 UI 管理代理服务器详细信息。
如果 Kibana 位于代理服务器后面,您仍然需要配置 Kibana 设置以访问软件包注册表。
enroll
和 install
命令接受以下标志
CLI 标志 | 描述 |
---|---|
|
代理服务器的 URL。该值可以是完整的 URL,也可以是 |
|
如果指定,则所有代理设置(包括 |
|
在 CONNECT 请求期间要发送到代理的其他标头。多次使用 |
例如
elastic-agent install --url="https://10.0.1.6:8220" --enrollment-token=TOKEN --proxy-url="http://10.0.1.7:3128" --fleet-server-es-ca="/usr/local/share/ca-certificates/es-ca.crt" --certificate-authorities="/usr/local/share/ca-certificates/fleet-ca.crt"
上例中的命令将以下设置添加到安装了 Elastic Agent 的主机上的 fleet.yml
策略中
fleet: enabled: true access_api_key: API-KEY hosts: - https://10.0.1.6:8220 ssl: verification_mode: "" certificate_authorities: - /usr/local/share/ca-certificates/es-ca.crt renegotiation: never timeout: 10m0s proxy_url: http://10.0.1.7:3128 reporting: threshold: 10000 check_frequency_sec: 30 agent: id: ""
当 Elastic Agent 运行时,fleet.yml
文件将被加密并重命名为 fleet.enc
。
使用安全代理网关进行 Elastic Agent 连接
编辑许多安全代理网关都配置为执行相互 TLS,并期望所有连接都出示其证书。在这些情况下,客户端(在本例中为 Elastic Agent)需要向服务器(安全代理)出示证书和密钥。作为回报,客户端希望看到来自服务器的证书颁发机构链,以确保它也与受信任的实体通信。
如果连接到代理服务器时需要 mTLS,则可以选择将客户端证书和客户端证书密钥添加到代理。配置完成后,策略中连接到此安全代理(通过输出或 Fleet Server)的所有 Elastic Agent 都将使用指定的证书来建立与代理服务器的连接。
应该注意的是,用户可以定义证书和密钥的本地路径,因为在许多常见场景中,每个 Elastic Agent 的证书和密钥都是唯一的。
同样重要的是代理需要用来验证他们从安全代理服务器收到的证书的证书颁发机构。这也可以在 Fleet 设置中创建代理定义时添加。
当前 Elastic Agent 不会为与 Fleet Server 的控制平面流量提供证书。某些代理服务器被设置为强制要求建立连接的客户端在允许该客户端连接之前向其提供证书。此问题将通过 issue #2248 解决。我们的建议是避免在 Fleet Server 配置浮出框中添加这样的安全代理。
如果 Kibana 位于代理服务器后面,或者无法访问 Elastic Package Registry 来下载软件包元数据和内容,请参阅设置 Elastic Package Registry 的代理 URL。