Red Hat build of Cryostat 3.0 发行注记


Red Hat build of Cryostat 3

Red Hat Customer Content Services

摘要

Red Hat build of Cryostat 3.0 的发行注记 文档概述了 Cryostat 3.0 中的新功能以及潜在的已知问题列表和可能的临时解决方案。

前言

Red Hat build of Cryostat 是 JDK Flight Recorder (JFR)的容器原生虚拟化,可用于安全监控在 OpenShift Container Platform 集群上运行的工作负载的 Java 虚拟机(JVM)性能。您可以使用 Cryostat 3.0 使用 Web 控制台或 HTTP API 启动、停止、检索、存档、导入和导出容器化应用中的 JVM 的 JFR 数据。

根据您的用例,您可以使用 Cryostat 提供的内置工具直接存储和分析 Red Hat OpenShift 集群上的记录,或者您可以将记录导出到外部监控应用程序,以对记录数据进行更深入分析。

重要

Red Hat build of Cryostat 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中有问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

第 1 章 Cryostat 的支持策略

红帽支持次版本 Cryostat 最少需要 6 个月。在红帽客户门户上,红帽将这个数字基于产品发布的时间。

您可以在 Red Hat OpenShift Container Platform 4.12 或 x86_64 或 ARM64 架构上运行的更新版本上安装和部署 Cryostat。

第 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 时访问此属性:

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

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

在 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 Toggle word wrap

例如:

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

代理进程使用其附加提供程序来查找指定的 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 Toggle word wrap

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

第 3 章 功能增强

Cryostat 3.0 包括了在 Cryostat 2.4 产品上构建的功能增强。

Cryostat 容器的改进

在本发行版本中,主 Cryostat 容器(cryostat)已被使用 Quarkus 重新实现。在以前的版本中,cr yostat 容器直接使用 Eclipse Vert.x 构建。

此功能增强允许 Cryostat 利用 Quarkus 框架的优点和功能,这使得 Cryostat 能够为您的 JDK Flight Recorder 数据提供更高的性能访问,以及更好的数据完整性和安全性。

Cryostat API 支持创建多命名空间 Cryostat 实例

从 Cryostat 3.0 开始,Cryostat API 支持创建单命名空间和多命名空间 Cryostat 实例。当使用 Cryostat Operator 安装 Cryostat 实例时,Cryostat API 现在允许您指定可选的目标命名空间列表。这会替换之前的一个版本中的 behavior,其中 Cryostat API 仅支持创建单命名空间实例。

注意

在以前的版本中,您可以使用 Cluster Cryostat API 创建多命名空间 Cryostat 实例。Cryostat 3.0 不再提供单独的 Cluster Cryostat API。

访问 Cryostat 的 RBAC 增强

Cryostat 现在对所有用户应用相同的基于角色的访问控制(RBAC)权限检查,以便允许或拒绝对产品的访问。默认情况下,Cryostat 应用程序的安装命名空间中的所需的 RBAC 角色是 创建 pod/exec

任何分配了所需 RBAC 角色的 Red Hat OpenShift 用户帐户现在都具有对 Cryostat web 控制台和所有 Cryostat 功能的完整访问权限。如果 Red Hat OpenShift 帐户没有所需的 RBAC 角色,则此用户将阻止访问 Cryostat。

当使用 Cryostat Operator 安装 Cryostat 实例时,您可以选择使用 Cryostat 自定义资源(CR)中的 .spec.authorizationOptions.openShiftSSO.accessReview 字段来自定义访问 Cryostat 所需的 RBAC 权限。

此增强会取代之前版本的行为,您可以在其中为不同的用户帐户配置不同的授权级别。

Cryostat CR 验证增强

Cryostat Operator 现在会在接受这些对象进行处理前对 Cryostat CR 对象执行额外的验证检查。一个值得注意的验证检查是,创建一个带有目标命名空间列表的 Cryostat CR 的用户必须具有足够权限才能在这些目标命名空间中创建单命名空间 Cryostat CR。

Cryostat Helm Chart 配置更改

现在,您可以为 Cryostat Helm Chart 设置以下配置参数:

  • authentication.openshift.enabled

    此属性启用 openshift-oauth-proxy 的部署,并默认禁用。如果禁用了此属性,则会部署 oauth2_proxy

    注意

    您可以配置 openshift-oauth-proxyoauth2-proxy,以使用 authentication.basicAuth 属性启用 基本身份验证。但是,对于在 Red Hat OpenShift 上部署 Cryostat 的用户,openshift-oauth-proxy 还支持与 Red Hat OpenShift 集群 SSO 集成。

  • authentication.basicAuth

    此属性在 auth 代理上配置基本身份验证。如果启用 openshift-oauth-proxy 的部署,则此基本身份验证除 Red Hat OpenShift SSO 之外。如果您启用 oauth2_proxy 的部署,则此基本身份验证是唯一开箱即用的、受支持的用户身份验证机制。

  • openshiftOauthProxy.accessReview

    此属性配置 SubjectAccessReview,用于通过 Red Hat OpenShift SSO 测试对 Cryostat 的客户端访问。

