第6章 Red Hat Quay コンポーネントのトラブルシューティング
このドキュメントは、Red Hat Quay 内の特定のコンポーネントのトラブルシューティングに焦点を当てており、発生する可能性のある問題を解決するための対象を絞ったガイダンスを提供します。このリソースはシステム管理者、operator、開発者向けに設計されており、Red Hat Quay の個々のコンポーネントに関連する問題の診断とトラブルシューティングを支援することを目的としています。
以下の手順に加えて、Red Hat Quay をデバッグモードで実行し、ログ情報を取得して、設定情報を取得し、エンドポイントでヘルスチェックを実行することで、Red Hat Quay コンポーネントのトラブルシューティングを行うこともできます。
次の手順を使用すると、コンポーネントの一般的な問題のトラブルシューティングを行うことができます。その後、Red Hat ナレッジベース でソリューションを検索したり、Red Hat サポートチームにサポートチケットを提出したりできます。
6.1. Red Hat Quay データベースのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Quay で使用される PostgreSQL データベースには、コンテナーイメージとその管理に関連するさまざまな種類の情報が保存されます。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 と
database
Pod 間の接続を確認します。 - データベース設定の確認: デプロイメントタイプに基づいて、さまざまなレベル (OpenShift Container Platform または PostgreSQL レベル) でデータベース設定を確認します。
- リソース割り当ての確認: ディスク使用量やその他のリソース使用量を含む、Red Hat Quay デプロイメントのリソース割り当てを監視します。
- Red Hat Quay データベースとの対話: データベースにアクセスしてクエリーを実行するコマンドなど、PostgreSQL データベースと対話する方法を学びます。
6.1.1. Red Hat Quay データベースの問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
PostgreSQL データベースのトラブルシューティングを行うには、次の手順を使用します。
6.1.1.1. Red Hat Quay データベースとの対話 リンクのコピーリンクがクリップボードにコピーされました!
PostgreSQL データベースと対話するには、次の手順を使用します。
PostgreSQL データベースとの対話は潜在的に破壊的です。Red Hat Quay サポートスペシャリストの助けを借りて次の手順を実行することを強く推奨します。
PostgreSQL データベースとの対話は、認可と認証の問題のトラブルシューティングにも使用できます。
手順
Red Hat Quay データベースを実行します。
次のコマンドを入力して、OpenShift Container Platform 上の Red Hat Quay データベース Pod を実行します。
oc exec -it <quay_database_pod> -- psql
$ oc exec -it <quay_database_pod> -- psql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、スタンドアロンデプロイメントで Red Hat Quay データベースを実行します。
sudo podman exec -it <quay_container_name> /bin/bash
$ sudo podman exec -it <quay_container_name> /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
PostgreSQL シェルに入ります。
警告PostgreSQL データベースとの対話は潜在的に破壊的です。Red Hat Quay サポートスペシャリストの助けを借りて次の手順を実行することを強く推奨します。
Red Hat Quay Operator を使用している場合は、次のコマンドを入力して PostgreSQL シェルに入ります。
oc rsh <quay_pod_name> psql -U your_username -d your_database_name
$ oc rsh <quay_pod_name> psql -U your_username -d your_database_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow スタンドアロン Red Hat Quay デプロイメントを使用している場合は、次のコマンドを入力して PostgreSQL シェルに入ります。
bash-4.4$ psql -U your_username -d your_database_name
bash-4.4$ psql -U your_username -d your_database_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.2. CrashLoopBackOff 状態のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
crashloopbackoff
状態のトラブルシューティングを行うには、次の手順を使用します。
手順
コンテナーまたは Pod が
crashloopbackoff
状態にある場合は、次のコマンドを入力できます。次のコマンドを入力して、Red Hat Quay Operator をスケールダウンします。
oc scale deployment/quay-operator.v3.8.z --replicas=0
$ oc scale deployment/quay-operator.v3.8.z --replicas=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
deployment.apps/quay-operator.v3.8.z scaled
deployment.apps/quay-operator.v3.8.z scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay データベースをスケールダウンします。
oc scale deployment/<quay_database> --replicas=0
$ oc scale deployment/<quay_database> --replicas=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
deployment.apps/<quay_database> scaled
deployment.apps/<quay_database> scaled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay データベースを編集します。
警告PostgreSQL データベースとの対話は潜在的に破壊的です。Red Hat Quay サポートスペシャリストの助けを借りて次の手順を実行することを強く推奨します。
oc edit deployment <quay_database>
$ oc edit deployment <quay_database>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- この行を同じインデントに追加します。
出力例
deployment.apps/<quay_database> edited
deployment.apps/<quay_database> edited
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <quay_database>
内で次のコマンドを実行します。oc exec -it <quay_database> -- cat /var/lib/pgsql/data/userdata/postgresql/logs/* /path/to/desired_directory_on_host
$ oc exec -it <quay_database> -- cat /var/lib/pgsql/data/userdata/postgresql/logs/* /path/to/desired_directory_on_host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.3. Red Hat Quay とデータベース Pod 間の接続を確認する リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、Red Hat Quay とデータベース Pod 間の接続を確認します。
手順
Red Hat Quay とデータベース Pod 間の接続を確認します。
OpenShift Container Platform で Red Hat Quay Operator を使用している場合は、次のコマンドを入力します。
oc exec -it _quay_pod_name_ -- curl -v telnet://<database_pod_name>:5432
$ oc exec -it _quay_pod_name_ -- curl -v telnet://<database_pod_name>:5432
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Quay のスタンドアロンデプロイメントを使用している場合は、次のコマンドを入力します。
podman exec -it <quay_container_name >curl -v telnet://<database_container_name>:5432
$ podman exec -it <quay_container_name >curl -v telnet://<database_container_name>:5432
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.4. リソース割り当ての確認 リンクのコピーリンクがクリップボードにコピーされました!
リソースの割り当てを確認するには、次の手順を実行します。
手順
- 実行中のコンテナーのリストを取得します。
Red Hat Quay デプロイメントのディスク使用量を監視します。
OpenShift Container Platform で Red Hat Quay Operator を使用している場合は、次のコマンドを入力します。
oc exec -it <quay_database_pod_name> -- df -ah
$ oc exec -it <quay_database_pod_name> -- df -ah
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat Quay のスタンドアロンデプロイメントを使用している場合は、次のコマンドを入力します。
podman exec -it <quay_database_conatiner_name> df -ah
$ podman exec -it <quay_database_conatiner_name> df -ah
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
他のリソースの使用状況を監視します。
次のコマンドを入力して、Red Hat Quay Operator デプロイメントでのリソース割り当てを確認します。
oc adm top pods
$ oc adm top pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay のスタンドアロンデプロイメント上の特定の Pod のステータスを確認します。
podman pod stats <pod_name>
$ podman pod stats <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay のスタンドアロンデプロイメント上の特定のコンテナーのステータスを確認します。
podman stats <container_name>
$ podman stats <container_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の情報が返されます。
- CPU %.前回の測定以降のコンテナーによる CPU 使用率のパーセンテージ。この値は、利用可能な CPU リソースのコンテナーの共有を表します。
-
MEM USAGE / LIMIT: コンテナーの現在のメモリー使用量とそのメモリー制限が続きます。値は
current_usage/memory_limit
の形式で表示されます。たとえば、300.4MiB/7.795GiB
は、コンテナーが現在 7.795 ギガバイトの制限のうち 300.4 メガバイトのメモリーを使用していることを示します。 - MEM %: メモリー制限に対するコンテナーによるメモリー使用量の割合。
-
NET I/O: コンテナーのネットワーク I/O (入力/出力) 統計。コンテナーがネットワーク上で送受信したデータの量が表示されます。値は、
transmitted_bytes / received_bytes
の形式で表示されます。 -
BLOCK I/O: コンテナーのブロック I/O (入力/出力) 統計。これは、コンテナーによって使用されるブロックデバイス (ディスクなど) に対して読み書きされるデータの量を表します。値は
read_bytes/write_bytes
の形式で表示されます。
6.1.2. Red Hat Quay スタンドアロンデプロイメントでのスーパーユーザーのパスワードのリセット リンクのコピーリンクがクリップボードにコピーされました!
スーパーユーザーのパスワードをリセットするには、次の手順を使用します。
前提条件
- 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"))'
$ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"newpass1234", bcrypt.gensalt(12)).decode("utf-8"))'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm
$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Red Hat Quay コンテナーレジストリーのコンテナー ID を表示します。
sudo podman ps -a
$ sudo podman ps -a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドで、
postgresql
コンテナーイメージの対話型シェルを実行します。sudo podman exec -it 8b35b493ac05 /bin/bash
$ sudo podman exec -it 8b35b493ac05 /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow データベース、ユーザー名、およびホストアドレスを指定して、
quay
PostgreSQL データベースサーバーに再入力します。bash-4.4$ psql -d quay -U quayuser -h 192.168.1.28 -W
bash-4.4$ psql -d quay -U quayuser -h 192.168.1.28 -W
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パスワードを紛失したスーパーユーザー管理者の
password_hash
を更新します。quay=> UPDATE public.user SET password_hash = '$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm' where username = 'quayadmin';
quay=> UPDATE public.user SET password_hash = '$2b$12$T8pkgtOoys3G5ut7FV1She6vXlYgU.6TeoGmbbAVQtN8X8ch4knKm' where username = 'quayadmin';
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
UPDATE 1
UPDATE 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
password_hash
が更新されたことを確認します。quay=> select * from public.user;
quay=> select * from public.user;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいパスワードを使用して Red Hat Quay デプロイメントにログインします。
sudo podman login -u quayadmin -p newpass1234 http://quay-server.example.com --tls-verify=false
$ sudo podman login -u quayadmin -p newpass1234 http://quay-server.example.com --tls-verify=false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Login Succeeded!
Login Succeeded!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.3. Red Hat Quay Operator でのスーパーユーザーのパスワードのリセット リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- 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"))'
$ python3.9 -c 'import bcrypt; print(bcrypt.hashpw(b"newpass1234", bcrypt.gensalt(12)).decode("utf-8"))'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
$2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y
$2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI で、たとえば次のようにデータベースにログインします。
oc rsh quayuser-quay-quay-database-669c8998f-v9qsl
$ oc rsh quayuser-quay-quay-database-669c8998f-v9qsl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、データベース、ユーザー名、およびホストアドレスを指定して、
quay
PostgreSQL データベースサーバーへの接続を開きます。psql -U quayuser-quay-quay-database -d quayuser-quay-quay-database -W
sh-4.4$ psql -U quayuser-quay-quay-database -d quayuser-quay-quay-database -W
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、現在のユーザーのデフォルトのデータベースに接続します。
quay=> \c
quay=> \c
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パスワードを紛失したスーパーユーザー管理者の
password_hash
を更新します。quay=> UPDATE public.user SET password_hash = '$2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y' where username = 'quayadmin';
quay=> UPDATE public.user SET password_hash = '$2b$12$zoilcTG6XQeAoVuDuIZH0..UpvQEZcKh3V6puksQJaUQupHgJ4.4y' where username = 'quayadmin';
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、
password_hash
が更新されたことを確認します。quay=> select * from public.user;
quay=> select * from public.user;
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
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
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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift Container Platform 上の Red Hat Quay UI に移動し、新しい認証情報を使用してログインします。