KerbernetesにおけるDMANの実行
8461 ワード
分散アプリケーションランタイム、DAXは、クラウドまたは任意のエッジインフラストラクチャ上で実行できるポータブル、イベント駆動型ランタイムです.ビルディングブロックと呼ばれるコンポーネントにマイクロサービスアプリケーションを構築するためのベストプラクティスをまとめます.
あなたが1つ、いくつか、またはそれらのすべてのアプリケーションで使用できるように、各ビルディングブロックは完全に独立しています.ビルディングブロックは拡張可能であるので、あなた自身も書くことができます.
DAPAは、プログラミング言語やフレームワークなどの広い範囲をサポートしています.NET、Java、ノード.JS , GoとPythonそれはあなたのお気に入りのツールを使用して、マイクロサービスのアプリを書くことができますし、文字通りどこに展開することを意味します.
基本的に、ビルディングブロックはHTTPまたはGRPC APIで、アプリケーションコードから呼び出すことができます.サービス・コミュニケーション、国家管理、パブ/サブ、観測可能性、およびサービスのような開発中の主要な課題のいくつかを抽象化します.ビルディングブロックは基礎技術に依存しません.これは、例えば、あなたがApache Kafka、Rabbitmq、Redisストリーム、Azureサービスバス、またはDAXとのインタフェースを持つ他のサポートブローカーを使用できるパブ/サブ機能を実装する必要がある場合を意味します.
この例では、Kerbernetesクラスタ上でDRARを2つ実行する方法を示します.NETアプリケーション.つ目はApache Kafkaにメッセージを送りますが、2番目のものはそれらのメッセージを読み、REDISでそれらを保存します.KafkaとRedisへのコミュニケーションはDAYクライアントを使用して実現されます.これは、NuGetパッケージに依存関係がないことを意味します
アーキテクチャ図
必要条件
このデモでは、次のマシンにインストールする必要があります. クベルネッツkubectl
クベルネッツクラスターMinikube or Docker Desktop
また、リポジトリと
ステップ1 -あなたのKubernetesクラスタのセットアップDiv
あなたが必要とする最初のものはRBACが可能なKubernetesクラスタです.これは、Minikube/Dockerデスクトップを使用してマシン上で実行することができるか、それはAzureAKS または別のクラウドベンダーからいくつかの他の管理Kubernetesインスタンス.
クラスタがあると、以下の手順に従ってddyを展開します.詳細についてはhere
ステップ2 -セットアップアパッチカフカ
KubernetesクラスタでApache Kafkaを設定する最も簡単な方法はHelm パッケージマネージャー.開発マシンにヘルムをインストールするにはguide .
私たちはBitnamy Library for Kubernetes ZookeperとKafkaメッセージブローカーを起動します.
ステップ3 -セットアップredis
アパッチカフカと同じように、あなたのKubernetesクラスタ上でredisスピンする簡単な方法はヘルムを使用することです.
Step 4 - KerbernetesクラスタのDAXコンポーネントを作成する
pub/SubとState Storeのコンポーネントを配置するには、右のディレクトリに配置し、DAY YAMLマニフェストを適用してください.
手順5 -配備する.NETコアアプリケーション
すべての前提条件が準備ができたら、我々は我々のアプリを展開することができます.展開する.NETコアパブリッシャーとコンシューマーアプリケーションでは、右のディレクトリに配置し、Kubernetesマニフェストを適用することを確認します.
移動する
私たちの消費者アプリケーションは
プロセス全体をテストするにはREDISクライアントPODを実行し、内容が格納されているかどうかを確認できます.まず、パスワードを変数に置き換えます.
あなたがDRYについてもっと知りたいならば、始まる最高の場所は公式ですdocumentation .
あなたが1つ、いくつか、またはそれらのすべてのアプリケーションで使用できるように、各ビルディングブロックは完全に独立しています.ビルディングブロックは拡張可能であるので、あなた自身も書くことができます.
DAPAは、プログラミング言語やフレームワークなどの広い範囲をサポートしています.NET、Java、ノード.JS , GoとPythonそれはあなたのお気に入りのツールを使用して、マイクロサービスのアプリを書くことができますし、文字通りどこに展開することを意味します.
基本的に、ビルディングブロックはHTTPまたはGRPC APIで、アプリケーションコードから呼び出すことができます.サービス・コミュニケーション、国家管理、パブ/サブ、観測可能性、およびサービスのような開発中の主要な課題のいくつかを抽象化します.ビルディングブロックは基礎技術に依存しません.これは、例えば、あなたがApache Kafka、Rabbitmq、Redisストリーム、Azureサービスバス、またはDAXとのインタフェースを持つ他のサポートブローカーを使用できるパブ/サブ機能を実装する必要がある場合を意味します.
この例では、Kerbernetesクラスタ上でDRARを2つ実行する方法を示します.NETアプリケーション.つ目はApache Kafkaにメッセージを送りますが、2番目のものはそれらのメッセージを読み、REDISでそれらを保存します.KafkaとRedisへのコミュニケーションはDAYクライアントを使用して実現されます.これは、NuGetパッケージに依存関係がないことを意味します
Confluent.Kafka
or StackExchange.Redis
.アーキテクチャ図
必要条件
このデモでは、次のマシンにインストールする必要があります.
cd
右側のディレクトリにgit clone https://github.com/cvitaa11/dapr-demo
cd dapr-demo
ステップ1 -あなたのKubernetesクラスタのセットアップDiv
あなたが必要とする最初のものはRBACが可能なKubernetesクラスタです.これは、Minikube/Dockerデスクトップを使用してマシン上で実行することができるか、それはAzureAKS または別のクラウドベンダーからいくつかの他の管理Kubernetesインスタンス.
クラスタがあると、以下の手順に従ってddyを展開します.詳細についてはhere
$ dapr init -k
⌛ Making the jump to hyperspace...
ℹ️ Note: To install Dapr using Helm, see here: https://docs.dapr.io/getting-started/install-dapr-kubernetes/#install-with-helm-advanced
✅ Deploying the Dapr control plane to your cluster...
✅ Success! Dapr has been installed to namespace dapr-system. To verify, run `dapr status -k' in your terminal. To get started, go here: https://aka.ms/dapr-getting-started
The dapr
Kerbernetes展開が作成されるとすぐにCLIが終了します.Kubernetesの展開は非同期であるので、DAPA展開が継続する前に実際に完了することを確認する必要があります.ステップ2 -セットアップアパッチカフカ
KubernetesクラスタでApache Kafkaを設定する最も簡単な方法はHelm パッケージマネージャー.開発マシンにヘルムをインストールするにはguide .
私たちはBitnamy Library for Kubernetes ZookeperとKafkaメッセージブローカーを起動します.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install my-release bitnami/kafka
ステップ3 -セットアップredis
アパッチカフカと同じように、あなたのKubernetesクラスタ上でredisスピンする簡単な方法はヘルムを使用することです.
helm repo add bitnami https://charts.bitnami.com/bitnami
helm install redis bitnami/redis
カフカのインストールを確認するにはkubectl get all
また、similiarの出力が表示されるはずです.NAME READY STATUS RESTARTS AGE
pod/my-release-kafka-0 1/1 Running 0 18m
pod/my-release-zookeeper-0 1/1 Running 0 18m
pod/redis-master-0 1/1 Running 1 11m
pod/redis-slave-0 1/1 Running 1 11m
pod/redis-slave-1 1/1 Running 1 11m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 15d
service/my-release-kafka ClusterIP 10.110.225.238 <none> 9092/TCP 18m
service/my-release-kafka-headless ClusterIP None <none> 9092/TCP,9093/TCP 18m
service/my-release-zookeeper ClusterIP 10.99.95.252 <none> 2181/TCP,2888/TCP,3888/TCP 18m
service/my-release-zookeeper-headless ClusterIP None <none> 2181/TCP,2888/TCP,3888/TCP 18m
service/redis-headless ClusterIP None <none> 6379/TCP 11m
service/redis-master ClusterIP 10.111.109.148 <none> 6379/TCP 11m
service/redis-slave ClusterIP 10.111.66.85 <none> 6379/TCP 11m
NAME READY AGE
statefulset.apps/my-release-kafka 1/1 18m
statefulset.apps/my-release-zookeeper 1/1 18m
statefulset.apps/redis-master 1/1 11m
statefulset.apps/redis-slave 2/2 11m
Step 4 - KerbernetesクラスタのDAXコンポーネントを作成する
pub/SubとState Storeのコンポーネントを配置するには、右のディレクトリに配置し、DAY YAMLマニフェストを適用してください.
cd dapr-components
kubectl apply -f .\kafka.yaml
kubectl apply -f .\redis.yaml
手順5 -配備する.NETコアアプリケーション
すべての前提条件が準備ができたら、我々は我々のアプリを展開することができます.展開する.NETコアパブリッシャーとコンシューマーアプリケーションでは、右のディレクトリに配置し、Kubernetesマニフェストを適用することを確認します.
cd k8s
kubectl apply -f .\publisher.yaml
kubectl apply -f .\consumer.yaml
各マニフェストDeployment
アプリケーションとService
ブラウザ経由でアプリケーションにアクセスするためのオブジェクトです.移動する
localhost:8081/swagger
そして、あなたは私たちの出版社のアプリをポストメソッドでMessageController
. このアクションは、KAFKAパブ/サブコンポーネント上のNewMessageトピックにメッセージを送信します.アプリケーションとメッセージブローカの通信は直接行われません.DAPAは発行元ポッド内のサイドカーコンテナとして実行され、メッセージを送信するプロセス全体を処理します.私たちの消費者アプリケーションは
localhost:9091
そして、Kafkaパブ/サブコンポーネントの上で新しいメッセージ話題を購読します.新しいメッセージが到着すると、コンテンツとトラフを読んで、DRYクライアントはRedisステートストアUnderのキーメッセージに保存します.プロセス全体をテストするにはREDISクライアントPODを実行し、内容が格納されているかどうかを確認できます.まず、パスワードを変数に置き換えます.
export REDIS_PASSWORD=$(kubectl get secret --namespace default redis -o jsonpath="{.data.redis-password}" | base64 --decode)
クライアントを次のコマンドで実行します.kubectl run --namespace default redis-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis:6.0.12-debian-10-r3 -- bash
REDIS CLIを使用して接続します.redis-cli -h redis-master -a $REDIS_PASSWORD
今あなたがredisに接続されている場合は、コマンドを使用することができますHGETALL message
それは我々がカフカに送ったメッセージの内容を返します.これにより、全プロセスが機能することを確認した.あなたがDRYについてもっと知りたいならば、始まる最高の場所は公式ですdocumentation .
Reference
この問題について(KerbernetesにおけるDMANの実行), 我々は、より多くの情報をここで見つけました https://dev.to/cvitaa11/running-dapr-on-kubernetes-89gテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol