第 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 数据库问题进行故障排除,并解决 数据库连接被拒绝或 身份验证失败等常见错误,您可以检查数据库日志、验证凭证并确保数据库正在运行。
6.1.2. 在 Red Hat Quay 独立部署中重置超级用户密码 复制链接链接已复制到粘贴板!
要重置 Red Hat Quay 独立部署上的超级用户密码,您可以使用 Python 生成 bcrypt-hashed 密码,使用 podman exec 进入 PostgreSQL 容器,并使用新的散列密码更新 user 表。
先决条件
- 您已创建了 Red Hat Quay 超级用户。
- 已安装 Python 3.9。
-
您已为 Python 安装
pip软件包管理器。 -
您已为
pip安装了bcrypt软件包。
流程
输入以下命令,使用 Python 3.9 中的
bcrypt软件包生成安全、哈希的密码:$ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"newpass1234", bcrypt.gensalt(12)).decode("utf-8"))'输出示例
$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm输入以下命令显示 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输入以下命令为
postgresql容器镜像执行交互式 shell:$ sudo podman exec -it 8b35b493ac05 /bin/bash重新输入
quayPostgreSQL 数据库服务器,指定数据库、用户名和主机地址:bash-4.4$ psql -d quay -U quayuser -h 192.168.1.28 -W更新超级用户 admin 的
password_hash,其丢失了其密码:quay=> UPDATE public.user SET password_hash = '$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm' where username = 'quayadmin';输出示例
UPDATE 1输入以下命令来确保
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使用新密码登录到 Red Hat Quay 部署:
$ sudo podman login -u quayadmin -p newpass1234 http://quay-server.example.com --tls-verify=false输出示例
Login Succeeded!
6.1.3. 在 Red Hat Quay Operator 上重置超级用户密码 复制链接链接已复制到粘贴板!
要重置 Red Hat Quay Operator 部署上的超级用户密码,您可以使用 Python 生成 bcrypt-hashed 密码,使用 oc rsh 和 psql 登录 PostgreSQL 数据库,并使用新的散列密码更新 user 表。
先决条件
- 您已创建了 Red Hat Quay 超级用户。
- 已安装 Python 3.9。
-
您已为 Python 安装
pip软件包管理器。 -
您已为
pip安装了bcrypt软件包。
流程
- 登录到您的 Red Hat Quay 部署。
-
在 OpenShift Container Platform UI 中,进入到 Workloads
Secrets。 -
为您的 Red Hat Quay 部署选择命名空间,如
Project quay。 - 查找并存储 PostgreSQL 数据库凭据。
输入以下命令,使用 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在 CLI 中,登录到数据库,例如:
$ oc rsh quayuser-quay-quay-database-669c8998f-v9qsl输入以下命令打开到
quayPostgreSQL 数据库服务器的连接,指定数据库、用户名和主机地址:sh-4.4$ psql -U quayuser-quay-quay-database -d quayuser-quay-quay-database -W输入以下命令连接到当前用户的默认数据库:
quay=> \c更新超级用户 admin 的
password_hash,其丢失了其密码:quay=> UPDATE public.user SET password_hash = '$2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y' where username = 'quayadmin';输入以下命令来确保
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- 进入到 OpenShift Container Platform 上的 Red Hat Quay UI,并使用新凭证登录。