开始使用

Red Hat 3scale 2-saas

开始进行 3scale API 管理安装。

Red Hat Customer Content Services

摘要

本指南提供有关如何开始使用 3scale 的信息。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。这些更改将在即将发行的几个发行本中逐渐实施。详情请查看我们的 CTO Chris Wright 信息

第 1 章 3scale 的第一步

对于使用红帽 3scale 功能的第一步,您将了解如何从面向客户和内部角度集成和管理您的 API。

1.1. 3scale API 的产品和后端

Red Hat 3scale 将您的 API 分成两个主要组:

  • 后端 :在产品中捆绑的内部 API。后端为 API 提供程序提供了将内部 API 组织结构映射到 3scale 的自由。
  • 产品 :面向客户的 API.产品有助于为 API 用户创建强大和简化的产品。

产品可以包含多个后端,后端可用于多个产品。换句话说,为了在 3scale 中集成和管理您的 API,您需要创建这两者:

  • 包含至少包含 API URL 的后端。可以选择使用映射规则、方法和指标来配置后端,以便于可重复利用。
  • 您定义应用程序计划并配置 APIcast 的产品。

1.2. 使用 3scale 向导配置第一个 API

3scale 向导在使用产品和后端时提供初始帮助。

重要

仅在第一次登录 3scale 帐户时运行 3scale 向导。如果您运行向导来创建后续 3scale 组件,您将覆盖现有的组件。

先决条件

  • 您需要 3scale 帐户。

流程

  1. 运行向导。您可以通过两种方式运行 3scale 向导:

    • 第一次登录 3scale 帐户时。
    • 通过替换以下 URL 地址中的 [Your_admin_domain] 运行向导:

      \https://[Your-admin-domain]-admin.3scale.net/p/admin/onboarding/wizard/intro

      例如,如果您的 admin 域是 test-area,则向导位于:

      https://testing-area-admin.3scale.net/p/admin/onboarding/wizard/intro

  2. OK, how does 3scale work?
  3. 观看简介动画。完成后点 Got it!Let’s add my API
  4. 创建一个后端:

    1. 为后端指定一个名称。例如: Inventory
    2. 指定后端的基本 URL。示例 :https://echo-api.3scale.net:443
    3. 单击 Add this Backend
  5. 创建产品:

    1. 指明产品名称。例如: Petstore
    2. 单击 Add this Product
  6. 指明将您的后端连接到您的产品的路径,然后点 Add the Backend to the Product

    • 您可以保留默认值。Path: /
  7. 若要使用 GET 请求进行测试,请点 Send request

    • 您可以指定一个 GET 方法。
  8. 这些步骤后,您将看到对 API 网关请求的成功确认。有关以下配置的更多详细信息,请点 Cool, what’s next?

查看建议的额外配置后,就可以使用 3scale。点 Got it!Take me to my API on 3scale 您将看到您产品的 Overview 页面。

1.3. 用于执行测试调用的初始 API 配置

初始配置将确保您的 API 流量受 API 密钥保护,由 3scale 进行跟踪和监控,并采用基本速率限值和控制进行监控。如果您第一次使用 3scale,您可以运行向导来获得配置第一个 API 的帮助。

1.4. 为您的产品创建后端

后端是一个内部 API,捆绑到产品中。

先决条件

  • 您需要 3scale 帐户。

流程

  1. 转至仪表板。
  2. 在 APIs 部分,点 Backends 卡中的 Create Backend
  3. 提供以下详情:

    • 名称 :后端标识符。
    • 系统名称 :用于内部目的的标识符。
    • Description: 可选字段,包括有关后端的更多详细信息。
    • Private Base URL:私有 API 的基本 URL 端点。
  4. Create Backend

在执行了为您的 API 创建后端的步骤,您就有了一个内部 API。您可以根据需要创建更多后端。

1.5. 创建用于测试 API 调用的新产品

作为 3scale API 提供程序,创建用于通过这些公共 API 测试 API 调用的产品。产品是面向客户的 API,打包了一个或多个后端。

先决条件

  • 您需要 3scale 帐户。