有关配置参数的完整列表,请参阅 Cryostat Helm Chart readme 文件

Cryostat 代理嵌入的 Web 服务器

在 Cryostat 代理启动时,代理启动嵌入的 Web 服务器,用于服务来自 Cryostat 服务器的请求。嵌入的 Web 服务器使用基本身份验证保护其自身。

在以前的版本中,基本用户名始终是 用户,并且随机生成的密码由 24 ASCII 字符组成。在 Cryostat 3.0 中,默认用户名是 user,默认密码长度为 24 个字符,但用户名和密码长度都是可配置的。在本发行版本中,与之前版本相比,随机生成的密码也基于更大的字符集。

Cryostat 代理端口增强

将应用程序配置为使用 Cryostat 代理时,代理基本 URI 现在默认使用端口 4180。这会取代之前版本的行为,其中代理基础 URI 使用端口 8181。

此功能增强是因为在 Cryostat 3.0 中引入了反向代理架构。端口 4180 是 auth 代理的 HTTP 端口,它将授权请求传递给 Cryostat。因此,您必须配置 Cryostat 代理,将请求发送到端口 4180 而不是直接发送到端口 8181,因为 Cryostat HTTP 端口现在在代理后面被隐藏。

第 4 章 不支持和弃用的功能

Cryostat 3.0 消除了一些功能,因为其高的维护成本、社区兴趣低和更好的替代解决方案。

目标 TLS 证书上传

Cryostat Web 控制台的 Security 视图不再提供将 SSL/TLS 证书直接上传到 Cryostat 服务器信任存储的方法。Security 视图现在只显示已载入的证书列表。

从 Cryostat 3.0 开始,必须将新证书添加到 Cryostat 启动时读取的存储卷中。您可以使用 Cryostat CR 中的现有 TrustedCertSecrets 属性来配置任何新证书。

JMX 目标凭证通过 API 请求传递

X-JMX-Authorization 标头不再被支持。这意味着 Cryostat 不再接受来自目标应用程序的 API 请求,以允许 Cryostat 在 JMX 连接到应用程序的期间在内存中验证凭证。

从 Cryostat 3.0 开始,目标应用程序的 JMX 凭证始终存储在 Red Hat OpenShift 中持久性卷声明(PVC)上的加密数据库中。Cryostat Web 控制台的 Settings 视图不再提供高级配置,用于选择要使用的身份验证机制。

Cryostat 自我发现

当使用 Cryostat Operator 或 Helm Chart 安装 Cryostat 时,Cryostat 不再默认将其发现为目标应用程序。在以前的版本中,Cryostat 在 Kubernetes 服务上公开 JMX 端口,而 Cryostat Operator 生成凭证并分配了 TLS 证书,以帮助保护这个端口。

从 Cryostat 3.0 开始,Cryostat 公开的 JMX 端口已被禁用,对应的服务端口会被删除,这意味着 Cryostat 不再将其发现为可连接的目标。这也意味着 Cryostat 不再出现在目标选择列表中或 Cryostat Web 控制台的 Topology 视图中。

注意

如果要将 Cryostat 连接到自己以检查性能,您可以使用 URL 值 localhost:0 创建自定义目标。这个值指示 JVM 打开到其自身的本地 JMX 连接,而无需向网络公开端口,这意味着不需要额外的身份验证和 TLS 加密。

单个命名空间的 Cryostat Operator 安装

不再提供对在单一命名空间或集群命名空间中安装 Cryostat Operator 的支持。

从 Cryostat 3.0 开始,Cryostat Operator 只能在集群范围内安装。集群范围的安装是 Operator Lifecycle Manager 的首选模式,每个命名空间安装都是已弃用的功能。

Cluster Cryostat API

Cluster Cryostat API 不再被支持。在这个发行版本中,当使用 Cryostat Operator 安装 Cryostat 实例时,您无法在 Details 选项卡的 Provided APIs 部分中选择 Cluster Cryostat 选项。

从 Cryostat 3.0 开始,您可以使用 Cryostat API 创建单命名空间和多命名空间 Cryostat 实例。当使用 Cryostat Operator 安装 Cryostat 实例时,Cryostat API 现在允许您指定可选的目标命名空间列表。

第 5 章 修复的问题

Cryostat 版本可以包括对早期版本里发现的问题的修复。请参阅以下备注以了解每个问题及其解决方案的详细信息。

在 Cryostat 3.0.1 中修复的问题

在 Cryostat 3.0.1 版本中解决了以下问题:

因为 Webhook TLS 错误,无法创建或更新 Cryostat 自定义资源

在 Cryostat 3.0.1 之前,如果您安装了与 Cryostat Operator 相同的命名空间中使用 webhook 的其他 Operator,请尝试创建或更新 Cryostat 自定义资源可能会失败。这个行为会导致以下类型的错误消息:

