气隙环境

编辑

在受限或封闭的网络中运行 Elastic Agent 时,您需要采取额外的步骤来确保

  • Kibana 能够访问 Elastic Package Registry 以下载软件包元数据和内容。
  • Elastic Agent 能够在升级期间从 Elastic Artifact Registry 下载二进制文件。

因此,必须可以通过 HTTP 代理和/或自托管的方式从 Kibana 访问 Elastic Package Registry。

因此,必须可以通过 HTTP 代理和/或自托管的方式从 Kibana 访问 Elastic Artifact Registry。

有关气隙 离线端点,请参阅 Elastic Security Solution 文档。

在气隙环境中升级所有组件时,建议按以下顺序升级

  1. 升级 Elastic Package Registry。
  2. 升级 Elastic Stack,包括 Kibana。
  3. 升级 Elastic Artifact Registry 并确保最新的 Elastic Agent 二进制文件可用。
  4. 升级本地 Fleet Server。
  5. 在 Fleet 中,为所有 Elastic Agent 发布升级。

为 Fleet 启用气隙模式

编辑

在 Kibana 中设置以下属性以在 Fleet 中启用气隙模式。这允许 Fleet 智能地跳过在气隙环境中不应尝试的某些请求或操作。

xpack.fleet.isAirGapped: true

使用代理服务器访问 Elastic Package Registry

编辑

默认情况下,Kibana 从 epr.elastic.co 的公共 Elastic Package Registry 下载软件包元数据和内容。

如果可以通过网络网关将流量路由到 Elastic Package Registry 的公共端点,请在 Kibana 中设置以下属性以使用代理服务器

xpack.fleet.registryProxyUrl: your-nat-gateway.corp.net

有关更多信息,请参阅 将代理服务器与 Elastic Agent 和 Fleet 结合使用

托管您自己的 Elastic Package Registry

编辑

Elastic Package Registry 软件包包括 软件包验证 中使用的签名。默认情况下,Fleet 使用 Elastic 公共 GPG 密钥来验证软件包签名。如果您需要更改此 GPG 密钥,请使用 kibana.yml 中的 xpack.fleet.packageVerification.gpgKeyPath 设置。有关更多信息,请参阅 Fleet 设置

如果通过代理服务器路由流量不是一种选择,您可以托管自己的 Elastic Package Registry。

可以使用可用的 Docker 镜像之一在本地部署和托管 Elastic Package Registry。这些 Docker 镜像包括 Elastic Package Registry 和一些软件包。

