第6章 Red Hat Quay コンポーネントのトラブルシューティング
Red Hat Quay の特定のコンポーネントのトラブルシューティングを行い、コンポーネント関連の問題を解決するには、このドキュメントに記載されている手順を使用できます。デバッグモードで実行して、ログと設定を取得し、ヘルスチェックを実行してから、Red Hat ナレッジベースを検索したり、サポートチケットを発行したりすることもできます。
次の手順を使用すると、コンポーネントの一般的な問題のトラブルシューティングを行うことができます。その後、Red Hat ナレッジベースで解決策を検索するか、Red Hat サポートチームにサポートチケットを提出してください。
6.1. Red Hat Quay データベースのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay データベースのトラブルシューティングを行い、接続、設定、またはリソースの問題を解決するには、デプロイメントの種類、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 と
databasePod 間の接続を確認します。 - データベース設定の確認: デプロイメントタイプに基づいて、さまざまなレベル (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 でハッシュ化されたパスワードを生成し、podman exec を使用して PostgreSQL コンテナーに接続し、新しいハッシュ化されたパスワードでユーザーテーブルを更新します。
前提条件
- 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 コンテナーレジストリーのコンテナー 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コンテナーイメージの対話型シェルを実行します。$ sudo podman exec -it 8b35b493ac05 /bin/bashデータベース、ユーザー名、およびホストアドレスを指定して、
quayPostgreSQL データベースサーバーに再入力します。bash-4.4$ psql -d quay -U quayuser -h 192.168.1.28 -Wパスワードを紛失したスーパーユーザー管理者の
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 でハッシュ化されたパスワードを生成し、oc rsh と psql を使用して PostgreSQL データベースにログインし、新しいハッシュ化されたパスワードでユーザーテーブルを更新します。
前提条件
- Red Hat Quay スーパーユーザーを作成している。
- Python 3.9 がインストールされている。
-
Python 用の
pipパッケージマネージャーがインストールされている。 -
pip用のbcryptパッケージがインストールされている。
手順
- Red Hat Quay デプロイメントにログインします。
-
OpenShift Container Platform UI で、Workloads
Secrets に移動します。 -
Red Hat Quay デプロイメントの namespace (例:
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.4yCLI で、たとえば次のようにデータベースにログインします。
$ 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パスワードを紛失したスーパーユーザー管理者の
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 に移動し、新しい認証情報を使用してログインします。