Slide 1

Slide 1 text

Cloud Service Mesh への 期待が止まらない!! Jagu’e’r クラウドネイティブ分科会 Meetup#15 - Tomonori Hayashi 1

Slide 2

Slide 2 text

Tomonori Hayashi ● NTT コミュニケーションズ イノベーションセンター所属 ○ ノーコード時系列分析ツール「 Node-AI」の開発/運用 ○ ソフトウェアエンジニア ■ Front:TypeScript - React/Next.js ■ Infra:Google Cloud ● Google Cloud Partner Top Engineer 2024 ● Google Cloud All Certifications ● Jagu’e’r との関わり ○ 2022.12 - 人材育成分科会 運営参加 ○ 2024.01 - O11y-SRE 分科会 運営参加 2 @pHaya72 @t_hayashi

Slide 3

Slide 3 text

Node-AI の紹介 ● ノーコードで AI モデルを作成できる WEB アプリケーション ● カードを直感的につなげるだけで 時系列データの前処理から AI モデルの学習・評価までの パイプラインを作成・実行 できる ● 技術スタック ○ TypeScript + React / Next ○ Python + Django ○ C# + ASP.NET Core + SignalR ○ Kubernetes ○ Google Cloud ○ Scikit-learn / Tensorflow / Pytorch 3

Slide 4

Slide 4 text

みなさん Cloud Service Mesh ご存知ですか?

Slide 5

Slide 5 text

Google Cloud Next ‘24 で発表された 5 ※ 引用:https://assets.swoogo.com/uploads/3777201-661713fbb0003.pdf

Slide 6

Slide 6 text

Google Cloud Next ‘24 で発表された 6 ※ 引用:https://assets.swoogo.com/uploads/3777201-661713fbb0003.pdf 世界中のどこからでもサービス管理

Slide 7

Slide 7 text

Google Cloud Next ‘24 で発表された 7 世界中のどこからでもサービス管理 コントロールプレーン・ データプレーンが Google 管理 ※ 引用:https://assets.swoogo.com/uploads/3777201-661713fbb0003.pdf

Slide 8

Slide 8 text

Google Cloud Next ‘24 で発表された 8 世界中のどこからでもサービス管理 コントロールプレーン・ データプレーンが Google 管理 Google Cloud のネットワークやコン ピュートとシームレスに統合可能 ※ 引用:https://assets.swoogo.com/uploads/3777201-661713fbb0003.pdf

Slide 9

Slide 9 text

Google Cloud Next ‘24 で発表された 9 世界中のどこからでもサービス管理 コントロールプレーン・ データプレーンが Google 管理 Google Cloud のネットワークやコン ピュートとシームレスに統合可能 エンタープライズレベルの 巨大なデプロイメントにも対応 ※ 引用:https://assets.swoogo.com/uploads/3777201-661713fbb0003.pdf

Slide 10

Slide 10 text

Google Cloud Next ‘24 で発表された 10 世界中のどこからでもサービス管理 コントロールプレーン・ データプレーンが Google 管理 Google Cloud のネットワークやコン ピュートとシームレスに統合可能 エンタープライズレベルの 巨大なデプロイメントにも対応 ※ 引用:https://assets.swoogo.com/uploads/3777201-661713fbb0003.pdf サービスメッシュって なんだっけ・・・😇

Slide 11

Slide 11 text

サービスメッシュについて 11 サービスメッシュとは? マイクロサービスアーキテクチャの 複雑さ(認証/認可・通信暗号化 etc)を管理して、 信頼性・セキュリティ・可観測性を向上させる 処理レイヤ コントロールプレーン サービスA アプリケーション インスタンス アプリケーション インスタンス サービスB データプレーン データプレーン

Slide 12

Slide 12 text

なぜサービスメッシュなのか? 12 サービスメッシュとは? コントロールプレーン サービスA アプリケーション インスタンス アプリケーション インスタンス サービスB データプレーン データプレーン Ingress Traffic Mesh Traffic Egress Traffic マイクロサービスアーキテクチャの 複雑さ(認証/認可・通信暗号化 etc)を管理して、 信頼性・セキュリティ・可観測性を向上させる 処理レイヤ

Slide 13

Slide 13 text

なぜサービスメッシュなのか? 13 サービスメッシュとは? コントロールプレーン サービスA アプリケーション インスタンス アプリケーション インスタンス サービスB データプレーン データプレーン Ingress Traffic Mesh Traffic Egress Traffic マイクロサービスアーキテクチャの 複雑さ(認証/認可・通信暗号化 etc)を管理して、 信頼性・セキュリティ・可観測性を向上させる 処理レイヤ 1. スケールと信頼性 サービス間のトラフィック管理や負荷分散などの機能提供により アプリケーションのスケーラビリティと信頼性を向上

Slide 14

Slide 14 text

