第 6 章 Red Hat Quay 组件故障排除


要排除特定的 {product-title} 组件并解决与组件相关的问题,您可以使用本文档中的步骤。您还可以以 debug 模式运行,获取日志和配置,执行健康检查,然后搜索红帽知识库或支持问题单。

通过使用以下流程,您可以对常见组件问题进行故障排除。之后,您可以在红帽知识库中搜索解决方案,或向红帽支持团队提交支持问题单。

6.1. 对 Red Hat Quay 数据库进行故障排除

要对 {product-title} 数据库进行故障排除并解决连接、配置或资源问题,您可以检查部署类型、pod 或容器状态、日志、连接和配置。您还可以检查资源分配并与 PostgreSQL 数据库交互。

  • 镜像元数据.数据库存储与容器镜像关联的元数据,如镜像名称、版本、创建时间戳以及拥有该镜像的用户或机构。这些信息可轻松识别和组织注册表中的容器镜像。
  • 镜像标签.Red Hat Quay 允许用户为容器镜像分配标签,从而方便标记和版本控制。PostgreSQL 数据库维护镜像标签和对应的镜像清单之间的映射,允许用户根据提供的标签检索容器镜像的特定版本。
  • 镜像层.容器镜像由多个层组成,这些层存储为各个对象。数据库记录有关这些层的信息,包括其顺序、校验和和大小。这些数据对于高效存储和检索容器镜像至关重要。
  • 用户和组织数据.Red Hat Quay 支持用户和机构管理,允许用户验证和管理对容器镜像的访问。PostgreSQL 数据库存储用户和组织信息,包括用户名、电子邮件地址、身份验证令牌和访问权限。
  • 存储库信息.Red Hat Quay 将容器镜像组织到存储库中,作为对相关镜像进行分组的逻辑单元。数据库维护存储库数据,包括名称、描述、可见性设置和访问控制信息,使用户能够有效地管理和共享其存储库。
  • 事件日志.Red Hat Quay 跟踪与镜像管理和存储库操作相关的各种事件和活动。这些事件日志(包括镜像推送、拉取、删除和存储库修改)存储在 PostgreSQL 数据库中,提供审计跟踪,并允许管理员监控和分析系统活动。

本节中的内容包括以下步骤:

  • 检查部署类型 :确定数据库是否作为容器部署到虚拟机上,还是作为 OpenShift Container Platform 上的 pod 部署。
  • 检查容器或 pod 状态 :使用基于部署类型的特定命令验证 数据库 pod 或容器的状态。
  • 检查数据库容器或 pod 日志 :访问并检查数据库 pod 或容器的日志,包括用于不同部署类型的命令。
  • 检查 Red Hat Quay 和数据库 pod 之间的连接 :使用相关命令检查 Red Hat Quay 和数据库 pod 之间的连接。
  • 检查数据库配置 :根据部署类型在不同的级别(OpenShift Container Platform 或 PostgreSQL 级别)中检查数据库配置。
  • 检查资源分配 :监控 Red Hat Quay 部署的资源分配,包括磁盘用量和其他资源使用量。
  • 与 Red Hat Quay 数据库 交互 :了解如何与 PostgreSQL 数据库交互,包括访问和查询数据库的命令。

6.1.1. Red Hat Quay 数据库问题故障排除

要对 Red Hat Quay 数据库问题进行故障排除,并解决 数据库连接被拒绝或 身份验证失败等常见错误,您可以检查数据库日志、验证凭证并确保数据库正在运行。

要重置 Red Hat Quay 独立部署上的超级用户密码,您可以使用 Python 生成 bcrypt-hashed 密码,使用 podman exec 进入 PostgreSQL 容器,并使用新的散列密码更新 user 表。

先决条件

  • 您已创建了 Red Hat Quay 超级用户。
  • 已安装 Python 3.9。
  • 您已为 Python 安装 pip 软件包管理器。
  • 您已为 pip 安装了 bcrypt 软件包。

