Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Datadog Agent を入れて Cloud Run でサイドカーを利用する ユースケース...

Kento Kimura
December 13, 2023

Datadog Agent を入れて Cloud Run でサイドカーを利用する ユースケースを考える

Kento Kimura

December 13, 2023
Tweet

More Decks by Kento Kimura

Other Decks in Technology

Transcript

  1. 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
  2. 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
  3. 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
  4. 監視エージェント アプリケーションの モニタリング・ロギング・トレーシング OpenTelemetry Collector, Datadog Agent などを追加 して、メトリクス・ログ・トレースを任意のバックエンドにエ クスポートできます。

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

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

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

    • プロキシとアプリケーション間の疎通ポート • DB プロキシに直接外部から疎通できないか 11 引用:「Cloud Run でサイドカーのデプロイが可能に」 https://cloud.google.com/blog/ja/products/serverless/cloud-run-now-supports-multi-container-deployments
  8. 一般的なサイドカーのメリット “Design patterns for container-based distributed systems” • 優先的なリソース(CPU, メモリ)の割り当てによる、低レイテンシの応答と最適化の実現

    • コンテナの単位で責任範囲や所有を分離し、独立したテストをお粉あえる • 複数メインコンテナとサイドカーコンテナの組み合わせによる、機能の再利用 • コンテナの単位で依存関係を分離し、障害による影響を最小限に止める • コンテナの単位でデプロイを分離し、アップグレードやロールバックを独立して行える コンテナの単位に機能や役割を分離することで、 より効率的にアプリケーションの開発・デプロイ・運用・保守・障害対応を行うことができる。 14
  9. Cloud Run のサイドカーのメリット Google Cloud 上のマネージドコンテナであること • GKE Autopilot 以上に利用者の管理範囲を削減し、開発に注力できる

    • k8s の機能や知見を学習する必要が(あまり)なく、自動的スケーリングを Google Cloud に委任できる • GKE, Kubernetes のテスト環境として、Knative を利用した環境を簡単に利用できる 15
  10. 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
  11. 宣伝 個人アドカレやってます🐶🐶 Google Cloud に関連する内容もあるの で、覗いてみてください。 (本日のアウトプットも「Cloud Run で Datadog

    Agent をサイドカーで動かして、どう なったか【裏側】」で執筆中) 「AoTo Advent Calendar 2023」 https://qiita.com/advent-calendar/2023/aoto Qiita@AoTo0330 X@AoToLog_