流程

  1. 转至仪表板。在 API 部分下,单击 Products 卡中的 Create Product
  2. 提供以下详情:

    1. 名称:产品标识符。
    2. 系统名称 :用于内部目的的标识符。产品 system_name 用于生成代理端点和域名。默认情况下,system_name 是标签的一部分,其模式可以是以下备选之一:

      • 对于 APIcast staging: %{system_name}-%{tenant_name}-apicast-staging
      • 对于 APIcast production: %{system_name}-%{tenant_name}-apicast-production
      • 当自动生成的 URL 标签超过 63 个字符时,系统会将标签缩短如下: <truncated-label>-<unique-hash>

        • <truncated-label> 是原始 URL 的前 54 或 55 个字符。
        • <unique-hash> 是从原始标签计算的唯一 SHA-1 哈希的前 7 个字符。

          例如,这是在删减前的 URL:

          https://my-very-long-system-name-also-very-long-tenant-name-apicast-staging.3scale.net

          这是截断后的 URL:

          https://my-very-long-system-name-also-very-long-tenant-name-api-72588d2.3scale.net

    3. Description: 可选字段,包括有关该产品的更多详细信息。
  3. Create Product

在这些步骤后,您将拥有代表面向公共 API 的产品。接下来的步骤是创建后端将它们添加到产品中

1.6. 在您的产品中添加后端

在此流程结束时,您将在产品中添加后端。重复这个过程,根据需要添加更多后端。

先决条件

流程

  1. 进入 [Your_product_name] > Integration > Backends
  2. Add Backend
  3. 在下拉列表中执行以下操作之一:

    • 选择现有的后端。
    • View all 以查看整个列表。

      • 如果需要创建新后端,请点 Create new Backend 并完成详情。
  4. Path 文本框中指定路由路径。如需了解更多详细信息,请参阅 特定产品的后端路径
  5. Add to Product
  6. [Your_product_name] > Integration > Configuration 中的 Products 选项卡下提升产品。

这些步骤后,您的产品将有一个后端。您可以重复这个过程,为产品或多个产品添加更多后端。

1.7. 特定产品的后端路径

当您向产品中添加后端时,您可以定义后端用来与指定产品通信的路径。此路径不是后端的一部分。

根据后端添加到产品的步骤中,APIcast 是使用在第 4 步中指示的后端路径的 API 网关。APIcast 将流量重定向到具有与所请求端点路径前缀匹配的指定路径的后端。

在定义后端的路径时:

  • 您可以将 / 指定为其中一个后端的路径。
  • 路径在产品内必须是唯一的。这意味着,您不能在同一产品中使用相同路径添加两个后端。您不能将同一后端两次添加到同一产品中。
  • 您可以为同一后端提供不同产品中的相同路径。

这是后端路径的工作方式:

  • 添加至产品的每个后端都挂载在指定路径中。
  • 在重定向流量之前,路径会从请求的公共 URL 移除至产品。

示例

考虑此配置将后端添加到产品中:

  • Backend: Inventory
  • Resource path: /list
  • Product: Petstore
  • Backend path: /supplies

这些是您的配置使用的 URL:

  • 公共 URL:& lt;public-api-domain>/supplies/list
  • 私有 URL: <private-api-domain>/list

这是发送请求时的操作流:

  1. 应用发送请求。
  2. 请求发送到公共 URL:& lt;public-api-domain>/supplies/list
  3. 在重定向到私有 URL: <private-api-domain>/list前删除后端路径
  4. 请求重定向到 Inventory 后端。

1.8. 定义映射规则

映射规则将调用与端点相关联,与指定的方法和指标相关联,用于跟踪和限制对您的 API 的访问。您可以在后端和产品级别上定义映射规则。在后端级别上定义映射规则的优点是您可以向多个产品添加后端。要了解更多有关根据对 API 的请求(在产品和后端级别)收集使用量信息的指标或方法,请参阅 APIcast 应用用于捕获 3scale API 的映射规则

先决条件

流程

  1. 在 Dashboard 中,点您要为其定义映射规则的后端
  2. 在导航面板中,单映射规则
  3. Create Mapping Rule
  4. 指定以下设置:

    • 动词 :HTTP 请求动词(GETPOSTDELETEPUT)。
    • Pattern :要匹配的模式。例如,/hello
    • 递增的指标或方法 :指标或方法名称。
    • Increment by: 指标递增数字。例如,1.
    • Last? :如果请求与标记为 Last? 的规则匹配,APIcast 会停止处理,且不会在剩余的映射规则中搜索匹配项,然后也会停止递增其指标。
    • Position:表示执行映射规则的位置的数字,以对映射规则进行排序。
  5. Create Mapping Rule

后续步骤

这些步骤后,映射规则会添加到 Backends under [Your_API_backend] > Mapping Rules。该映射规则还可用于目前使用后端的每个产品。要在产品级别上激活映射规则,请在 [Your_product_name] > Integration > ConfigurationProducts 选项卡下提升最新的配置。

示例

提升配置后,3scale 会在产品级别激活后端映射规则。映射规则遵循产品中指定的后端路径。例如,假设您有此配置:

  • 后端映射规则的模式: /thousands
  • 使用路径为 /unitprice 的产品中添加后端

产品级别上的映射规则为: /unit price/thousands

1.9. 为产品创建 3scale 应用程序计划

3scale 应用计划定义了使用 API 产品的限值、定价和功能等规则。如需更多信息,请参阅 应用计划指定方法,以及添加用于捕获使用详情的指标

先决条件

流程

  1. 进入 [Your_product_name] > Applications > Application Plans
  2. Create Application Plan
  3. Create Application Plan 页面上,为您的新计划输入名称和系统名称。系统名称在 3scale 安装中必须是唯一的。
  4. Create Application Plan

1.10. 为默认帐户创建应用来测试 API 调用

以 3scale 用户身份,为默认 Developer 帐户创建应用程序。应用程序订阅应用程序计划。作为此订阅的结果,3scale 提供了调用 API 产品所需的用户密钥。

应用程序始终与应用程序计划关联。应用存储在开发人员帐户内。在基本的 3scale 计划中,只允许一个应用。在企业计划中,允许每个帐户有多个应用。

先决条件

流程

  1. 进入 Audience > Accounts > Listing
  2. 点默认的 Developer 帐户。
  3. Applications 选项卡。
  4. Create application
  5. Create application 对话框中,为应用程序选择产品。
  6. 选择应用计划.
  7. 指定应用程序名称。
  8. Description 字段中,输入有关此应用程序的信息。
  9. Create application

您可以在 Dashboard > Audience > Accounts > Applications > Listing 中看到您的新应用程序。

1.11. 向您的产品发送请求以测试后端的集成

作为 3scale API 提供程序,您可以向产品发送命令行请求,以根据添加到产品中的第一个映射规则测试后端的集成。

在发送测试请求前,您必须提升 APIcast 配置,其中包括要测试的后端。特定的 APIcast 配置由添加到产品的后端组成,其中包含对应的映射规则、应用程序和应用程序计划。

3scale 根据请求调用中指定的路径将请求定向到产品的后端。对于产品的每个后端,您可以在将 后端添加到产品时配置后端路径。换句话说,每个后端都有自己的路径。

先决条件

流程

  1. 将新的 APIcast 配置提升到暂存:

    1. 进入 [Your_product_name] > Integration > Configuration
    2. APIcast Configuration 下,单击 Promote v.[n] to Staging APIcast

      • v.[n] 表示要提升的版本号。
      • 如果没有要提升的更改,则会出现一个灰色的按钮,其中包含 Nothing to promote 的被灰掉的文本。
  2. Staging APIcast 下,点 Promote v.[n] to Production APIcast 将 APIcast 配置提升到生产环境。

    • v.[n] 表示要提升的版本号。
    • 如果没有要提升的更改,则会出现一个灰色的按钮,其中包含 Nothing to promote 的被灰掉的文本。
  3. 要测试对 API 产品的请求,请复制 Example curl for testing 中提供的命令以进行测试并在终端中运行。

    • curl 命令示例基于产品的第一个映射规则。
    • 运行命令后,您应获得包含正在测试的后端结果的 HTML 响应。
    • 如果没有获得响应,请从您的产品中删除 catch-all 映射规则,将新的 APIcast 配置提升到暂存,然后提升到生产环境,并运行示例 curl 命令。

后续步骤

您可以在更改指标和方法时确认不同的响应,如限值和定价规则。对于产品的任何应用计划,在测试您的产品请求时修改方法和指标。如需了解更多详细信息,请参阅添加方法和指标

每次修改产品配置时,以及在调用 API 之前,您必须将更新的配置提升到暂存和生产环境。当暂存环境有待提升的更改时,管理门户中 集成 菜单项旁边有一个感叹号。

1.12. 其他资源

第 2 章 启动您的 API

在本章中,您将了解一些使用红帽 3scale 启动 API 的关键步骤。要使用本指南,假设如下:

  • 3scale 具有名为 API 后端 的内部 API,即一个后端
  • 3scale 具有面向客户的 API,名为 Echo API,它是一个 产品。这是您将通过开发人员门户公开的 API。

本指南涵盖了启动 API 产品的步骤:

  1. 保护产品。
  2. 通过应用计划配置产品访问策略。
  3. 通过开发人员门户吸引开发人员。
  4. 上线。

2.1. 启动第一个 API 的路径

要开始使用 3scale,您可以选择三种路径中的一个来启动和公开您的 API 产品。您的 API 产品 是您正在向世界显示的面向客户的 API。

计时指南取决于您的 API 产品的复杂性,以及您计划用于工作的资源。您将把大部分时间花在精炼 API 产品并为开发人员门户准备内容上。如果您已经拥有稳定的产品和文档内容,则可以在一周内上线。

以下是启动第一个 API 产品的路径:

Prototype

  • 目标:完成 3scale 与简单的 API 产品的端到端集成,该产品将公开给用户。
  • 推荐:此路径可帮助您全面了解 3scale 的端到端功能。在进行 Basic 之前,您必须执行此路径。如果您成功完成了管理门户中的登录向导,您可以跳过此路径并转至下一个路径。
  • 完成时间:少于一小时。

基本的

  • 目标:完成在生产环境中启动 API 产品的所有实施步骤。
  • 建议:如果要在生产环境中使用 API 产品进行实时迁移,且时间有限,基本路径将满足您的大部分需求。
  • 完成时间:少于一周。

Advanced

  • 目标:完成基本路径后(如 API 产品的高级控制)和开发者门户的更深定制后,可选附加功能。
  • 建议:如果您有更复杂的要求,或者已涵盖基本路径,您可能会考虑使用高级选项。
  • 完成时间:几周。

2.2. 遵循 Prototype 路径

您可以从末尾单独跟踪 Prototype 路径。或者,您也可以根据需要选择从该路径中执行一些步骤。每个路径都可以独立,但 PrototypeBasicAdvanced 路径会相互构建。

2.2.1. 保护 API

您可以在几分钟内对 3scale 访问控制层进行原型,假设以下情况之一:

  • 在 3scale Hosted(SaaS)中,您的产品可以公开访问。
  • 在 3scale 内部安装中,可从 3scale 安装访问您的产品。

echo API 充当公共产品的示例。它有以下特性:

  • 这是一个简单的 API,它接受任何路径并返回响应正文中有关请求(路径、请求参数、标头等)的信息。
  • 它可以通过以下 URL 访问 :https://echo-api.3scale.net
  • 您第一次激活 3scale 时,会为每个现有的 API 创建一个产品。第一次,产品和 API 后端之间存在一对一关系。换句话说,您将看到: Echo API,它是一个包含 API 后端 的产品。

要保护您的 Echo API 产品,请按照以下步骤执行:

  1. 验证您的产品是否可以访问。示例 :https://echo-api.3scale.net/v1/fast/track

    • 在安全层就位后,您可以隐藏或限制对后端主机的访问。
  2. 进入 [Your_product_name] > Integration > Configuration
  3. 对于 [Your_product_name],请确认已在默认的 API 后端中设置了专用端点。示例 :https://echo-api.3scale.net:443
  4. 点按钮以提升至暂存。
  5. 复制包含 user_key 作为默认凭证的 cURL 语句,以便从命令行进行调用:

    curl "https://api-2445581407825.staging.apicast.io:443/v1/fast/track?user_key=287d64924e6120d215b1000ac07c063b"

    您可以进行不同的调用。例如,尝试另一个端点,添加相同的 user_key

    注意

    您可以从应用程序详情页面获取 API 产品密钥,该页面位于其中一个开发人员帐户中。

    现在,您的 3scale 访问控制层将只允许通过身份验证的调用到后端 API。

2.2.2. 使用应用程序计划配置 API 访问策略

