第 2 章 新功能


本节论述了 Cryostat 3.0 发行版本提供的新功能。

Cryostat DB 容器

从 Cryostat 3.0 开始,红帽生态系统目录 还包括一个 Cryostat DB 容器镜像(cryostat-db)。当使用 Cryostat Operator 或 Helm Chart 安装 Cryostat 时,也会自动部署 cryostat-db 容器。

cryostat-db 容器提供轻便自定义的 Postgres 数据库。Cryostat 现在使用这个数据库来存储加密目标 JMX 凭证密钥环、自动化规则定义、发现的目标和发现插件等信息。

在以前的版本中,Cryostat 将 JMX 凭证密钥环等信息存储在基于 H2 文件的简单数据库中,以及其他信息(如自动化规则定义)直接作为磁盘上的文件存储。随着 cryostat-db 容器引入,Cryostat 现在可以在同一 Postgres 数据库中存储不同类型的信息。

Cryostat 存储容器

从 Cryostat 3.0 开始,红帽生态系统目录 还包括一个 Cryostat 存储容器镜像(cryostat-storage)。当使用 Cryostat Operator 或 Helm Chart 安装 Cryostat 时,也会自动部署 cryostat-storage 容器。

cryostat-storage 容器提供了一个轻量级定制的 SeaweedFS 存储解决方案,它充当兼容 S3 的存储供应商。

在以前的版本中,Cryostat 将磁盘上的文件直接存储用于归档的 Flight Recordings 和自定义事件模板。随着 cryostat-storage 容器引入,Cryostat 不再需要将直接文件系统访问用于此类信息。

反向代理架构

当使用 Cryostat Operator 或 Helm Chart 安装 Cryostat 3.0 时,Cryostat 现在会在 pod 中包含反向代理(openshift-oauth-proxyoauth2_proxy)。只有此代理通过服务公开给集群流量。这意味着,对 Cryostat 的所有 API 请求以及 Cryostat Web 控制台或 Grafana 仪表板的所有用户都通过代理进行。

代理处理用户会话来控制对应用程序的访问,为 Cryostat Web 控制台和 Grafana 仪表板提供统一访问控制和用户会话。这两个用户界面都可通过同一路由访问,并显示相同的 TLS 证书。

当在 Red Hat OpenShift 上部署时,代理使用 Cryostat 安装命名空间通过与 Red Hat OpenShift 集群 SSO 供应商集成来执行基于角色的访问控制(RBAC)检查用户身份验证和授权。您可以选择使用 htpasswd 文件配置 auth 代理,以启用基本身份验证。在 Red Hat OpenShift 中,这允许定义除 Red Hat OpenShift SSO RBAC 访问外可以访问 Cryostat 的其他用户帐户。

支持自定义路由主机名

默认情况下,Red Hat OpenShift Container Platform 会自动根据集群的默认入口域名为没有指定主机的路由分配主机名。根据您的要求,您可能希望对 Cryostat Operator 为 Cryostat 部署创建的路由使用特定的主机名。在 Cryostat 3.0 中,您可以使用 Cryostat 自定义资源(CR)中的新的 .spec.networkOptions.coreConfig.externalHost 属性为 Cryostat 路由指定自定义主机名。

在 Red Hat OpenShift 控制台中,您可以在创建 Cryostat CR 时访问此属性:

在 Cryostat CR 中配置外部主机的示例

另外,您可以使用 YAML 格式创建 Cryostat CR。例如:

apiVersion: operator.cryostat.io/v1beta2
kind: Cryostat
metadata:
  name: cryostat-sample
spec:
  networkOptions:
    coreConfig:
      externalHost: cryostat.example.com
Copy to Clipboard

在 Red Hat OpenShift Container Platform 中创建路由后,您无法更改路由的主机名。如果在创建 Cryostat CR 后需要更改路由的主机名,您必须删除 Cryostat CR 并使用修改后的主机名创建新 CR。

JVM 的动态附加

从 Cryostat 3.0 开始,Cryostat 代理可以动态地附加正在运行的应用程序 JVM,而无需应用程序重启。这个动态附加功能有以下要求:

  • 您必须确保代理的 JAR 文件被复制到 JVM 的文件系统中(例如,使用 oc cp 命令)。
  • 您必须能够在同一主机上或同一应用程序(例如,使用 oc exec 命令)将代理作为单独的进程运行。

动态附加支持临时一次性配置集或故障排除工作流,您可能不需要在每次 JVM 启动时附加代理。动态附加还适合于无法或不想为附加代理的唯一目的重新配置应用程序的情况。由于代理可以在不需要应用重启的情况下附加到正在运行的 JVM,因此这也意味着没有应用停机时间。

注意

在以前的版本中,您唯一的选项是启用应用程序的 JVM,以便在 JVM 启动时加载和初始化 Cryostat 代理。这要求您将应用程序配置为传递带有到 Cryostat 代理的 JAR 文件的路径的 -javaagent JVM 标志。根据您的要求,您可以继续对 JVM 使用这种类型的静态附加。

支持将 Cryostat 代理作为独立进程启动

从 Cryostat 3.0 开始,如果您希望 Cryostat 代理动态附加到已在运行的应用程序 JVM,您可以将代理作为独立 Java 进程启动。此功能要求您已将代理的 JAR 文件复制到 JVM 的文件系统中(例如,使用 oc cp 命令)。

要启动代理,您可以运行以下命令,其中 < agent_jar_file> 代表代理的 JAR 文件名,< pid& gt; 代表 JVM 的进程 ID (PID):

$ java -jar target/<agent_jar_file> <pid>
Copy to Clipboard

例如:

$ java -jar target/cryostat-agent-0.4.0.jar 1234
Copy to Clipboard

代理进程使用其附加提供程序来查找指定的 PID。如果找到指定的 PID,代理进程会附加到此 PID,并尝试将代理的 JAR 文件加载到此 JVM 中,然后引导到正常的代理启动进程。

您还可以使用命令行选项在代理启动程序中指定额外的 late-binding 配置选项。例如:

$ java -jar target/cryostat-agent-0.4.0.jar \
-Dcryostat.agent.baseuri=http://cryostat.local \
--smartTrigger=[ProcessCpuLoad>0.2]~profile \
@/deployment/app/moreAgentArgs \
1234
Copy to Clipboard

有关可用选项及其行为的更多信息,请运行 java -jar target/cryostat-agent-0.4.0.jar -h help 命令。在注入的代理尝试读取配置值之前,您在主机 JVM 上设置了通过 -D 指定的系统属性。这与在主机 JVM 进程本身上设置这些系统属性或对等环境变量的影响相同。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat