はじめに
クラウド環境にてDifyをバージョンアップした際の作業内容を記載しています。
当初、Difyをアンインストールせずにバージョンアップを試みたところ、GUIの確認時に「Internal Server Error」が表示され、正常に起動しませんでした。
Difyの設定内容が未定義であったため、Helmを使用してアンインストールとインストールを行う方法を採用しています。
既に設定している場合は他の方法やバックアップ取得を推奨します。
注意:アップグレードの前にデータベースのバックアップを行ってください。アップグレードが失敗した場合、迅速にバージョンをロールバックしてデータベースを復元することができます。
ツール
使用しているツールは以下です。
HelmはKubernetes上でのアプリケーション管理を支援するツールで、Difyはその上で動作するアプリケーションの一つです。
- Kubernetes
クラウド環境はIBM Cloud Kubernetes Service(IKS)を使用しています。
Kubernetes (K8s)は、デプロイやスケーリングを自動化したり、コンテナ化されたアプリケーションを管理したりするための、オープンソースのシステムです。
- Dify
DifyはオープンソースのLLMアプリ開発プラットフォームです。RAGエンジンを使用して、エージェントから複雑なAIワークフローまでLLMアプリを編成します。
- Helm
Helm は、Kubernetes アプリケーションの管理を支援します。
バージョンアップ
-
values.yaml取得
以下のコマンドで現在のDifyの設定をローカル環境にダウンロードします。
こちら設定ファイル(values.yaml
)を使用して、後続の手順で新しいバージョンへ変更する設定を行います。$ helm get values dify -a -o yaml > values.yaml
-
アンインストール
以下のコマンドを実行し、Difyをアンインストールします。
release "dify" uninstalled
が表示されると完了です。
参考:helm公式サイト アンインストール$ helm uninstall dify release "dify" uninstalled
-
デプロイ
以下を参考にデプロイしています。
参考:Upgrade- values.yamlの編集
上記「1.values.yaml取得」でローカル環境にダウンロードしたファイルを編集します。
ファイル内の「global:」>「images:」>「tags:」にバージョンを記載します。
以下では今回適用する「1.1.3」を指定しています。
global: image: tag: 1.1.3
- インストール
Helmコマンドを使用して新しいバージョンをインストールします。
以下のコマンドは、Difyがインストールされていない場合は新たにインストールされます。インストールされている場合は、指定されたvalues.yamlファイルに基づいてアップグレードされます。
$ helm upgrade --install dify douban/dify -f values.yaml Release "dify" does not exist. Installing it now.
- 内容の反映
以下のコマンドを実行するにより、アプリケーションが新しいバージョンのデータ構造に適応し、正常に動作する準備が整います。
「INFO [alembic.runtime.migration] 」が100行程表示されて終了します。
$ kubectl exec -it dify-pod-name -- flask db upgrade INFO [alembic.runtime.migration] Context impl PostgresqlImpl. INFO [alembic.runtime.migration] Will assume transactional DDL. INFO [alembic.runtime.migration] Running upgrade ... . . .
- values.yamlの編集
-
確認
- Podの起動確認
以下コマンドを実行し、出力のNAME
が「dify-」で始まるものは全て起動していることを確認します。
数分でREADY
が1/1
、STATUS
がRunning
になりました。
※kubectlコマンドのネームスペースは<namespace>
に置き換えています。
※NAME
は一部マスキングしています。
$ kubectl -n <namespace> get pod NAME READY STATUS RESTARTS AGE dify-api-**************** 1/1 Running 1 (38s ago) 68s dify-frontend-**************** 1/1 Running 0 68s dify-minio-**************** 1/1 Running 0 68s dify-plugin-daemon-************ 1/1 Running 0 68s dify-postgresql-0 1/1 Running 0 68s dify-redis-master-0 1/1 Running 0 68s dify-sandbox-**************** 1/1 Running 0 68s dify-worker-**************** 1/1 Running 1 (45s ago) 68s . . .
- Podの起動確認
おわりに
今後Difyの整備を進める中でバージョン変更が必要になった場合は、アンインストールを行わずにアップグレードする方法の調査が求められます。その際、関連するアプリケーションとの互換性を確認し、アップグレード前に適切なバックアップの取得対象を検討することも重要になると考えます。