流程

  1. 输入以下命令,使用 Python 3.9 中的 bcrypt 软件包生成安全、哈希的密码:

    $ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"newpass1234", bcrypt.gensalt(12)).decode("utf-8"))'

    输出示例

    $2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm

  2. 输入以下命令显示 Red Hat Quay 容器 registry 的容器 ID:

    $ sudo podman ps -a

    输出示例

    CONTAINER ID  IMAGE                                       COMMAND         CREATED         STATUS             PORTS                   NAMES
    70560beda7aa  registry.redhat.io/rhel8/redis-5:1         run-redis       2 hours ago     Up 2 hours ago     0.0.0.0:6379->6379/tcp                       redis
    8012f4491d10  registry.redhat.io/quay/quay-rhel8:v3.8.2  registry        3 minutes ago   Up 8 seconds ago   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp  quay
    8b35b493ac05  registry.redhat.io/rhel8/postgresql-10:1   run-postgresql  39 seconds ago  Up 39 seconds ago  0.0.0.0:5432->5432/tcp                       postgresql-quay

  3. 输入以下命令为 postgresql 容器镜像执行交互式 shell:

    $ sudo podman exec -it 8b35b493ac05 /bin/bash
  4. 重新输入 quay PostgreSQL 数据库服务器,指定数据库、用户名和主机地址:

    bash-4.4$ psql -d quay -U quayuser -h 192.168.1.28 -W
  5. 更新超级用户 admin 的 password_hash,其丢失了其密码:

    quay=> UPDATE public.user SET password_hash = '$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm' where username = 'quayadmin';

    输出示例

    UPDATE 1

  6. 输入以下命令来确保 password_hash 已更新:

    quay=> select * from public.user;

    输出示例

    id | uuid | username | password_hash | email | verified | stripe_id | organization | robot | invoice_email | invalid_login_attempts | last_invalid_login |removed_tag_expiration_s | enabled | invoice_email_address | company | family_name | given_name | location | maximum_queued_builds_count | creation_date | last_accessed
    ----+--------------------------------------+-----------+--------------------------------------------------------------+-----------------------+---
    -------+-----------+--------------+-------+---------------+------------------------+----------------------------+--------------------------+------
    ---+-----------------------+---------+-------------+------------+----------+-----------------------------+----------------------------+-----------
    1 | 73f04ef6-19ba-41d3-b14d-f2f1eed94a4a | quayadmin | $2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm | quayadmin@example.com | t | | f | f | f | 0 | 2023-02-23 07:54:39.116485 | 1209600 | t | | | | | | | 2023-02-23 07:54:39.116492

  7. 使用新密码登录到 Red Hat Quay 部署:

    $ sudo podman login -u quayadmin -p newpass1234 http://quay-server.example.com --tls-verify=false

    输出示例

    Login Succeeded!

要重置 Red Hat Quay Operator 部署上的超级用户密码,您可以使用 Python 生成 bcrypt-hashed 密码,使用 oc rshpsql 登录 PostgreSQL 数据库,并使用新的散列密码更新 user 表。

先决条件

  • 您已创建了 Red Hat Quay 超级用户。
  • 已安装 Python 3.9。
  • 您已为 Python 安装 pip 软件包管理器。
  • 您已为 pip 安装了 bcrypt 软件包。

流程

  1. 登录到您的 Red Hat Quay 部署。
  2. 在 OpenShift Container Platform UI 中,进入到 Workloads Secrets
  3. 为您的 Red Hat Quay 部署选择命名空间,如 Project quay
  4. 查找并存储 PostgreSQL 数据库凭据。
  5. 输入以下命令,使用 Python 3.9 中的 bcrypt 软件包生成安全、哈希的密码:

    $ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"newpass1234", bcrypt.gensalt(12)).decode("utf-8"))'

    输出示例

    $2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y

  6. 在 CLI 中,登录到数据库,例如:

    $ oc rsh quayuser-quay-quay-database-669c8998f-v9qsl
  7. 输入以下命令打开到 quay PostgreSQL 数据库服务器的连接,指定数据库、用户名和主机地址:

    sh-4.4$ psql -U quayuser-quay-quay-database -d quayuser-quay-quay-database -W
  8. 输入以下命令连接到当前用户的默认数据库:

    quay=> \c
  9. 更新超级用户 admin 的 password_hash,其丢失了其密码:

    quay=> UPDATE public.user SET password_hash = '$2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y' where username = 'quayadmin';
  10. 输入以下命令来确保 password_hash 已更新:

    quay=> select * from public.user;

    输出示例

    id | uuid | username | password_hash | email | verified | stripe_id | organization | robot | invoice_email | invalid_login_attempts | last_invalid_login |removed_tag_expiration_s | enabled | invoice_email_address | company | family_name | given_name | location | maximum_queued_builds_count | creation_date | last_accessed
    ----+--------------------------------------+-----------+--------------------------------------------------------------+-----------------------+---
    -------+-----------+--------------+-------+---------------+------------------------+----------------------------+--------------------------+------
    ---+-----------------------+---------+-------------+------------+----------+-----------------------------+----------------------------+-----------
    1 | 73f04ef6-19ba-41d3-b14d-f2f1eed94a4a | quayadmin | $2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y | quayadmin@example.com | t | | f | f | f | 0 | 2023-02-23 07:54:39.116485 | 1209600 | t | | | | | | | 2023-02-23 07:54:39.116492

  11. 进入到 OpenShift Container Platform 上的 Red Hat Quay UI,并使用新凭证登录。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

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

让开源更具包容性

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

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部