問題タブ [servicemesh]
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.
kubernetes - kubernetes で istio との mTLS 通信をデバッグするには?
私は Istio に非常に慣れていないため、単純な質問かもしれませんが、Istio に関していくつか混乱があります。k8s に Istio 1.8.0 と 1.19 を使用しています。複数の質問で申し訳ありませんが、最善のアプローチを明確にするのを手伝っていただければ幸いです。 .
Istio を注入した後、ポッド内でサービスからサービスに直接アクセスできなかったと思いますが、以下に示すようにアクセスできます。誤解しているかもしれませんが、それは期待される動作ですか?一方、サービスが mTLS を使用して envoy プロキシを介して互いに通信するかどうかをデバッグするにはどうすればよいですか? モードを使用して
STRICT
いますが、これを回避するには、マイクロサービスが実行されている名前空間にピア認証をデプロイする必要がありますか?トラフィックを制限するにはどうすればよいですか? api-dev サービスは auth-dev にアクセスするべきではありませんが、backend-dev にアクセスできますか?
database
一部のマイクロサービスは、名前空間でも実行されているデータベースと通信する必要があります。同じデータベースを使用して istio を注入したくないものもありますか? では、データベースも istio インジェクションがあるのと同じ名前空間にデプロイする必要がありますか? はいの場合、残りのサービスのために別のデータベース インスタンスをデプロイする必要があるということですか?
kubernetes - 領事ターミネーティング ゲートウェイ - caFile
AWS の Kuberntes クラスターで Consul を使用しており、終端ゲートウェイを AWS RDS インスタンスに移行して、アップストリーム サービスで TLS 検証を使用しようとしています。
非TLS検証済み構成の場合、次のものがうまく機能します
ただし、に変更すると
データベースに接続しようとすると、一般的な接続エラーが発生します。consul と外部 RDS サービスの間で TLS 検証を有効にするために他に何かする必要がありますか?
PS RDS 結合 CA ファイルをダウンロードし、次のパスのクラスター内の各ノードにコピーを配置しました/etc/ssl/rds.pem
kubernetes - Kubernetes - Service Mesh は必須ですか?
最近、Nginx イングレス コントローラーを使用して k8s クラスター内にいくつかのマイクロサービスを構築しましたが、それらは正常に動作しています。
マイクロサービス間の通信を扱うときに、gRPC を試してみましたが、うまくいきました。次に、マイクロサービス A -> gRPC -> マイクロサービス B の場合、すべてのリクエストがマイクロサービス B の 1 つのポッドでのみ発生したことを発見しました (たとえば、マイクロサービス B で使用できる合計 10 のポッド)。リクエストをマイクロサービス B のすべてのポッドに負荷分散するために、linkerd を試してみましたが、うまくいきました。しかし、gRPC が内部エラー (例: 100 件のリクエストのうち 1 件のエラー) を生成することがあることに気づき、k8s DNS の方法 (例: my-svc.my-namespace.svc.cluster-domain.example) を使用するように変更しました。その後、リクエストは決して失敗しません。gRPC と linkerd を保持し始めました。
その後、istioに興味を持ちました。クラスターに正常にデプロイしました。ただし、常に独自のロード バランサーが作成されることがわかりました。これは、既存の Nginx イングレス コントローラーとはあまり一致しません。
さらに、プロメテウスとグラファナ、そしてk9sも試してみました。これらのツールを使用すると、ポッドの CPU とメモリの使用状況をよりよく理解できます。
ここで、理解したいいくつかの質問があります:-
- クラスター リソースを監視する必要がある場合は、prometheus、grafana、および k9s を使用します。それらはサービス メッシュ (linkerd、istio など) と同じ監視の役割を果たしていますか?
- k8s DNS がすでにロード バランシングを達成できる場合、サービス メッシュはまだ必要ですか?
- サービス メッシュなしで k8s を使用している場合、通常のプラクティスより遅れていますか?
実は私もサービスメッシュを毎日使いたいと思っています。
traefik - Argocd ロールアウトとサービス メッシュ インターフェース (Traefik Mesh) を使用したカナリア デプロイ戦略
私はカナリア展開戦略に取り組んでいます。トラフィック メッシュをインストールした後、サービス メッシュ インターフェイスを使用します。コマンドで初めてプログラムを起動するとき
アプリケーション全体、つまり 4 つのレプリカをデプロイする必要がありますが、アプリケーションの 20% (1 つのレプリカ) のみをデプロイし、進行中の状態になり、エラーが発生します。
TrafficRoutingErro: the server could not find the requested resource (post trafficsplits.splits.smi-spec.io)
TrafficSplitNotCreated: Unable to create traffic Split 'demo-traefficsplit'
これが私のマニフェストです:
argocd-rollout.yaml
applications.yaml