> ## Documentation Index
> Fetch the complete documentation index at: https://enterprise-docs.dify.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# プラグインの完全削除

エンタープライズ版のプラグイン管理機能が正式リリースされる前は、Web インターフェースからプラグインを削除しても、データベースのマーカーが変更されるだけで、K8s クラスタからプラグインリソースが実際に削除されることはありません。この記事では、プラグイン CRD リソースの関連概念と、K8s で実行されているプラグインを完全に削除する方法を紹介します。

> 以下の文章では、「プラグイン」、「Dify Plugin」、「DP」はすべてエンタープライズ版にインストールされた Dify プラグインを指します。

## プラグインインストールがクラスタに与える影響

プラグインが正常にインストールされると、K8s クラスタ内で Runner Pod が実行されます。Pod 名はランダムに生成されたハッシュ値です。`pluginName` フィールドから具体的なプラグイン名とバージョンを確認できます。

例えば、`bfb86f037071c05d3ce1d63c2f4f1e30--6` のサフィックス `--6` は、これが6回目のインストール試行であることを示しています。プラグインのインストールが失敗した場合、次回の再インストール時にサフィックスの数字が自動的にインクリメントされ、以前失敗した CR は `Failed` 状態のまま保持されます。

以下のコマンドですべてのプラグイン CRD を確認できます：

![kubectl get dp 出力例](https://assets-docs.dify.ai/2025/12/c85453c7d23641365d79ace1b77e9eb4.png)

## プラグインの削除

完全な削除プロセスには2つのステップがあります：データベースレコードのクリーンアップ + K8s リソースの削除。

### データベースのクリーンアップ

現在、データベースをクリーンアップする最も簡単な方法は、Web インターフェースで「プラグインを削除」をクリックすることです。

> **⚠️ 重要：K8s リソースを削除する前に、必ず Web インターフェースで「プラグインを削除」をクリックしてください。** この操作により、`dify-plugin` テーブルからインストールレコードが削除されます。このステップをスキップすると、以下のデータベーステーブルの関連レコードを手動でクリーンアップする必要があります。

![データベーステーブル構造](https://assets-docs.dify.ai/2025/12/eb8d143f1f4b4fa483a2591ce7371849.png)

### クラスタリソースの削除

#### 特定のプラグインを削除

`DifyPlugin` は Kubernetes カスタムリソース定義（CRD）によって管理されるリソースであるため、Pod を直接削除しても完全に削除できません。コントローラレベルから削除する必要があります。

上記のプラグインを例として、Pod 名で特定のプラグインを削除できます。`DifyPlugin` CR を削除すると、Kubernetes のガベージコレクション機構が自動的に関連するすべての子リソースをカスケード削除します。

```bash theme={null}
# 特定の DifyPlugin CR を削除
kubectl delete difyplugin bfb86f037071c05d3ce1d63c2f4f1e30--6 -n dify

# または短縮名を使用
kubectl delete dp bfb86f037071c05d3ce1d63c2f4f1e30--6 -n dify
```

上記のコマンドを実行すると、以下のリソースが自動的に削除されます：

* Deployment：`bfb86f037071c05d3ce1d63c2f4f1e30--6`
* ReplicaSet：`bfb86f037071c05d3ce1d63c2f4f1e30--6-67dbf9f9d5`
* Pod：`bfb86f037071c05d3ce1d63c2f4f1e30--6-67dbf9f9d5-k8ktn`
* Service：`svc-bfb86f037071c05d3ce1d63c2f4f1e30--6`

#### すべてのプラグインを削除

```bash theme={null}
# ステップ 1：すべてのプラグイン設定をバックアップ
kubectl get dp -n dify -o yaml > all-difyplugins-backup.yaml

# ステップ 2：削除するプラグインのリストを確認
kubectl get dp -n dify

# ステップ 3：一括削除を実行
kubectl delete dp --all -n dify

# ステップ 4：復元が必要な場合は、以下のコマンドを実行
kubectl apply -f all-difyplugins-backup.yaml
```

#### すべての失敗したプラグインを削除

```bash theme={null}
# BuildFailed 状態のすべてのプラグインを表示
kubectl get dp -n dify | grep BuildFailed

# BuildFailed 状態のすべてのプラグインを一括削除
kubectl get dp -n dify -o jsonpath='{range .items[?(@.status.state=="BuildFailed")]}{.metadata.name}{"\n"}{end}' | \
  xargs -I {} kubectl delete dp {} -n dify
```

また、失敗したプラグインのインストールレコードは `install_tasks` テーブルに保存されます。

![SQL クエリ結果](https://assets-docs.dify.ai/2025/12/829bd9e1eb777763858da2c606b45e6f.png)

### Flask コマンドによるプラグイン移行

以下のコマンドを使用して、プラグインの一括エクスポートとインストールを行うことができます：

```bash theme={null}
# プラグイン設定をファイルにエクスポート
uv run --project api flask extract-plugins --output_file plugins.jsonl --workers 10

# プラグインを一括インストール
uv run --project api flask install-plugins \
  --input_file plugins.jsonl \
  --output_file installed_plugins.jsonl \
  --workers 10
```

以下のコマンドはプラグインの診断とクリーンアップに使用します：

```bash theme={null}
# エクスポートしたプラグインからユニーク識別子を抽出
uv run --project api flask extract-unique-identifiers \
  --input_file plugins.jsonl \
  --output_file unique_identifiers.json

# すべてのプラグインプロバイダをリスト
uv run --project api python commands_diagnose_plugin_providers.py list

# 特定のプラグインプロバイダをクリーンアップ
uv run --project api python commands_diagnose_plugin_providers.py clean --provider <provider_name>

# すべてのプラグインプロバイダをクリーンアップ
uv run --project api python commands_diagnose_plugin_providers.py clean-all

# プラグインサービスの実行状態を確認
uv run --project api python commands_diagnose_plugin_providers.py check-plugin-service
```
