データベースサービスのデプロイ¶
どのようなKnative機能について学習しますか?¶
- Knativeサービスを使用するのに適したユースケース
最終的な成果物はどのようなものですか?¶
- テーブルとサンプルデータを含むPostgreSQL StatefulSetを実行する
概念学習¶
Knativeサービスは、Knativeエコシステム内の強力な機能であり、特に最新のクラウドネイティブアプリケーションにおける幅広いユースケースに対応するように設計されています。Knative Servingによって制御され、0へのスケールを実現できます。Knativeサービスの検討が必要な場合と理由について、さらに詳しく説明します。
ステートレスワークロード
- 定義:ステートレスアプリケーションは、リクエスト間でローカルにデータを保存しません。各リクエストは独立しており、以前のインタラクションに依存しません。
- ユースケース:例としては、データベースまたはキャッシュなどで状態が外部で管理されるWebサーバー、API、マイクロサービスなどがあります。
- メリット:任意のインスタンスがセッションの永続性を必要とせずに任意のリクエストを処理できるため、スケーリングとフェイルオーバーが簡素化されます。
イベント駆動型ワークロード
- 定義:イベント駆動型アーキテクチャは、HTTPリクエスト、キュー内のメッセージ、データベースの変更など、イベントまたはトリガーに応答します。
- ユースケース:着信データの処理、ワークフローのトリガー、サードパーティAPIとの統合など、イベントに反応する関数をデプロイするためにKnativeサービスを使用します。
- メリット:イベントを処理していない場合、サービスをゼロにスケールダウンできるため、リソースの利用効率が向上し、コスト削減とパフォーマンスの向上が実現します。
最適なユースケースかどうかをKnative Slackコミュニティ#knativeで確認してみてください。
実装¶
ステップ1:すべてのconfig yamlファイルを実行する¶
このセクションでは、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
検証¶
https://#:3000のUIページを開くと、ページの下部に新しいコメントがいくつか表示されます。
トラブルシューティング
「利用可能なコメントがありません」と表示される場合、データベースはまだ初期化されていません。データベースサービスポッドのヘルスを確認し、何が起こったのかを調べます。
次のステップ¶
データベースサービスの設定が完了し、リクエストを受信してユーザーコメントを保存する準備ができました。
次に、作成したすべてのコンポーネントを接続して、イベント駆動型アーキテクチャを完成させます。これが魔法が起きるところです。