遵循 第 2.2.1 节 “保护 API” 下的步骤后,只有经过身份验证的调用才会对您的 API 进行验证。在本节中,您将应用策略来区分速率限值。

在 3scale 中,applications 定义用于访问您产品的凭据。应用程序始终与决定访问策略的应用计划 关联。应用存储在 开发人员帐户 内。在基本的 3scale 计划中,仅允许一个应用;但在更高计划中,允许每个帐户有多个应用。

在本例中,您将策略添加到上一节中使用的 Echo API 产品中,执行以下步骤:

  1. 进入 [Your_product_name] > Applications > Application Plans
  2. Application Plan 部分中,进入 Basic 应用计划,在安装或注册 3scale 后编辑示例数据生成的其中一个计划。
  3. Metrics、Methods、Limits & Pricing Rules 下,选择 hits 行中的 limits,并在每小时创建新使用限值 3。
  4. 进入 [Your_product_name] > Applications > Listing 来查找您的示例应用程序之一。确保应用已设置为 basic 计划。如果没有,在应用详情页面上更改计划
  5. 为此应用使用凭据,并且至少重复三次示例调用。

您现在已在 3scale 基本计划中为所有应用成功定义了更严格的访问策略。

2.2.3. 使用开发者门户吸引开发人员

对于 Prototype 路径,您不需要创建任何文档内容。通常情况下,检查工作流是否满足您的要求就足够了。

在产品开发和测试过程中,您可以使用以下步骤禁用完整的自助服务工作流:

  1. 从管理门户,进入 Audience 空间,再点 Developer Portal 菜单中的 Visit Portal 链接。
  2. 创建测试注册并逐步执行所有步骤。
  3. 自助服务通常默认启用。要更改它,请进入 Audience > Accounts > Usage Rules,再选择 帐户批准所需 复选框。
  4. 重复测试注册过程,并验证您需要批准管理门户中的帐户,然后才能登录。

现在,您可以成功自定义开发人员门户的工作流。

2.3. 遵循基本路径

您可以从末尾单独跟踪基本路径。或者,您也可以根据需要选择从该路径中执行一些步骤。每个路径都可以独立,但 PrototypeBasicAdvanced 路径会相互构建。

2.3.1. 保护 API

对于完整的生产实施,您需要对产品结构以及与 3scale 的集成做出一些基本决策。

您可以选择多种用于产品流量的身份验证模式。查阅 有关可用选项的指南 并配置设置。

重要

设置身份验证后,您不应切换身份验证模式,因为此操作可能会使现有凭证无效。

其他资源

托管的 APIcast

  1. 第一次登录管理门户后,请按照插入向导操作。
  2. 继续迭代您的产品配置,如细化访问策略,直到您达到适合生产的版本。
  3. 将 APIcast 配置提升到生产网关。

自我管理的 APIcast

  1. OpenShift 上使用运算符部署 APIcast 网关自我管理的解决方案。
  2. 继续迭代 API 配置(如精心修改的访问策略),直到您达到适合生产的版本。
  3. 将 APIcast 配置提升到生产网关。
  4. 有关自我管理的 APIcast 的详情,请参阅安装 APIcast

2.3.2. 使用应用程序计划配置 API 访问策略

遵循 第 2.3.1 节 “保护 API” 下的步骤后,您的产品仅允许通过经过身份验证的调用。在本节中,您将应用策略来区分速率限值。

在 3scale 中,applications 定义用于访问您的 API 产品的凭据。应用程序始终与决定访问策略的应用计划 关联。应用存储在 开发人员帐户 内。在基本的 3scale 计划中,只允许一个应用。在更高计划中,允许每个帐户有多个应用。

Prototype 中,您只能根据产品的整体影响来控制访问。在开始使用自定义方法和指标为应用计划创建更复杂的层并更深入地分析您的产品后,3scale 的灵活性是显而易见的。如需了解更多详细信息,请参阅分析指南

重要
  • 您的 API 结构与 3scale 中方法或指标之间的映射是逻辑的。如果定义了一致的规则,您可以从 3scale 获得产品使用情况报告。您必须确定详细程度。通常而言,您应该以 5 到 20 种方法/指标为目标。
  • 报告 3scale 的值只能递增。您不能设置绝对值或减少计数器。
  • 将任何新方法或指标添加到 3scale 后,必须将新系统名称添加到您的集成点。
  • 您可以在运行时进行更改,如速率限值,而无需重新部署。

在本例中,要将策略添加到 Echo API 产品的应用程序计划中,请执行以下步骤:

  1. 找到您要使用的产品。
  2. Application Plans 部分中,选择 basic 以编辑在注册至 3scale/deploy 实例后自动生成的其中一个计划。
  3. 如果您找到了 命中 率限制,请将其删除。
  4. 使用系统名称"test",在 hits 指标下添加新方法 到计划。
  5. 将测试方法的速率限值设置为每小时 5。
  6. 使用系统名称 v1v2 添加两个新指标
  7. 在 v2 指标下,点已启用的列来禁用访问。这与设置 0 速率限制的影响相同。

APIcast 部署

  1. 进入 [Your_product_name] > Integration > Configuration
  2. 扩展映射规则部分并添加以下映射:

    映射规则
    注意

    "/"的默认映射已被删除。如果您使用此默认映射,它将导致两次点击数。

2.3.3. 使用开发者门户吸引开发人员

您可以使用开发人员门户查找用于创建提供 API 使用 的信息。考虑用 Textile 或 Markdown 编写您的内容。以下是您可能需要考虑的可选步骤:

2.4. 高级路径后

您可以从头到尾单独跟踪高级路径。或者,您也可以根据需要选择从该路径中执行一些步骤。每个路径都可以独立,但 PrototypeBasicAdvanced 路径会相互构建。

2.4.1. 保护 API

要保护您的产品,有以下备选方法:

高级身份验证模式:OpenID Connect (OIDC)

使用 APIcast 与 OpenID Connect 进行红帽单点登录(RH-SSO)的 APIcast 集成来保护您的产品。3scale 中的应用与身份提供程序(IdP)同步,本例中为 RH-SSO。目前,这是一个端到端支持的解决方案。它涵盖了主要的 OAuth 2.0 流:

  • 授权代码
  • 资源所有者密码
  • 客户端凭证
  • 隐式授权

2.4.2. 使用应用程序计划配置 API 访问策略

使用 第 2.4.1 节 “保护 API” 下列选项,您可以确保只允许对您的产品进行验证的调用。在本节中,您要应用策略来区分速率限值。

在 3scale 中,applications 定义用于访问您产品的凭据。应用程序始终与决定访问策略的应用计划 关联。应用存储在 开发人员帐户 内。在基本 3scale 计划中,只允许一个应用。在更高计划中,允许每个帐户有多个应用。

警报可配置为通过电子邮件或 Web 控制台发送通知:

  1. 进入 API Settings 页面: [Your_product_name] > Integration > Settings
  2. 前往页面上的 Alerts 部分。在这里,您可以将您想要的警报配置为速率限制级别的百分比。

3scale 可让您灵活地决定速率限制:

  • 软限制:允许超过限制的调用。
  • 硬速率限值:调用将在调用应用程序前被拒绝。

APIcast 默认定义硬限制。这些可以在 Lua 文件中自定义,以避免拒绝超限制调用。

2.4.3. 使用开发者门户吸引开发人员

完成 基本 路径后,您可以浏览以下两个高级区域:

  • 刻录标记 提供标签和丢弃,供您直接访问系统对象,并允许您引入开发人员门户页面的动态呈现。
  • 可以自定义所有 3scale 系统页面。这适用于高级用户,因为 HTML 很复杂。最终,您可以自定义开发人员门户的任何页面。通常,对于某些 CSS 更改,默认页面将非常良好。

2.5. 进行实时

本节介绍在公共启动 API 产品前的最终清单。

注意

尽快请求自定义域和电子邮件,因为它们有较长的交付时间。

  1. Audience > Developer Portal > Domains & Access 中,在 Developer Portal Site 字段中输入自定义域。
  2. (可选)在 Outgoing Email 字段中输入自定义出站电子邮件地址。
  3. 删除开发人员门户访问代码。
  4. Update Account 以保存更改。

以下是要考虑的附加事项:

  • 添加定价以直接从您的 API 产品获得利润。此功能仅适用于 3scale Hosted(SaaS)帐户。
  • 使用您位于分析下的管理门户中的产品 分析 见解,优化您的应用程序计划。

法律通告

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.