AWSIstioも0.8がリリースされたので、Istioの公式ドキュメントからサンプルアプリケーションを動かしたほうがよいです。それでは続きをしていきます。MeshコンポーネントをKubernetesクラスタに統合する方法を示します。/応答メトリック、トレース情報などの重要な機能があります。2つのよく知られているサービスメッシュ統合について検討します。LinkerdIstioこちらもあわせて読みたいです。meshとは何かLinkerdとKubernetesの使用Linkerdは、HTTP、Thrift、Mux、HTTP/2、およびgRPC経由でトラフィックをルーティングおよびロードバランスするレイヤ5/7のプロキシです。それはFinagle(Twitterで構築)に基づいており、2017年1月にlinkerdがKubernetesとともにCNCFのメンバーになりました。Linkerdは、回路破壊、待ち時間を考慮したロードバランシング、最終的に一貫した(「アドバイザリ」)サービス発見、デッドライン伝播、トレーシングと計測など、幅広い強力なテクニックを使用して、可視性、制御、および信頼性をアプリケーションに追加します。今回Kubernetesクラスターで実行されているサービスの可視性に焦点を当てます。ち時間などのトップラインサービスメトリクスをどのように取得するかを行います。Linkerdの次のような機能をいくつか見ていきます。デフォルトのKubernetes名前空間で動作するDaemonSet(つまり、ホストごとに1つのインスタンス)としてlinkerdがインストールされます。createdlinkerd(l5dという名前の)ポッドが実行されていることを確認します。48sこれは、5ワーカーノードクラスタからの出力です。linkerdサービスが実行されていることを確認します。2mlinkerdサービスの詳細もみてみます。balancerLinkerdの管理ページ(ELB:9990)に行ってインストールを確認することができます。DNSが利用可能になるには、1〜2分かかります。ロードバランサエンドポイントにアクセスする際に問題が発生した場合は、ファイアウォールまたはVPNがポート9990へのアクセスを妨げている可能性があります。http://$LINKERD_ELB:9990openコマンドがだめだったらブラウザからURLを入力していけます。ダッシュボードを確認しましょう。examplesリポジトリに「hello」と「world」という2つのマイクロサービスアプリがあります。それらはお互いに通信してリクエストを完了します。このコマンドを実行すると、デフォルトの名前空間にこれらのアプリがインストールされます。created次のコマンドを実行してトラフィックを生成します。http://helloLinkerdは、提供されているリクエスト数、接続数、豊富なデータを表示します。linkerd-vizlinkerd-vizは、PrometheusとGrafanaに基づく監視アプリケーションです。k8sクラスタにインストールされているリンカーインスタンスとサービスを自動的に検索できます。DNSが利用可能になるには1〜2分かかることがあります。「hello-world」アプリケーションをまだ配備していない場合は、今すぐデプロイしてください。hello-world.yml以前のリンカーのDaemonsetを削除してください。ingressをデプロイします。configured今、バージョン2の「world」マイクロサービスを導入してください。createdサービスのv1にリクエストを送信します。world'と返信する必要があります。worldように返信する必要があります。(100.96.1.14)要求のヘッダーを変更して、サービスのv2に要求を送信します。(100.96.2.14)これは、worldサービスのv1とv2がクラスタ内で実行されていることを示しています。要求ヘッダーに個々の要求をルーティングするサービスのバージョンを指定できます。linkerdの設定ファイルをlinkerdの例で見ることができます。istio-systemIstioとKubernetesの併用Istioは、HTTP、WebSocket、HTTP/2、gRPC経由でトラフィックのルーティングとロードを行い、MongoDBやRedisなどのアプリケーションプロトコルをサポートするレイヤ4/7プロキシです。IstioはEnvoyプロキシを使用して、サービスメッシュ内のすべての着信/発信トラフィックを管理します。EnvoyはLyftによって建設され、2017年9月EnvoyはKubernetesと共にCNCFのメンバーになった。Istioは、Google、IBM、Lyftの共同開発です。レイヤー7ルーティング、ポリシー施行(すべてEnvoyプロキシによって提供される)など、アプリケーションコードの外にあるさまざまなトラフィック管理機能があります。IstioはMixerコンポーネントを使用して、ACL、レート制限、クォータ、認証、要求トレース、テレメトリ収集をサポートしています。Istioプロジェクトの目標は、アプリケーションの変更を必要とせずにトラフィック管理とマイクロサービスのセキュリティをサポートすることです。これは、すべてのネットワーク通信を処理するside-carをポッドに注入することで行います。この演習では、Istioが提供する次のような機能をいくつか見ていきます。proxy)のサイドカーをポッドに挿入するためにマシンにバイナリをインストールする必要があります。Istioをダウンロードする必要があります。Istioは自動的にside-carを注入することもできます。Cleankubectlを使用してIstioをインストールします。インストールされます。上記の手順でIstioをダウンロードしたディレクトリに移動します。間の相互TLS認証を有効にせずにIstioをインストールします。使用するアプリケーションには、このオプションを選択します。install/kubernetes/istio-demo.yamlIstioがインストールされていることを確認します。Istioは独自の名前空間にインストールされています。1mサンプルアプリケーションのデプロイ私たちは、Istioチームが開発したサンプルアプリケーションを使用して、Istioの機能をチェックします。使用する必要があります。samples/bookinfo/kube/bookinfo.yaml)これによりBookInfoアプリケーションが展開されます。これは4つのマイクロサービスで構成され、それぞれが異なる言語で書かれており、共同して書籍の製品情報、書籍の詳細、書籍のレビューを表示します。各マイクロサービスは専用ポッドに配置され、エンボイプロキシはポッドに注入されます。Envoyは、ポッド間のすべてのネットワーク通信を引き継ぐようになります。3hすべてのコンポーネントが正常にインストールされている場合は、製品ページを表示できるはずです。これには、最初にIngressが作成されるのに1〜2分かかる場合があります。Ingressが公開するサービスに接続する場合もあります。予約商品ページが表示されるまでブラウザを更新してください。http://$ISTIO_INGRESS/productpage加重ルーティングサンプルアプリケーションは非常に便利です。複数の「レビュー」マイクロサービスのバージョンが展開されていることがわかります。重み付けされたルーティングを使用して、トラフィックの50%をレビューマイクロサービスのv3にルーティングします。v3ではレビューごとに星が表示されますが、v1では表示されません。次に、bookinfoの商品ページに数回問い合わせを行い、評価のために星を含むレビューページが表示された回数を数えます。これは、レビューページのv3にルーティングされていることを示します。replacedエンボイプロキシは、異なるバージョンのマイクロサービスへのルーティングをラウンドロビンしません。したがって、製品ページに2回アクセスすると、1つのリクエストでレビューのv1が使用される可能性は低くなり、2回目のリクエストではv3が使用されます。100件を超えるリクエストのうち50%はレビューページのv3にルーティングする必要があります。以下のスクリプトを使用してこれをテストできます。mfileこれを実行する前に、現在のフォルダで呼び出されているファイルがないことを確認してください。このスクリプトcurlはbookinfo製品ページに100回のリクエストを送信します。約30秒かかる場合があり、レスポンスに星があるものを数えます。製品ページhtmlには2人のレビューアが含まれているため、2人で区切られています。curlsレビューページで「完全な星」を返しました。100本のカールのうち、50本は「完全な星」を含むと予想しています。2))"出力は次のように表示されます。72最後に、一時ファイルを削除します。mfileこの重み付きルーティングは、Istioがバージョン間のトラフィックをルーティングし、トラフィックの負荷に対応するためにレビューマイクロサービスをスケーリングすることによって処理されました。proxyとして配備されています。マイクロサービス間のすべてのトラフィックフローを表示および監視し、メッシュトラフィックのグラフィカルな表現を生成できます。前の手順でデプロイしたbookinfoアプリケーションを使用してこれを実演します。Prometheusをインストールします。47sServicegraphアドオンをインストールします。Servicegraphは、Istioからのメッシュトラフィックフローの詳細を取得するPrometheusをクエリします。createdServicegraphが展開されたことを確認します。5mbookinfoアプリケーションへのトラフィックを生成。ポートフォワーディングを使用してこれにアクセスします。http://localhost:8088/dotvizこのような形の分散トレースが表示されます。Servicegraphが利用可能になるまで数秒かかる場合がありますので、応答がない場合はブラウザを更新してください。サイドキャストプロキシ間の相互TLS通信を強制することによって、マイクロサービス間の安全な通信を可能にします。これを実装するのは簡単です。相互TLSを有効にしてIstioをインストールするだけです。上記の例を実行した場合は、Istioをアンインストールします。間で相互TLS認証を実施します。インストールされていることが保証されている新しいkubernetesクラスタでのみ使用してください。install/kubernetes/istio-demo-auth.yamlマイクロサービス間のすべてのトラフィックが暗号化されます。上記のクリーンアップスクリプトの名前空間を受け入れます。Istioを削除すると、出力にエラーが表示されることがあります。これらはインストールしていないIstioコンポーネントに関連しているので、これらについては心配する必要はありません。すべてがアンインストールされたことを確認するには、次のようにします。IstioまたはBookinfoのコンポーネントは残る必要はありません。ハンズオンをやりました。月別アーカイブはてなブログをはじめよう!oza__shuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。