👾

ACKにデプロイしたDifyのDBをマネージドにする

2025/02/05に公開

前回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