第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 データベースとの対話は、認可と認証の問題のトラブルシューティングにも使用できます。

手順

  1. Red Hat Quay データベースを実行します。

    1. 次のコマンドを入力して、OpenShift Container Platform 上の Red Hat Quay データベース Pod を実行します。

      $ oc exec -it <quay_database_pod> -- psql
    2. 次のコマンドを入力して、スタンドアロンデプロイメントで Red Hat Quay データベースを実行します。

      $ sudo podman exec -it <quay_container_name> /bin/bash
  2. PostgreSQL シェルに入ります。

    警告

    PostgreSQL データベースとの対話は潜在的に破壊的です。Red Hat Quay サポートスペシャリストの助けを借りて次の手順を実行することを強く推奨します。

    1. Red Hat Quay Operator を使用している場合は、次のコマンドを入力して PostgreSQL シェルに入ります。

      $ oc rsh <quay_pod_name> psql -U your_username -d your_database_name
    2. スタンドアロン Red Hat Quay デプロイメントを使用している場合は、次のコマンドを入力して PostgreSQL シェルに入ります。

      bash-4.4$ psql -U your_username -d your_database_name

6.1.1.2. crashloopbackoff 状態のトラブルシューティング

crashloopbackoff 状態のトラブルシューティングを行うには、次の手順を使用します。

手順

  1. コンテナーまたは Pod が crashloopbackoff 状態にある場合は、次のコマンドを入力できます。

    1. 次のコマンドを入力して、Red Hat Quay Operator をスケールダウンします。

      $ oc scale deployment/quay-operator.v3.8.z  --replicas=0

      出力例

      deployment.apps/quay-operator.v3.8.z scaled

    2. 次のコマンドを入力して、Red Hat Quay データベースをスケールダウンします。

      $ oc scale deployment/<quay_database> --replicas=0

      出力例

      deployment.apps/<quay_database> scaled

    3. 次のコマンドを入力して、Red Hat Quay データベースを編集します。

      警告

      PostgreSQL データベースとの対話は潜在的に破壊的です。Red Hat Quay サポートスペシャリストの助けを借りて次の手順を実行することを強く推奨します。

      $ oc edit deployment <quay_database>
      ...
       template:
         metadata:
           creationTimestamp: null
           labels:
             quay-component: <quay_database>
             quay-operator/quayregistry: quay-operator.v3.8.z
         spec:
           containers:
           - env:
             - name: POSTGRESQL_USER
               value: postgres
             - name: POSTGRESQL_DATABASE
               value: postgres
             - name: POSTGRESQL_PASSWORD
               value: postgres
             - name: POSTGRESQL_ADMIN_PASSWORD
               value: postgres
             - name: POSTGRESQL_MAX_CONNECTIONS
               value: "1000"
             image: registry.redhat.io/rhel8/postgresql-10@sha256:a52ad402458ec8ef3f275972c6ebed05ad64398f884404b9bb8e3010c5c95291
             imagePullPolicy: IfNotPresent
             name: postgres
             command: ["/bin/bash", "-c", "sleep 86400"] 1
      ...
      1
      この行を同じインデントに追加します。

      出力例

      deployment.apps/<quay_database> edited

    4. <quay_database> 内で次のコマンドを実行します。

      $ oc exec -it <quay_database> -- cat /var/lib/pgsql/data/userdata/postgresql/logs/* /path/to/desired_directory_on_host

6.1.1.3. Red Hat Quay とデータベース Pod 間の接続を確認する

次の手順を使用して、Red Hat Quay とデータベース Pod 間の接続を確認します。

手順

  1. Red Hat Quay とデータベース Pod 間の接続を確認します。

    1. OpenShift Container Platform で Red Hat Quay Operator を使用している場合は、次のコマンドを入力します。

      $ oc exec -it _quay_pod_name_ -- curl -v telnet://<database_pod_name>:5432
    2. Red Hat Quay のスタンドアロンデプロイメントを使用している場合は、次のコマンドを入力します。

      $ podman exec -it <quay_container_name >curl -v telnet://<database_container_name>:5432

6.1.1.4. リソース割り当ての確認

リソースの割り当てを確認するには、次の手順を実行します。

手順

  1. 実行中のコンテナーのリストを取得します。
  2. Red Hat Quay デプロイメントのディスク使用量を監視します。

    1. OpenShift Container Platform で Red Hat Quay Operator を使用している場合は、次のコマンドを入力します。

      $ oc exec -it <quay_database_pod_name> -- df -ah
    2. Red Hat Quay のスタンドアロンデプロイメントを使用している場合は、次のコマンドを入力します。

      $ podman exec -it <quay_database_conatiner_name> df -ah
  3. 他のリソースの使用状況を監視します。

    1. 次のコマンドを入力して、Red Hat Quay Operator デプロイメントでのリソース割り当てを確認します。

      $ oc adm top pods
    2. 次のコマンドを入力して、Red Hat Quay のスタンドアロンデプロイメント上の特定の Pod のステータスを確認します。

      $ podman pod stats <pod_name>
    3. 次のコマンドを入力して、Red Hat Quay のスタンドアロンデプロイメント上の特定のコンテナーのステータスを確認します。

      $ podman stats <container_name>

      以下の情報が返されます。

      • 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 パッケージがインストールされている。

手順

  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 コンテナーレジストリーのコンテナー 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 コンテナーイメージの対話型シェルを実行します。

    $ 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. パスワードを紛失したスーパーユーザー管理者の 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!

関連情報

詳細は、Quay のスーパーユーザーパスワードのリセット を参照してください。

6.1.3. Red Hat Quay Operator でのスーパーユーザーのパスワードのリセット

前提条件

  • 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. パスワードを紛失したスーパーユーザー管理者の 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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.