なぜサービスメッシュなのか? 14 サービスメッシュとは? コントロールプレーン サービスA アプリケーション インスタンス アプリケーション インスタンス サービスB データプレーン データプレーン Ingress Traffic Mesh Traffic Egress Traffic マイクロサービスアーキテクチャの 複雑さ(認証/認可・通信暗号化 etc)を管理して、 信頼性・セキュリティ・可観測性を向上させる 処理レイヤ 1. スケールと信頼性 サービス間のトラフィック管理や負荷分散などの機能提供により アプリケーションのスケーラビリティと信頼性を向上 2. セキュリティとポリシー サービス間の通信を保護やアクセス制御の機能提供により ゼロトラストセキュリティを実現

Slide 15

Slide 15 text

なぜサービスメッシュなのか? 15 サービスメッシュとは? コントロールプレーン サービスA アプリケーション インスタンス アプリケーション インスタンス サービスB データプレーン データプレーン Ingress Traffic Mesh Traffic Egress Traffic マイクロサービスアーキテクチャの 複雑さ(認証/認可・通信暗号化 etc)を管理して、 信頼性・セキュリティ・可観測性を向上させる 処理レイヤ 1. スケールと信頼性 サービス間のトラフィック管理や負荷分散などの機能提供により アプリケーションのスケーラビリティと信頼性を向上 2. セキュリティとポリシー サービス間の通信を保護やアクセス制御の機能提供により ゼロトラストセキュリティを実現 3. サービス管理 サービス間の通信に関するテレメトリデータを提供により アプリケーションのパフォーマンスや依存関係を監視

Slide 16

Slide 16 text

Google Cloud のサービスメッシュ 16 Anthos Service Mesh ・Istio ベースのフルマネージドサービス ・ハイブリッド & マルチクラウドに対応 ・プラットフォーム管理者やサービス運用者などのサービスメッ シュに理解が深いユーザーがターゲット Traffic Director ・フルマネージドサービス ・Google Cloud のみ対応 ・ネットワーク管理者など Google Cloud 内に簡単にサービス メッシュを導入したいユーザーがターゲット Anthos Service Mesh コントロールプレーン App A Pod Pod App B Envoy Proxy Envoy Proxy Traffic Director App A インスタンス インスタンス App B (プロキシレス) Envoy Proxy サイドカー コンテナ

Slide 17

Slide 17 text

Google Cloud のサービスメッシュ 17 Anthos Service Mesh ・Istio ベースのフルマネージドサービス ・ハイブリッド & マルチクラウドに対応 ・プラットフォーム管理者やサービス運用者などの サービスメッシュに理解が深いユーザーがターゲット Traffic Director ・フルマネージドサービス ・Google Cloud のみ対応 ・ネットワーク管理者など Google Cloud 内に簡単にサービス メッシュを導入したいユーザーがターゲット Cloud Service Mesh A globally scalable, fully managed, Google platform integrated service mesh for all enterprise 世界中のどこからでもサービス管理 コントロールプレーン・ データプレーンが Google 管理 Google Cloud のネットワークやコン ピュートとシームレスに統合可能 エンタープライズレベルの 巨大なデプロイメントにも対応

Slide 18

Slide 18 text

Cloud Service Mesh への期待① 18 Ambient Mode の提供 ・Istio のデータプレーン実装の新しいアプローチ ・アプリケーションコードを変更することなく導入可能 ・Sidecar Mode と比較してリソース消費の削減や パフォーマンス向上を期待できる コントロールプレーン App A Node Node Proxy App B App A Proxy App B 1. 共有プロキシ 各ノードで軽量なプロキシが共有リソースとして動作 プロキシは L4(TCP/IP) トラフィック管理を担当、透過的に機能 2. オプションの L7 プロキシ L7(HTTP/gRPC) の高度な機能が必要であれば専用のプロキシを追加可能 全てのワークロードに配置しなくてよい

Slide 19

Slide 19 text

Cloud Service Mesh への期待② 19 Ambient Mode の提供 ・Istio のデータプレーン実装の新しいアプローチ ・アプリケーションコードを変更することなく導入可能 ・Sidecar Mode と比較してリソース消費の削減や パフォーマンス向上を期待できる コントロールプレーン App A Node Node Proxy App B App A Proxy App B Cloud Run でのサービスメッシュ構築 ・Google Cloud Next ‘24 の Cloud Run のセッションで  アナウンスがあった ・Cloud Service Mesh によって Cloud Run でサービス   メッシュ構築が可能に

Slide 20

Slide 20 text

Preview での サポートが発表されましたね! ※ 引用:https://cloud.google.com/run/docs/release-notes

Slide 21

Slide 21 text

Cloud Service Mesh × Cloud Run 21 旧 Traffic Director による連携っぽい動きしそう Cloud Run との連携は、 旧 Traffic Director の Envoy プロキシベースのサービスメッシュと HTTP サービスによるセットアップに準拠し ているっぽい ※ 引用:https://cloud.google.com/service-mesh/docs/service-routing/set-up-envoy-http-mesh Cloud Service Mesh とのやりとりするための クライアントサービスがいるっぽい Mesh リソースと HTTP Route リソース の設定情報を流していそう

