ACKにデプロイしたDifyのDBをマネージドにする
前回ACKにデプロイしたDifyのDBまわりは全部Pod内にあるので、これらをマネージドに切り出して運用しやすくしていく〜〜〜〜〜〜〜〜
下記の図みたいにしたい!(公式ブログより)
Difyで使用しているDBたちはRedis, Postgres, AnalyticDB for PostgreSQLなので、それらをAlibaba Cloudでたてる!
Redisつくる
まずはRedisをたてるよ
このとき、VPCはACKの属するものと同じに設定すること&クラスタではなくスタンドアロンにすること!
これでつくる〜
できた〜〜〜〜〜〜〜〜!!!!!!
ので、まずパスワードをパスワードリセットで設定!
完了!
でもこのままだとACKからアクセスできないので、ホワイトリストの設定をするぞ
ACKの各ノードのIPたちを設定する
これでRedisの立ち上げと設定はおっけ〜〜〜〜〜〜〜〜〜〜🐕
Apsara RDS for PostgreSQLをたてる
次はRDSをたてる〜
これもVPCはACKの属するものと同じに設定すること!
これでつくる〜
できた!ので、まずはアカウントをつくる!!
次にデータベースをつくる!
で、Redisと同じようにホワイトリストの更新をする!
これでApsaraDB for PostgreSQLの設定はおわり🐈
AnalyticDB for PostgreSQLをたてる
次にAnalyticDB for PostgreSQLをたてる!
これもVPCはACKの属するものと同じに設定すること!
これでつくる〜
できた!ので、アカウント作成をする〜!
完了!
AnalyticDB for PostgreSQLの設定おわり🐓
ACKのDBまわりを付け替える
DBたちの準備がととのったので、前回作ったACKのクラスタでDBまわりのつけかえをする〜!
一旦HelmでいれたDify(ack-dify)を削除する!
で、もう一回HelmでDifyをいれる。このとき、Yamlファイルが編集できるので、そこでDBをマネージドのものに変える!
Chartバージョンは0.1.11
にした!
このYamlファイルのなかで、DBたちの設定部分を変更する
変更する対象はpostgresql, weaviate(ベクトルDB), redisで、それぞれをenabled: false
にする!ベクトルDBはDifyのデフォだとweaviateを使用していたのを、AnalyticDB for PostgreSQLに置き換える感じになるのね〜
変更後の該当箇所↓
postgresql:
enabled: false # ここを変更
name: postgres
global:
storageClass: ""
postgresql:
auth:
postgresPassword: "difyai123456"
username: ""
password: ""
database: "dify"
~~~
weaviate:
enabled: false # ここを変更
image:
# registry where weaviate image is stored
registry: *repo
# Tag of weaviate image to deploy
# Note: We strongly recommend you overwrite this value in your own values.yaml.
# Otherwise a mere upgrade of the chart could lead to an unexpected upgrade
# of weaviate. In accordance with Infra-as-code, you should pin this value
# down and only change it if you explicitly want to upgrade the Weaviate
# version.
tag: 1.19.1
repo: weaviate
# Image pull policy: https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
pullPolicy: IfNotPresent
pullSecrets: []
~~~
redis:
enabled: false # ここを変更
## "Redis database number to use (0-15)"
dbNumber: "0"
## @section Global parameters
## Global Docker image parameters
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
## Current available global Docker image parameters: imageRegistry, imagePullSecrets and storageClass
##
## @param global.imageRegistry Global Docker image registry
## @param global.imagePullSecrets Global Docker registry secret names as an array
## @param global.storageClass Global StorageClass for Persistent Volume(s)
## @param global.redis.password Global Redis® password (overrides `auth.password`)
##
次に、各DBのendpointを確認して、それらをYamlファイルの外部DB設定箇所に反映する!
まずはRDS!
イントラネットアドレスが接続先なのでこれをYamlファイルの該当箇所に設定する!
たてたときに設定したusername, passwordも設定する〜
###################################
# External postgres
# - these configs are only used when `externalPostgres.enabled` is true
###################################
externalPostgres:
enabled: true # ここを変更
username: "dify" # ここを変更
password: "[設定したパスワード]" # ここを変更
address: "pgm-0iwt6027t8tetn8b.pgsql.japan.rds.aliyuncs.com" # ここを変更
port: 5432
dbName: dify
maxOpenConns: 20
maxIdleConns: 5
次にRedisやる!
インスタンス情報に接続情報あったのでこれを使う!
###################################
# External Redis
# - these configs are only used when `externalRedis.enabled` is true
###################################
externalRedis:
enabled: true # ここを変更
host: "r-0iwdbsbvq8ysq7urau.redis.japan.rds.aliyuncs.com" # ここを変更
port: 6379
username: "r-0iwdbsbvq8ysq7urau" # ここを変更
password: "[設定したパスワード]" # ここを変更
useSSL: false
最後にAnalyticDB for PostgreSQL!
アカウントのaccessKeyとsecretKeyが必要なので、まずそれを発行する〜
右上のアカウントからアクセスキーにとんで作成!
あとADBのインスタンスIDを確認して、Yamlに反映する〜
###################################
# External AnalyticDB
# - these configs take effect when `externalAnalyticDB.enabled` is true
###################################
externalAnalyticDB:
enabled: true # ここを変更
accessKey: "[発行したaccessKey]" # ここを変更
secretKey: "[発行したsecretKey]" # ここを変更
region: "ap-northeast-1" # ここを変更
instanceId: "gp-0iwp02ngy63052z1c" # ここを変更
account: "dify" # ここを変更
accountPassword: "[設定したパスワード]" # ここを変更
namespace: "dify"
namespacePassword: "difypassword"
以上のYaml該当箇所修正をしたらHelmデプロイ完了〜!!!!!
Podたちが生まれ変わったのを確認して、ack-dify-apiのpodのログを見てみる
DB migrationとかの立ち上げ準備を経て、appが立ち上がってた!
さっそくアプリにアクセスしてみると
できぴ〜!!!!!!!!!!
まとめ
ACKのHelmデプロイされたDify、Yamlの設定をちょいちょいっと変えたら各DBをマネージドのものに切り替えられた!
それぞれ難しい設定は特にせず、きちんと作って切り替えたらすんなりできたので楽だった〜〜〜〜✌️わーい
これにておわり!
Discussion