合成ジョブのファイル管理

モニター対象のアプリケーションが依存ファイルを必要とする場合、PSA は合成ジョブの実行中にそれらのファイルをダウンロードしてアクセスできます。これらのファイルは、後続の合成ジョブで使用することもできます。PSA はこれらのファイルの読み取りと書き込みをサポートしており(Excel およびテキストファイルのみ)、ファイルサイズやコンテンツなどのメタデータを検証できます。

この機能を有効にするには、values.yaml ファイルで次のように設定します。

PSA in Kubernetes
CODE
chrome-storage:
  enabled: true                          # Master switch
  
  storageClass:                           # K8s StorageClass configuration
    name: "psa-ebs-storage"               # StorageClass name
    provisioner: "ebs.csi.aws.com"        # Cloud provider provisioner
    parameters:
      type: "gp3"                         # Storage type (gp3, gp2, etc.)
      encrypted: "true"                   # Enable encryption
  
  pvc:                                    # PersistentVolumeClaim configuration
    name: "chrome-shared-storage"         # PVC name
    size: "500Mi"                         # Storage size
    accessMode: "ReadWriteOnce"           # Access mode
    mountPath: "/mnt/opt/appdynamics"     # Container mount path
    volumeMode: "Filesystem"              # Volume mode
PSA in Docker
CODE
chrome-storage:
  enabled: true                          # Master switch
    
  dockerVolume:                           # Docker volume configuration
    storageLocation: "psa-docker-volume"  # Volume name or bind path
    mountPath: "/mnt/opt/appdynamics"     # Container mount path
    volumeUid: 9001                       # User ID for permissions
    volumeGid: 9001                       # Group ID for permissions

ファイルは永続ストレージに保存されます。PSA は、新しいストレージを作成する前に、values.yaml ファイルで次のことを確認します。

  • Kubernetes:ストレージクラスと PVC の名前
  • Docker:dockerVolume 下のストレージの場所の詳細

ストレージリソース(StorageClass、PVC、またはストレージの場所)が存在しない場合、PSA は存在しないリソースの新しいインスタンスを作成します。それ以外の場合(指定されている場合)、PSA はファイルストレージに既存のリソースを再利用します。

警告: 信頼できる安全なソースからファイルをダウンロードしてください。PSA は、ダウンロードされたファイルを潜在的なリスクについてスキャンしません。
注:

StorageClass は(名前空間ではなく)クラスター範囲のリソースです。つまり、名前空間のロールを使用してアクセスすることはできません。ClusterRole のみがクラスター範囲のリソースに権限を付与できます。「Kubernetes RBAC のマニュアル」を参照してください。

サポートされているファイル拡張子とライブラリ

PSA は、次のアプリケーション依存ファイル拡張子タイプをサポートしています。

ファイル拡張子 説明 ライブラリ/バージョン
.pdf PDF ドキュメント pypdf 6.4.0
.txt テキストファイル 標準ライブラリ
.xls Excel 97-2003 既存の依存関係
.xlsx Excel 2007 以降 openpyxl 3.1.5
.csv カンマ区切りファイル csv(標準 Python ライブラリ)
注:

PSA は、拡張パス処理のために pathlib2 バージョン 2.3.7.post1 のライブラリもサポートしています。

注:
  • PSA は、大きなファイルサイズのダウンロードを制限しません。ただし、Python スクリプトを使用することで、ファイルサイズの制限を管理できます。
  • また PSA は、コンテナの /tmp/downloads フォルダにある他の拡張子を持つファイルもダウンロードします。ただし、これらのファイルは永続ストレージにコピーされません。
  • ボリュームが完全に使用されている場合、PSA はボリュームをクリアしません。ストレージは定期的に消去してください。

永続ストレージにアクセスするためのセキュリティコンテキストの追加

次のセキュリティコンテキストを追加する必要があります。

Kubernetes

values.yaml ファイル内の次の詳細を更新します。
CODE
securityContext:
 overrideSecurityContextForWebAndAPIMon: true
  runAsGroup: <group_name> 
  runAsUser: <user_name> 
  runAsNonRoot: true
  fsGroup: <fs_group_name>

Docker

PSA は BusyBox を使用してボリュームアクセス権限を設定します。そのため、BusyBox コンテナイメージがマシンで利用できるようにするか、PSA がダウンロードするためのインターネットアクセスを提供します。

注:

BusyBox コンテナイメージが必要な理由は次のとおりです。

  • Docker ボリュームのデフォルト権限が制限されている場合がある(ルートのみ)
  • Chrome エージェントは非ルートユーザーとして実行される
  • コンテナ化された環境では、ホストレベルの権限を直接変更できない
  • BusyBox は chown または chmod ユーティリティを備えた軽量の Alpine Linux を提供する

トラブルシューティング

設定に誤りがある場合、特定の問題が発生する可能性があります。以下の表に、問題と、それらを解決するための手順を示します。

問題 理由(Reason) 解像度
Kubernetes
PVC が Pending 状態でスタックします。 StorageClass プロビジョナを使用できません。

CSI ドライバのインストールを確認します。

kubectl get sc and kubectl describe pvc <name>
Pod が PVC をマウントできません。 ボリュームのバインドモードまたはアクセスモードに不一致があります。

ノードがストレージバックエンドにアクセスできることを確認します。

kubectl describe pod <name>

コンテナで権限が拒否されました。 セキュリティコンテキストに不一致があります。 fsGroup および runAsUser の設定を確認し、Pod セキュリティコンテキストと PVC の所有権を修正します。
Docker

ボリュームの作成が失敗します。

Docker デーモンまたはディスク容量に問題があります。

Docker ログと使用可能なディスク容量を確認します。

docker volume ls and df -h
コンテナで権限が拒否されました。 権限のセットアップの失敗。

次のことを行います。

  • BusyBox コンテナイメージの可用性を確認して再試行する
  • Docker ログとボリューム
バインドマウントが見つかりません。 ホストパスが存在しません。 ホストのファイルシステムを確認し、ディレクトリを手動で作成します。