有不同的分发版本可用

  • 8.17.0(推荐):docker.elastic.co/package-registry/distribution:8.17.0 - 从 Elastic Stack 8.17.0 发布的产品存储库中选择的软件包。
  • lite-8.17.0:docker.elastic.co/package-registry/distribution:lite-8.17.0 - 从 Elastic Stack 8.17.0 发布的产品存储库中最常用的软件包子集。此镜像是在气隙环境中开始使用 Fleet 的好选择。
  • production:docker.elastic.co/package-registry/distribution:production - 在产品注册表中可用的软件包(https://epr.elastic.co)。请注意,每次发布新版本的软件包时都会更新此镜像。
  • lite:docker.elastic.co/package-registry/distribution:lite - 在产品注册表中可用的最常用软件包的子集(https://epr.elastic.co)。请注意,每次发布新版本的软件包时都会更新此镜像。

要更新分发镜像,请重新拉取镜像,然后重新启动 Docker 容器。

每个分发版本都包含可供不同版本的 Elastic Stack 使用的软件包。Elastic Package Registry API 公开了一个 Kibana 版本约束,该约束允许筛选与特定版本兼容的软件包。

这些步骤使用标准 Docker CLI,但您可以基于此信息创建 Kubernetes 清单。这些镜像也可以与兼容 Docker 镜像的其他容器运行时一起使用。

  1. 从公共 Docker 注册表中拉取 Docker 镜像

    docker pull docker.elastic.co/package-registry/distribution:8.17.0
  2. 在本地保存 Docker 镜像

    docker save -o package-registry-8.17.0.tar docker.elastic.co/package-registry/distribution:8.17.0

    检查镜像大小以确保您有足够的磁盘空间。

  3. 将镜像传输到气隙环境并加载它

    docker load -i package-registry-8.17.0.tar
  4. 运行 Elastic Package Registry

    docker run -it -p 8080:8080 docker.elastic.co/package-registry/distribution:8.17.0
  5. (可选)您可以使用对根路径的请求来监控 Elastic Package Registry 的运行状况

    docker run -it -p 8080:8080 \
        --health-cmd "curl -f -L http://127.0.0.1:8080/health" \
        docker.elastic.co/package-registry/distribution:8.17.0
将 Kibana 连接到您托管的 Elastic Package Registry
编辑

使用 Kibana 配置中的 xpack.fleet.registryUrl 属性来设置您托管的软件包注册表的 URL。例如

xpack.fleet.registryUrl: "http://package-registry.corp.net:8080"
Elastic Package Registry 的 TLS 配置
编辑

您可以将 Elastic Package Registry 配置为使用 TLS 侦听安全的 HTTPS 端口。

例如,给定在 /etc/ssl 中可用的密钥和证书对,您可以使用以下命令启动在 443 端口上侦听的 Elastic Package Registry

docker run -it -p 443:443 \
  -v /etc/ssl/package-registry.key:/etc/ssl/package-registry.key:ro \
  -v /etc/ssl/package-registry.crt:/etc/ssl/package-registry.crt:ro \
  -e EPR_ADDRESS=0.0.0.0:443 \
  -e EPR_TLS_KEY=/etc/ssl/package-registry.key \
  -e EPR_TLS_CERT=/etc/ssl/package-registry.crt \
  docker.elastic.co/package-registry/distribution:8.17.0

Elastic Package Registry 支持 1.0 到 1.3 的 TLS 版本。可以使用 EPR_TLS_MIN_VERSION 配置接受的最低版本,默认为 1.0。如果要将支持的版本限制为 1.2 到 1.3,可以使用 EPR_TLS_MIN_VERSION=1.2

使用自定义 CA 证书
编辑

如果您使用自签名证书或由自定义证书颁发机构 (CA) 颁发的证书,则需要在 Kibana 启动文件的 NODE_EXTRA_CA_CERTS 环境变量中设置 CA 的文件路径。

NODE_EXTRA_CA_CERTS="/etc/kibana/certs/ca-cert.pem"

托管您自己的二进制文件下载工件注册表

编辑

Elastic Agent 必须能够访问 Elastic Artifact Registry 才能在升级期间下载二进制文件。默认情况下,Elastic Agent 从 https://artifacts.elastic.co/downloads/ 下载工件。

为了在气隙环境中提供二进制文件,您可以托管自己的自定义工件注册表,然后配置 Elastic Agent 从其中下载二进制文件。

  1. 在 Elastic Agent 可访问的位置创建自定义工件注册表

    1. https://artifacts.elastic.co/downloads/ 的公共 Elastic Artifact Registry 下载最新的发布工件。例如,以下 cURL 命令会下载升级在 Linux x86_64 上运行的 Elastic Agent 可能需要的所有工件。您可以将 x86_64 替换为 ARM64 版本的 arm64。确切列表取决于您使用的集成。请务必也下载每个二进制文件的相应 sha512 和 PGP 签名 (.asc) 文件。这些用于在安装和升级期间进行文件完整性验证。

      curl -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/apm-server/apm-server-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/auditbeat/auditbeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/heartbeat/heartbeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/osquerybeat/osquerybeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/osquerybeat/osquerybeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/osquerybeat/osquerybeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/cloudbeat/cloudbeat-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/cloudbeat/cloudbeat-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/cloudbeat/cloudbeat-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/endpoint-dev/endpoint-security-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/endpoint-dev/endpoint-security-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/endpoint-dev/endpoint-security-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/fleet-server/fleet-server-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/fleet-server/fleet-server-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/fleet-server/fleet-server-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-host-agent-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-collector-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-collector-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-collector-8.17.0-linux-x86_64.tar.gz.asc
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-symbolizer-8.17.0-linux-x86_64.tar.gz
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-symbolizer-8.17.0-linux-x86_64.tar.gz.sha512
      curl -O https://artifacts.elastic.co/downloads/prodfiler/pf-elastic-symbolizer-8.17.0-linux-x86_64.tar.gz.asc
    2. 在您的 HTTP 文件服务器上,将工件分组到目录和子目录中,这些目录和子目录遵循 Elastic Artifact Registry 使用的相同约定

      <source_uri>/<artifact_type>/<artifact_name>-<version>-<arch>-<package_type>

      其中

      • <artifact_type> 的格式为 beats/elastic-agentfleet-serverendpoint-dev 等。
      • <artifict_name> 的格式为 elastic-agentendpoint-securityfleet-server 等。
      • arch-package-type 的格式为 linux-x86_64linux-arm64windows_x86_64darwin_x86_64 或 darwin_aarch64`。
      • 如果您使用 DEB 软件包管理器

        • 64 位变体的格式为 <artifact_name>-<version>-amd64.deb
        • aarch64 变体的格式为 <artifact_name>-<version>-arm64.deb
      • 如果您使用 RPM 软件包管理器

        • 64 位变体的格式为 <artifact_name>-<version>-x86_64.rpm
        • aarch64 变体的格式为 <artifact_name>-<version>-aarch64.rpm
    • 如果您有任何疑问,请访问 Elastic Agent 下载页面,以查看从哪个 URL 下载各种二进制文件。
    • 确保您制定了计划或自动化流程,以便在有新版本的 Elastic Agent 可用时更新您的工件注册表。
  2. 将代理二进制文件下载位置添加到 Fleet 设置

    1. 打开 Fleet → 设置
    2. 代理二进制文件下载 下,单击 添加代理二进制文件源 以添加您的工件注册表的位置。有关这些设置的更多详细信息,请参阅 代理二进制文件下载设置。如果您希望所有 Elastic Agent 从此位置下载二进制文件,请将其设置为默认值。
  3. 如果您的工件注册表不是默认值,请编辑您的代理策略以覆盖默认值

    1. 转到 Fleet → 代理策略,然后单击策略名称进行编辑。
    2. 单击 设置
    3. 代理二进制文件下载 下,选择您的工件注册表。

      当您触发为注册到该策略的任何 Elastic Agent 升级时,二进制文件会从您的工件注册表而不是公共存储库下载。

未使用 Fleet? 对于独立的 Elastic Agent,您可以在 elastic-agent.yml 文件中的 agent.download.sourceURI 下设置二进制文件下载位置,或者运行 elastic-agent upgrade 命令并指定 --source-uri 标志。