合成ジョブのファイル管理
モニター対象のアプリケーションが依存ファイルを必要とする場合、PSA は合成ジョブの実行中にそれらのファイルをダウンロードしてアクセスできます。これらのファイルは、後続の合成ジョブで使用することもできます。PSA はこれらのファイルの読み取りと書き込みをサポートしており(Excel およびテキストファイルのみ)、ファイルサイズやコンテンツなどのメタデータを検証できます。
この機能を有効にするには、values.yaml ファイルで次のように設定します。
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
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 はファイルストレージに既存のリソースを再利用します。
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 ファイル内の次の詳細を更新します。
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 |
| コンテナで権限が拒否されました。 | 権限のセットアップの失敗。 |
次のことを行います。
|
| バインドマウントが見つかりません。 | ホストパスが存在しません。 | ホストのファイルシステムを確認し、ディレクトリを手動で作成します。 |