Slide 22

Slide 22 text

Cloud Service Mesh × Cloud Run 22 チュートリアル的なのを触ってみた Cloud Run サービス以外にも Network Endpoint Group, Backend Service, HTTP Route, Mesh などいくつかのサービスデプロイが必 要だった Cloud Run Service (Backend) Backend Service Network Endpoint Group (Severless) HTTP Route Cloud DNS Cloud Service Mesh Cloud Run Service (Client) curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" "$CLIENT_SERVICE_URL/fortio/fetch/BACKEND_SERVICE_NAME.DOMAIN_NAME"

Slide 23

Slide 23 text

Cloud Service Mesh × Cloud Run 23 サービスメッシュの大枠となるような Mesh リソースの作成 簡単な YAML ファイルを作成して、そのファイルを読み込ませて Mesh リソースを作成する Cloud Run Service (Backend) Backend Service Network Endpoint Group (Severless) HTTP Route Cloud Run Service (Client) curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" "$CLIENT_SERVICE_URL/fortio/fetch/BACKEND_SERVICE_NAME.DOMAIN_NAME" Mesh リソースの作成 mesh.yaml Name: MESH_NAME gcloud network-services meshes import MESH_NAME \ --source=mesh.yaml \ --location=global Cloud DNS Cloud Service Mesh

Slide 24

Slide 24 text

Cloud Service Mesh × Cloud Run 24 Route リソースに Mesh リソースを参照させる 今回はバックエンドが HTTP サービスなので、 Route リソースの中でも HTTP Route リソースを作成して、 Mesh リソース紐付けさせる Cloud Run Service (Backend) Backend Service Network Endpoint Group (Severless) HTTP Route Cloud DNS Cloud Service Mesh Cloud Run Service (Client) curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" "$CLIENT_SERVICE_URL/fortio/fetch/BACKEND_SERVICE_NAME.DOMAIN_NAME" Route リソースで Mesh リソースとの紐付け http_route.yaml name: "DESTINATION_SERVICE_NAME-route" hostnames: - "DESTINATION_SERVICE_NAME.DOMAIN_NAME" meshes: - "projects/PROJECT_NAME/locations/global/meshes/MESH_NAME" rules: - action: destinations: - serviceName: "projects/../locations/…/backendServices/DESTINATION_SERVICE_NAME-REGION" gcloud network-services http-routes import helloworld-http-route \ --source=http_route.yaml \ --location=global

Slide 25

Slide 25 text

Cloud Service Mesh のコンソール画面 25 ● コンソールの Cloud Service Mesh(Traffic Director) の項目から見えるのは Backend Service を中心とした 情報 ● Mesh リソースに紐づいている Route リソースには複 数の Backend Service リソースを紐付けられる → 複数の Cloud Run サービスでサービスメッシュを 構築できる(ぽい) Backend Service リソース名 Network Endpoint Group リソース名 Route リソース名 Mesh リソース名

Slide 26

Slide 26 text

チュートリアルで確認できたメリット 26 Cloud Run Service で認証ありで通信が可能になる 従来リクエストをいじったりしないと認証ありで通信できないが サービスメッシュを構築することでコード変更なく認証ありでセキュアになる Cloud Run Service (Backend) Backend Service Network Endpoint Group (Severless) HTTP Route Cloud DNS Cloud Service Mesh Cloud Run Service (Client) 認証ありにできる

Slide 27

Slide 27 text

チュートリアルで確認できたメリット 27 サービスメッシュに参加していれば全て認証ありにできそう? Client 経由のリクエストは認証ありの Backend-a, Backend-b にそれぞれ通る しかし、Backend-a から Backend-b に対するリクエストは弾かれた Cloud Run Service (Backend-a) Backend Service Network Endpoint Group (Severless) HTTP Route Cloud DNS Cloud Service Mesh Cloud Run Service (Client) 認証あり Backend Service Cloud Run Service (Backend-b) Network Endpoint Group (Severless) 認証あり まだまだ理解が足りない!!

Slide 28

Slide 28 text

リリースノートの 記載通りの結果ではある ※ 引用:https://cloud.google.com/run/docs/release-notes

Slide 29

Slide 29 text

まとめ Cloud Service Mesh を活用してコード変更なくサービスメッシュを構築できる ● 期待ポイント ○ GKE でサービスメッシュを構築する際の Ambient Mode の提供 ○ Cloud Run でサービスメッシュを構築できる Cloud Run でサービスメッシュをサポート!( Preview) ● 実際にやってみると旧 Traffic Director によるサービスメッシュ構築を踏襲 ● コード変更なく認証ありで通信できる まだまだ理解足りていないので後日ブログを書こうと思います!!

Slide 30

Slide 30 text

CREDITS: This presentation template was created by Slidesgo, and includes icons by Flaticon, and infographics & images by Freepik Thanks! 30 @pHaya72 @t_hayashi