Save 37% off PRO during our Black Friday Sale! »

20210827 Future Tech Night

02f940926caaa16d4657150117fc6438?s=47 Taisei Ito
August 27, 2021

20210827 Future Tech Night

02f940926caaa16d4657150117fc6438?s=128

Taisei Ito

August 27, 2021
Tweet

Transcript

  1. 21/8/27 Fri. Taisei Ito GCPのサーバーレスサービスを 利用したWebアプリ開発 Copyright © 2021 by

    Future Corporation
  2. Copyright © 2021 by Future Corporation 自己紹介 • 伊藤太斉(たいせい) @kaedemalu

    ◦ 2019年9月中途入社(社会人4年目) ◦ Technology Innovation Group所属 ◦ 技術ブログの中の人 • 技術領域 ◦ GCP, AWS, IaC(Terraform, Ansible) • コミュニティ ◦ GCPUG Shonan Staff ◦ CloudNative Days Committee
  3. Agenda • 技術選定 • Serverless NEGの利用 • Serverless VPC Access

    • ハマったポイント Copyright © 2021 by Future Corporation
  4. 概ねの方針 • 運用を楽に(≒管理コストをほぼ0にしたい) ◦ インフラの管理からの開放 ◦ リリースフローからの開放 • セキュリティはしっかり担保したい Copyright

    © 2021 by Future Corporation
  5. 目指すゴール Copyright © 2021 by Future Corporation

  6. はじめに 1 • 技術選定とアーキテクチャ

  7. アーキテクチャ Copyright © 2021 by Future Corporation

  8. 利用サービスの選定 • コンテナですでに開発されている • リクエストが多くない • インフラの管理を極力減らしたい Copyright © 2021

    by Future Corporation Compute Compute Engine Cloud Functions Container- Optimized OS Cloud Run Kubernetes Engine App Engine
  9. 利用サービスの選定 • コンテナですでに開発されている • リクエストが多くない • インフラの管理を極力減らしたい Copyright © 2021

    by Future Corporation Compute Compute Engine Cloud Functions Container- Optimized OS Cloud Run Kubernetes Engine App Engine
  10. 利用サービスの選定 • コンテナですでに開発されている • リクエストが多くない • インフラの管理を極力減らしたい Copyright © 2021

    by Future Corporation Compute Compute Engine Cloud Functions Container- Optimized OS Cloud Run Kubernetes Engine App Engine
  11. 利用サービスの選定 • コンテナですでに開発されている • リクエストが多くない • インフラの管理を極力減らしたい Copyright © 2021

    by Future Corporation Compute Compute Engine Cloud Functions Container- Optimized OS Cloud Run Kubernetes Engine App Engine
  12. 利用サービスの選定 • コンテナですでに開発されている • リクエストが多くない • インフラの管理を極力減らしたい • アプリは3000ポートでリッスンしたい Copyright

    © 2021 by Future Corporation Compute Compute Engine Cloud Functions Container- Optimized OS Cloud Run Kubernetes Engine App Engine
  13. 選ばれたのは、Cloud Runでした🎉 Copyright © 2021 by Future Corporation あと、新しいもの使いたいじゃない?

  14. アーキテクチャ Copyright © 2021 by Future Corporation

  15. Serverless NEGの活用 2

  16. Serverless Network Endpoint Group(NEG) • 2020/10にGAになったサーバーレスサービス向けのNEG ◦ eg. App Engine,

    Cloud Run, Cloud Functions • サーバーレスサービスを抽象化して、ロードバランサーと 組み合わせることを目的としている Copyright © 2021 by Future Corporation 参考:https://medium.com/google-cloud-jp/serverless-neg-でシステム開発をより柔軟に-4f9cebd2780f
  17. 実際に使う Copyright © 2021 by Future Corporation

  18. Cloud Runを設定する • Cloud Runの実際に作成する ◦ コンテナが利用する環境変数 ◦ シークレット ◦

    専用のサービスアカウント Copyright © 2021 by Future Corporation
  19. GitOpsしよう • Cloud Runの画面からCloud Buildを作成する Copyright © 2021 by Future

    Corporation
  20. NEGの追加まで • 前ページで作成したCloud Run向けのNEGを作成する →LBのバックエンドサービスになる • HTTPSリクエストを受け付けるLBを作成する Copyright © 2021

    by Future Corporation
  21. サーバーレスVPCコネクタ 3

  22. サーバーレスVPCコネクタ • サーバーレスサービスがVPCに直接接続するときに利用 ◦ Cloud RunやApp Engineが内部IP経由でアクセスできる (VPC内部のサービスを公開しなくても良い) • 他のVPCと接続(e.g.

    VPC Peering)している場合も接続先の リソースまでアクセスできる Copyright © 2021 by Future Corporation 参考:https://cloud.google.com/vpc/docs/serverless-vpc-access?hl=ja
  23. 再)アーキテクチャ Copyright © 2021 by Future Corporation

  24. 実際に使う Copyright © 2021 by Future Corporation

  25. 作成する • /28のサブネットを作成する • サーバーレスVPCコネクタを作成する • コネクタで稼働するインスタンスのスペックを決定する Copyright © 2021

    by Future Corporation 参考:https://cloud.google.com/vpc/docs/serverless-vpc-access?hl=ja
  26. 作成する Copyright © 2021 by Future Corporation 参考:https://cloud.google.com/vpc/docs/serverless-vpc-access?hl=ja

  27. 完成品(?) • 出来上がった!! Copyright © 2021 by Future Corporation

  28. でもこれでは繋がらない Copyright © 2021 by Future Corporation

  29. Shared VPC利用のハマり 4

  30. サービスアカウントにハマる • Cloud Run作成時に「Cloud Runサービスエージェント」の ロールが付けられたサービスアカウントがこっそり作成される e.g.) service-PROJECT_ID@serverless-robot-prod.iam.gserviceaccount.com • ↑のサービスアカウントをShared

    VPCのホストプロジェクトで 「サーバーレスVPCアクセスユーザー」を付与する Copyright © 2021 by Future Corporation 参考:https://cloud.google.com/run/docs/configuring/service-accounts?hl=ja
  31. Cloud Runのエラー Cloud Run error: Container failed to start. Failed

    to start and then listen on the port defined by the PORT environment variable. Logs for this revision might contain more information. Copyright © 2021 by Future Corporation 参考:https://cloud.google.com/run/docs/configuring/service-accounts?hl=ja • Runがポートをリッスンできない →あくまで「結果的に」リッスンできないだけ Cloud Loggingを見にいくと原因がしっかり出力されている
  32. まとめ Copyright © 2021 by Future Corporation

  33. 完成品! Copyright © 2021 by Future Corporation

  34. おわり Copyright © 2021 by Future Corporation