Slide 1

Slide 1 text

Datadog Agent を入れて Cloud Run でサイドカーを利用する ユースケースを考える 13th Dec, Jagu'e'r Cloud Native Subcommittee #12 Kento Kimura

Slide 2

Slide 2 text

Self-Introduction ● 所属:Technical Solutions / Sales Engineer ● 担当:パブリッククラウドのアーキテクト知識を活かした  Datadog のプリセールス技術支援 ● 資格:Google Cloud 全 11 資格、AWS 全 12 資格、Azure 13 資格 ● 表彰:Google Cloud Partner Top Engineer 2023-24 2022-23 APN All AWS Certifications Engineer 2023 Japan AWS Jr.Champion Jagu'e'r Award 2023 優秀賞 木村 健人 (Kento Kimura) Datadog Japan GK Technical Solutions Sales Engineering History データセンター運用保守 → パブリッククラウド技術支援 → プリセールス技術支援 Community Jagu’e’r デジクラ人材育成分科会 運営リード o11y-SRE 分科会 運営メンバー TechWriters 分科会 運営メンバー Partner Top Engineer 2023 Partner Top Engineer 2024

Slide 3

Slide 3 text

アジェンダ 1 概要 2 ユースケース 3 メリット 4 まとめ

Slide 4

Slide 4 text

4 概要

Slide 5

Slide 5 text

Cloud Run のサイドカー機能 2023年5月12日にパブリックプレビューが発表 2023年11月13日に GAが発表 機能:1つのCloud Run インスタンスに対し、    複数のコンテナを実行できる。    それぞれのコンテナは互いに    同一の namespace を共有するため、    localhost で疎通できる。    共有インメモリボリュームでコンテナ間の    ファイル共有も可能で 5 引用:「Cloud Run でサイドカーのデプロイが可能に」 https://cloud.google.com/blog/ja/products/serverless/cloud-run-now-supports-multi-container-deployments

Slide 6

Slide 6 text

Cloud Run のサイドカー機能 「Cloud Run で Datadog Agent をサイドカーとして動かす」2023/5/22 サイドカーに監視エージェントを配置する ユースケースについて、技術検証結果と 推奨設定をわかりやすくまとめました。 ● Cpu-throttling で各コンテナに CPU が常に割り当てられる ● container-dependencies でDatadog Agent の起動後に アプリケーションとトレーサーが起動する 6 Cloud Run Instance Python App Datadog Agent :8080 :8126 :443 引用:「Cloud Run で Datadog Agent をサイドカーとして動かす」 https://qiita.com/AoTo0330/items/35a840462f219596e39d

Slide 7

Slide 7 text

7 ユースケース

Slide 8

Slide 8 text

監視エージェント アプリケーションの モニタリング・ロギング・トレーシング OpenTelemetry Collector, Datadog Agent などを追加 して、メトリクス・ログ・トレースを任意のバックエンドにエ クスポートできます。 注意点 ● 監視エージェントが常に起動しているか ● 監視エージェントに常にリソースが割り当てられて いるか 8 引用:「Cloud Run でサイドカーのデプロイが可能に」 https://cloud.google.com/blog/ja/products/serverless/cloud-run-now-supports-multi-container-deployments

Slide 9

Slide 9 text

プロキシ アプリケーションの通信をプロキシ Nginx, Apache などのプロキシコンテナを用意すること で、リクエストを適切なエンドポイントへ転送し、負荷分散 やレスポンスの高速化、セキュリティの向上を実現できま す。 注意点 ● アプリケーションへ直接外部から通信できないか ● プロキシとアプリケーション間の疎通ポート 9 引用:「Cloud Run でサイドカーのデプロイが可能に」 https://cloud.google.com/blog/ja/products/serverless/cloud-run-now-supports-multi-container-deployments

Slide 10

Slide 10 text

ネットワークとセキュリティ プロキシ・サービスメッシュ Envoy, Istio, Linkerd などのプロキシ・サービスメッシュを 利用して、高度なトラフィックルーティングやフィルタリング を行うことで、アプリケーションの通信を分離することがで きます。 注意点 ● アプリケーションへ直接外部から通信できないか ● レイテンシーの増加を考慮する ● リソース使用量の増加を考慮する 10 引用:「Cloud Run でサイドカーのデプロイが可能に」 https://cloud.google.com/blog/ja/products/serverless/cloud-run-now-supports-multi-container-deployments

Slide 11

Slide 11 text

データベース接続用プロキシ クライアントプロキシ CloudSQL, AlloyDB などのデータベース接続用プロキ シを実行し、安全性の高い接続や IAM ベースの認証を 導入し、接続をセキュアに安定させることができます。 注意点 ● プロキシとアプリケーション間の疎通ポート ● DB プロキシに直接外部から疎通できないか 11 引用:「Cloud Run でサイドカーのデプロイが可能に」 https://cloud.google.com/blog/ja/products/serverless/cloud-run-now-supports-multi-container-deployments

Slide 12

Slide 12 text

+1 アプリケーションの分離 対外的実装アプリケーション マイクロサービスの設計原則に基づいて、アプリケー ションの実装をコンテナの単位に分離することができま す。 従来は k8s を前提としていた実装が、Cloud Run でも 実現可能になりました。 注意点 ● スケールアウトが同時に行われる ● 10コンテナ制限(Ingress コンテナを含む) 12 Application

Slide 13

Slide 13 text

13 メリット

Slide 14

Slide 14 text

一般的なサイドカーのメリット “Design patterns for container-based distributed systems” • 優先的なリソース(CPU, メモリ)の割り当てによる、低レイテンシの応答と最適化の実現 • コンテナの単位で責任範囲や所有を分離し、独立したテストをお粉あえる • 複数メインコンテナとサイドカーコンテナの組み合わせによる、機能の再利用 • コンテナの単位で依存関係を分離し、障害による影響を最小限に止める • コンテナの単位でデプロイを分離し、アップグレードやロールバックを独立して行える コンテナの単位に機能や役割を分離することで、 より効率的にアプリケーションの開発・デプロイ・運用・保守・障害対応を行うことができる。 14

Slide 15

Slide 15 text

Cloud Run のサイドカーのメリット Google Cloud 上のマネージドコンテナであること ● GKE Autopilot 以上に利用者の管理範囲を削減し、開発に注力できる ● k8s の機能や知見を学習する必要が(あまり)なく、自動的スケーリングを Google Cloud に委任できる ● GKE, Kubernetes のテスト環境として、Knative を利用した環境を簡単に利用できる 15

Slide 16

Slide 16 text

GKE からの yaml ファイルの変更 apiVersion: apps/v1 kind: Deployment metadata:  name: k8s-to-run  namespace: default  labels:   app: k8s-to-run  spec:   template:    metadata:    labels:     app: k8s-to-run    spec:     containers: - image: gcr.io/cloudrun/hello env: - name: HELLO value: world - image: gcr.io/cloudrun/sidecar env: - name: HELLO value: sidecar     volumes: - name: VOLUME_NAME emptyDir: sizeLimit: SIZE_LIMIT medium: Memory apiVersion: serving.knative.dev/v1 kind: Service metadata:  name: k8s-to-run  namespace: ‘PROJECT_NUMBER’  labels:   app: k8s-to-run  spec:   template:    metadata:    labels:     app: k8s-to-run    spec:     containers: - image: gcr.io/cloudrun/hello env: - name: HELLO value: world - image: gcr.io/cloudrun/sidecar env: - name: HELLO value: sidecar     volumes: - name: VOLUME_NAME emptyDir: sizeLimit: SIZE_LIMIT medium: Memory 16

Slide 17

Slide 17 text

17 まとめ

Slide 18

Slide 18 text

まとめ ● Cloud Run のマルチコンテナ機能=サイドカー機能は、パブリックプレビューの段階から 注目されてきた有用な機能 ● Kubernetes の学習・管理コストから解放されて、サービスのテストから始まり 詳細な要件がないアプリケーションの柔軟なスケーリングを Google Cloud に委任できる ● 現在のマルチコンテナの制限数は Ingress コンテナを含めて10個 ● ちなみに Datadog の公式の対応はまだです…🐶

Slide 19

Slide 19 text

宣伝 個人アドカレやってます🐶🐶 Google Cloud に関連する内容もあるの で、覗いてみてください。 (本日のアウトプットも「Cloud Run で Datadog Agent をサイドカーで動かして、どう なったか【裏側】」で執筆中) 「AoTo Advent Calendar 2023」 https://qiita.com/advent-calendar/2023/aoto Qiita@AoTo0330 X@AoToLog_

Slide 20

Slide 20 text

Thank you