問題タブ [linkerd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
microservices - Linkerd がリクエスト数、成功率、失敗率を表示しない
私はlinkerdを初めて使用し、linkerdを介してファイルベースのサービス検出を使用して、すべてのリクエストをマイクロサービスにプロキシしようとしています。私はそれを正常に行うことができ、リクエストはポート 9990 で実行されている管理ダッシュボードに正常に登録されました。
しかし、私の問題は、ダッシュボードの成功率と失敗率が常に N/A と表示されることです。リクエストを受信して一瞬だけ100%になり、再びN/Aに戻ります。しかし、linkerd を介してすべてのリクエストを追跡したい、つまり、linkerd にリクエスト数と成功率と失敗率を記憶させたいと考えています。
ここに私の問題のスクリーンショットがあります
linkerd - linkerd プラグインで識別子を使用して HTTP ステータス コードを設定する方法
Java で linkerD を使用して認証プラグインを設定しています。現在、識別子を使用してリクエストを傍受し、ユーザーが承認されているかどうかを確認しています。(例: https://github.com/linkerd/linkerd-examples/tree/master/plugins/header-classifierを使用)
ユーザーが承認されていない場合、リクエストはバックエンド サービスに到達しません。そのような場合、ランタイム例外をスローしています (リクエストがバックエンドに到達するのを防ぐ別の方法があるかどうか教えてください)。Linkerd は、応答を 502 Bad Gateway として送信します。Linkerd には、送り返したい HTTP ステータス コードを指定できるメカニズムが必要です。
識別子とともにresponseClassifierを使用してみましたが、例外がスローされたときにresponseClassifierが呼び出されないようです。
nginx - Kubernetes サービスへの動的ルーティングをサポートするリバース プロキシ: ポート名と WebSocket
WebSocket をサポートする Kubernetes サービスへのパスベースの動的ルーティングを実行したいと考えています。
たとえば、次のパス:
パスfooを使用して、名前付きポートmyport (名前空間のデフォルト) でサービスmyserviceにトラフィックをルーティングする必要があります。
次の ConfiMap ルーター エントリ (io.l5d.k8s namer を使用) を使用して、Linkerdでこれを達成することに近づきました。
Linkerd で利用できない WebSocket サポートが必要であることを除いて、それは機能しました。
場所と書き換えルールに正規表現を使用してNGINXを試しました。これは次のようになります。
これは、NGINX が開始された後に作成されたサービスに NGINX がルーティングされないことを除いて機能しました。これが nginx の DNS キャッシングの問題に関連しているのか、それともSRV DNS レコードのサポートに関連しているのかはわかりません。このシナリオはNGINX Plus でも機能するはずですが、オープン ソース ソフトウェアのみに依存する必要があります。
リバース プロキシ/サービス メッシュが K8s service:port および WebSocket への動的ルーティングをサポートするアイデアはありますか?
編集 これはIstioで実行できますか? Istio ルーティング構成でハードコーディングされた宛先を指定する必要があるようです。ソース (要求) で正規表現を指定できますが、正規表現キャプチャ グループを使用して宛先を指定することはできません。
nginx - DNS に namerd を使用していますか? (または: Linkerd で nginx イングレス サービスを構成する方法)
現在、Hello World サービスを に展開しており、namerd dtab/svc/hello
に dentry を として追加しました。internal
/svc/app => /svc/hello
nginx
また、イングレス コントローラーとして機能するサービスをデプロイし、すべてのトラフィックを関連するサービスに転送します。最終的には、ヘッダーのストリッピングを行い、ホワイトリストに登録された IP 範囲内の開発者のみに管理サービスを公開するなどしますが、今のところ、次の構成で非常にシンプルにしています。
ただし、これらのnginx
ポッドは起動に失敗し、エラーが発生します
nginx: [emerg] /etc/nginx/conf.d/default.conf:3 の上流の「アプリ」にホストが見つかりません
nginx サービスを linkerd 経由でアプリ サービスに転送できるようにするには、どうすればよいですか?
routing - linkerd、kubernetes、および dtab
私は Kubernetes で linkerd を使用するのが初めてで、dtab とルーティングにあまり慣れていません。
この非常に簡単な「入門ガイド」に従いました: https://blog.buoyant.io/2016/10/04/a-service-mesh-for-kubernetes-part-i-top-line-service-指標/
すべてが正常に機能しますが、全体がどのように機能しているかについての詳細な説明はありません。
だから、私はこれらの「着信」ルールを持っています:
/srv=>/#/io.l5d.k8s/default/http;
/host=>/srv;
/svc=>/host;
/host/world=>/srv/world-v1
チュートリアルでは、動作することをテストするために、次の curl リクエストを作成する必要があります。
$ http_proxy=$INGRESS_LB:4140 curl -s http://hello
..そしてそれは動作します!しかし、私がどのようにhttp://hello
して/svc/hello
...この魔法がどこでどのように起こったのかはよくわかりません。
では「デフォルト」の名前空間が「ハードコード」され/#/io.l5d.k8s/default/http
ているため、別の名前空間にあるサービスにアクセスできないと思います。そのようなことを行うためにルールを更新するにはどうすればよいですか?
linkerdの進歩を助けてくれてありがとう^^
kubernetes - AWS Kubernetes サービス用に gRPC をセットアップする方法
Kubernetes 公開サービス用に gRPC を設定する方法はありますか? クラスターに Linkerd をデプロイしましたが、うまく機能しているようで、Kubernetes 内で gRPC を使用できます。ただし、クラスターの外部から gRPC 接続を提供するソリューションは見つかりませんでした。