コンテンツへスキップ

データベースサービスのデプロイ

image1

どのようなKnative機能について学習しますか?

  • Knativeサービスを使用するのに適したユースケース

最終的な成果物はどのようなものですか?

  • テーブルとサンプルデータを含むPostgreSQL StatefulSetを実行する

概念学習

image4

Knativeサービスは、Knativeエコシステム内の強力な機能であり、特に最新のクラウドネイティブアプリケーションにおける幅広いユースケースに対応するように設計されています。Knative Servingによって制御され、0へのスケールを実現できます。Knativeサービスの検討が必要な場合と理由について、さらに詳しく説明します。

ステートレスワークロード
  • 定義:ステートレスアプリケーションは、リクエスト間でローカルにデータを保存しません。各リクエストは独立しており、以前のインタラクションに依存しません。
  • ユースケース:例としては、データベースまたはキャッシュなどで状態が外部で管理されるWebサーバー、API、マイクロサービスなどがあります。
  • メリット:任意のインスタンスがセッションの永続性を必要とせずに任意のリクエストを処理できるため、スケーリングとフェイルオーバーが簡素化されます。
イベント駆動型ワークロード
  • 定義:イベント駆動型アーキテクチャは、HTTPリクエスト、キュー内のメッセージ、データベースの変更など、イベントまたはトリガーに応答します。
  • ユースケース:着信データの処理、ワークフローのトリガー、サードパーティAPIとの統合など、イベントに反応する関数をデプロイするためにKnativeサービスを使用します。
  • メリット:イベントを処理していない場合、サービスをゼロにスケールダウンできるため、リソースの利用効率が向上し、コスト削減とパフォーマンスの向上が実現します。

image6

最適なユースケースかどうかをKnative Slackコミュニティ#knativeで確認してみてください。

実装

ステップ1:すべてのconfig yamlファイルを実行する

image9

このセクションでは、PostgreSQLサービスを単純に実行します。すべてのconfigファイルが準備できています。次のコマンドを実行して、一度にすべてのyamlを適用します。

kubectl apply -f db-service

警告

すべてが準備完了になるまで数分お待ちください。ジョブポッドが失敗してエラーが表示されても問題ありません。待ち続けてください。

検証

次の出力が見られるはずです。

configmap/sql-configmap created
secret/postgresql-secret created
persistentvolumeclaim/postgresql-pvc created
statefulset.apps/postgresql created
service/postgresql created
job.batch/postgresql-job created

すべてのポッドが利用可能になり、データベースの移行ジョブが完了するまでしばらくお待ちください。ジョブポッドが失敗してエラーが発生しても心配しないでください。「完了」状態のジョブが少なくとも1つになるまでお待ちください。

NAME                                  READY   STATUS    RESTARTS   AGE
bookstore-frontend-7b879ffb78-9bln6   1/1     Running   0          6h53m
camel-k-operator-7989475884-7wk6z     1/1     Running   0          5h26m
event-display-55967c745d-bxrgh        1/1     Running   0          5h26m
node-server-644795d698-r9zlr          1/1     Running   0          5h26m
postgresql-0                          1/1     Running   0          5h23m
postgresql-job-55dlv                  0/1     Completed 0          10s
postgresql-job-fnv8m                  0/1     Error     0          73s

検証

image3

https://#:3000のUIページを開くと、ページの下部に新しいコメントがいくつか表示されます。

トラブルシューティング

「利用可能なコメントがありません」と表示される場合、データベースはまだ初期化されていません。データベースサービスポッドのヘルスを確認し、何が起こったのかを調べます。

image2

次のステップ

image7

データベースサービスの設定が完了し、リクエストを受信してユーザーコメントを保存する準備ができました。

次に、作成したすべてのコンポーネントを接続して、イベント駆動型アーキテクチャを完成させます。これが魔法が起きるところです。

高度なイベントフィルタリングの実装へ

サイトトラフィックを理解するために、分析とCookieを使用しています。サイトの使用に関する情報は、その目的でGoogleと共有されます。詳細はこちら。