Error "failed calling webhook "vcryostat.kb.io": failed to call webhook: Post "https://cryostat-operator-controller-manager-service.openshift-operators.svc:443/validate-operator-cryostat-io-v1beta2-cryostat?timeout=10s": tls: failed to verify certificate: x509: certificate is valid for infinispan-operator-controller-manager-service.openshift-operators, infinispan-operator-controller-manager-service.openshift-operators.svc, not cryostat-operator-controller-manager-service.openshift-operators.svc" for field "undefined".
Copy to Clipboard Toggle word wrap

发生此错误的原因是 Cryostat Operator 的 Webhook 服务上的标签选择器不足够具体,并可与其他 Operator 匹配。

Cryostat 3.0.1 通过使 Cryostat Operator 的 webhook 服务的标签选择器设置为只与 Cryostat Operator pod 匹配,从而解决了这个问题。

无法上传 JMC ByteCode Agent 检测模板

在 Cryostat 3.0.1 之前,Cryostat 无法接受 JDK Mission Control (JMC) ByteCode Agent 集成功能中的 bytecode 探测定义模板。在这种情况下,服务器收到上传的模板 XML 文件,但服务器无法找到验证模式并拒绝请求。

Cryostat 3.0.1 通过正确找到模板架构文件来解决这个问题,该文件使服务器能够验证和接受上传的 XML 文件。

使用标签文件上传存档记录时解析失败

将 JDK Flight Recorder (JFR)文件从工作站上传到 Cryostat 存储时,您还可以选择一个包含与上传的 JFR 记录相关的元数据和标签信息的 JSON 文件。

在 Cryostat 3.0.1 之前,所选 JSON 文件被错误地解析,标签信息没有应用到 JFR 记录。

Cryostat 3.0.1 通过更正提供的元数据文件的解析过程来解决这个问题,这样可确保标签正确上传到服务器,并与上传的 JFR 记录相关联。

拓扑视图无法根据标签或注解过滤目标 JVM

Cryostat Web 控制台的 Topology 视图显示用户发现的目标 JVM 应用程序的图形或列表视图。Topology 视图包含一个下拉菜单,可用于根据各种属性过滤这些目标,包括任何可能出现的 OpenShift 标签或注解。

在 Cryostat 3.0.1 之前,Cryostat 服务器会错误地处理这些标签和注解。在这种情况下,服务器会将标签和注解替换为 [object Object] 文本,这会阻止基于这些属性进行任何过滤。

从 Cryostat 3.0.1 开始,Topology 视图可以正确地显示任何标签和注解,作为可用于过滤目标 JVM 列表的键值对。

匹配表达式无法使用 target.agent 属性

API 端点,如 /api/v3/discovery/api/v3/targets 列表带有各种属性的目标 JVM 对象,包括 代理 属性。agent 属性反映了目标 JVM 使用 JMX 连接还是 Cryostat 代理 HTTP 连接。

在 Cryostat 3.0.1 之前,您无法参考或选择 agent 属性以过滤目的:

  • 为存储的凭证或自动化规则创建匹配表达式时
  • 当在 Cryostat Web 控制台的 Topology 视图中以图形方式过滤目标 JVM 时

从 Cryostat 3.0.1 开始,您可以引用匹配表达式中的 agent 属性。您还可以在 Topology 视图中选择 agent 属性作为过滤器,只显示使用 Cryostat 代理的目标 JVM。

第 6 章 已知问题

有时,Cryostat 发行版本可能会包含红帽确认的问题或问题,并可能在产品开发期间在后续阶段修复。查看每个已知问题以了解其描述及其解析。

当直接在 URL 路径中访问时,无法访问 /recordings/create 等子视图

描述

当您试图通过包含子视图的 URL 路径(如 /topology/create-custom-target,/rules/create, 或 /recordings/create )访问 console 时,无法从 Web 浏览器访问 Cryostat web 控制台。

例如,如果您输入 URL 路径,如 https://my_cryostat_domain/recordings/create,则 Cryostat 控制台会显示一个空白页面。

临时解决方案

不要在 URL 路径中指定子视图。

例如,如果要访问 https://my_cryostat_domain/recordings/create,请在 web 浏览器中输入 URL 路径 https://my_cryostat_domain/recordings,然后在 Cryostat web 控制台中点 Create

当使用 replace=always 参数重启记录时,active Recordings 表无法更新

描述
如果客户端发送包含 replace=always 参数的请求来重新创建现有记录,则 Cryostat web 控制台中的 Active Recordings 表不会被更新来显示新记录的详情。即使显示 Recording 创建 的通知,但新记录不会自动出现在 Active Recordings 表中。
临时解决方案
重新加载 Active Recordings 页面,再离开当前页面。然后 Active Recordings 表可以正确地显示新的记录。

第 7 章 与本发行版本相关的公告

以下公告包括了记录程序错误修复和 CVE 修复:

更新于 2024-09-19

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat