Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
酸いも甘いもある Shared VPC(共有VPC) ~ GKE を Shared VPC で...
Search
Annosuke Yokoo
February 22, 2024
Technology
380
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
酸いも甘いもある Shared VPC(共有VPC) ~ GKE を Shared VPC で構築する際の苦悩 ~
Annosuke Yokoo
February 22, 2024
More Decks by Annosuke Yokoo
See All by Annosuke Yokoo
SRE は AI に何を任せるべきか。Plaid が Datadog で出した答え / what -should-SREs-delegate-to-AI? Plaid’s-answer-powered-by-Datadog
parupappa2929
0
62
Bits AI SRE と Datadog MCP Server による未来 / datadog-bits-ai-sre-and-mcp-server-feature
parupappa2929
1
730
Datadog GPU Monitoring で実現する GPU 監視 / datadog-gpu-monitoring
parupappa2929
0
73
Datadog による AI エージェント オブザーバビリティの最前線 / Datadog-AI-Agent-observability
parupappa2929
1
720
今日から始める CI/CD Observability / CICD Observability for Google Cloud
parupappa2929
0
76
Software Delivery Observability ~ CI・CD , DORA metrics も Datadog で可視化しよう ~ / datadog-ci-cd-observability
parupappa2929
0
910
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
940
持続可能なプラットフォーム目指す、Platform Engineering 支援 / Enabling Platform Engineering
parupappa2929
0
170
Why adopt GitOps with ArgoCD ?
parupappa2929
0
230
Other Decks in Technology
See All in Technology
2026-09-11 【Snowflake World Tour Tokyo 2026】Snowflakeを起点に、AI Agentが自律稼働し続ける未来へ / Driving AI Agents with Snowflake
civitaspo
0
400
生成AIエージェントを用いた、 手動テスト手順書から自動テストへの 変換手法の検討
magicpod
0
160
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
920
「守り」で活用するオンデバイスLLM 〜写ってはいけないを総力戦で防ぐ〜 / iOSDC Japan 2026
nakamuuu
0
160
AI に書かせたその API、 “信頼” できますか?
nagix
0
110
HHKBエバンジェリストになる方法
941
0
100
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
200
OpenTelemetryのメトリクスをCloudWatchに送ってPromQLで見てみた
ota1022
0
150
Claude Code本って、 読む必要あるの?
oikon48
2
460
Reactの設計論
uhyo
24
13k
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
320
品質と信頼性を地続きにする
grimoh
0
380
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
How to Talk to Developers About Accessibility
jct
2
550
Are puppies a ranking factor?
jonoalderson
2
3.9k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
800
Designing Powerful Visuals for Engaging Learning
tmiket
1
550
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Code Reviewing Like a Champion
maltzj
528
40k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Everyday Curiosity
cassininazir
0
320
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
280
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
RailsConf 2023
tenderlove
30
1.5k
Transcript
🍠 酸いも甘いもある Shared VPC(共有VPC) GKE Autopilot を Shared VPC で構築する際の苦悩
Copyright © 3-shake, Inc. All Rights Reserved. 2024/2/22 【Google Cloud】GDG Tokyo Monthly Online Tech Talks - @866mfs
Whoami 前職では、AWS をメインとしたクラウドインフラ構築支援を実施する中で、2023 Japan AWS Jr.Champions も受賞 スリーシェイクに SRE として
Join 後は Google Cloud や Kubernetes を中心としたアプリケー ションインフラの構築・運用を通して、カルチャー変革を含む Cloud Native な SRE 支援を実践中 Google Cloud の公式 User Community である「 Jagu'e'r 」の運営リードもしています Annosuke Yokoo 3-shake, inc (@866mfs)
Agenda 01. Shared VPC 02. Google Kubernetes Engine - Autopilot
03. GKE を Shared VPC 環境で構築する際の技術的奮闘 04. まとめ
おことわり 超ニッチな内容です! なので、今後誰も使わないかもしれませんが温か い目で見ていただき、使う時に頭の片隅から引き 出してください🙏
Shared VPC (共有VPC) 01 Copyright © 3-shake, Inc. All Rights
Reserved.
Shared VPC https://cloud.google.com/vpc/docs/shared-vpc?hl=ja#use_cases Google CloudのShared VPCを所有するプロジェクトを ホストプロジェクト、Shared VPC を利用するプロジェク トをサービスプロジェクトと呼ぶ
Shared VPCを使用することで、ホストプロジェクトから 複数のサービスプロジェクトへのネットワークリソース の共有が可能となり、リソースの集中管理が実現でき る
Shared VPC のユースケース https://cloud.google.com/vpc/docs/shared-vpc?hl=ja#use_cases Shared VPCは、特に大規模な組織(エンプラ組織) や複数のチームが関与するプロジェクトでその価値 を発揮 例: 複数の開発チームが異なるプロジェクトを担当して
いるが、全てのチームが共通のネットワークリソース (サブネット、IPアドレス範囲、ファイアウォールルー ルなど)にアクセスする必要がある場合
アーキテクチャユースケース • Google Cloud 上に新規に構築する • モノリシックなアプリケーション ◦ 迅速に実現するという観点から Micro
Service ではなく、汎用的かつシンプルな(ユニバーサル)モノリシック Web アプリケーションアーキテクチャを想定 • Cloud Native な特性を持つアーキテクチャを目指すべく、コアとする Workload には Contaier ベースのものを選択 肢とする • ホストプロジェクトは IaC 化されていない
アーキテクチャ構成図 Simple Web Application on Containers in Google Cloud
構築範囲 ネットワーク管理者(ネットワークチーム)
Google Kubernetes Engine - Autopilot 02 Copyright © 3-shake, Inc.
All Rights Reserved.
Google Kubernetes Engine - Standard Google Cloud マネージドの Kubernetes 環境
• Kubernetes 運用のベストプラクティスをマネージド サービスとして提供 • アップグレードやバックアップと復元など、完全に自動 化されたクラスタライフサイクル管理 • ノードの自動プロビジョニング • ワークロードを簡単に移行できる自動ツール • Google Cloud の各種サービスと統合されている
Google Kubernetes Engine - Autopilot • Control plane に加えて Node
も完全マネージドな Kubernetes クラスタ • Workload ベースの考え方( Pod 単位の課金 / Pod 単 位の SLA ) • 本番ワークロードに適したベストプラクティスがデフォル ト構成 • GKE の良さを踏襲しつつ、より運用レスを実現できる
Node も完全マネージドな状態とは? これまで行っていた Node の運用を意識しない • ワークロードの Toleration の設定 •
ワークロードに合わせたノードの プロビジョニング • ノードのハードウェア定義からノード Taint の構成と適用 • Node の作成、更新、削除は自動 • バージョンアップグレードも自動 ユーザーは、より Kubernetes の中の世界に集中 することが可能に!
GKE Autopilot は制約もある (組み込みのセキュリティが充実しているという言い方もできるが ...) • Privileged pod(特権コンテナ) は利用出来ない •
GKE がノードを管理するため hostNetwork は利用出来ない • hostPath は /var/log 配下のみ許可 • Node の sysctl / kubelet のパラメーターチューニングは出来ない • Node への SSH アクセスをブロック • Mutating Admission webhook は一部使えない , etc. 詳細は公式ドキュメント
GKE Autopilot は制約もある Node の作成、スケール、削除には従来の GKE が備えている、 Cluster autoscaler (CA)
と Node auto provisioning (NAP) を使用 詳しくはこちらで解説されている Node の作成、削除は Pod のスケジューリングに依存している • 余剰の Node を予め用意しておいてスパイクに備えるということは基本出来ない • Node 上にスペースを作りにくいため、Pod の水平スケールと同時に Node のス ケールが走りやすい ◦ 特にバージョン 1.28 より前の GKE の場合、Node あたりの Pod 数の上 限は 32 個となっているため Node のスケールが多くなることも Horizontal Pod Autoscaler (HPA) Cluster Autoscaler (CA) Node Auto Provisioning (NAP)
GKE Autopilot - Scaling workaround Balloon pods • 余剰のノードを予め用意しておいて、ノードのスケールを発生せずに Pod
をス ケジュールする https://wdenniss.com/gke-autopilot-spare-capacity イメージストリーミング • コンテナイメージをリモートのファイルシステムから Lazy-pulling でダウンロード して Pod の起動時間を高速化する https://cloud.google.com/kubernetes-engine/docs/how-to/image-streaming?hl=ja Pod や Node を事前にスケールする • トラフィックが増えるタイミングが予測可能な場合、事前に Pod のスケールを増 やすことで Node のスケールを行う https://cloud.google.com/kubernetes-engine/docs/tutorials/reducing-costs-by-scaling- down-gke-off-hours?hl=ja 01 02 03
GKEをShared VPC環境で構築する際の技術的奮闘 03 Copyright © 3-shake, Inc. All Rights Reserved.
VPC Service Controlsによる制限 https://cloud.google.com/vpc-service-controls/docs/overview?hl=ja VPC - SC(Service Controls) 境界外プロジェクトからの API
アクセスをブロックする Shared VPC の場合だと・・・ ホストプロジェクトとサービスプロジェクトを同じ境界にいれる必 要がある ホストプロジェクトでの作業になるため、ネットワーク管理者に 依頼が必要😔
サービス アカウントの権限借用 サービス アカウントによる認証は、以下2つの方法 サービス アカウント キー • キーを持つユーザーなら誰でもサービス アカウントを使って認証
を受けれてしまう • それを回避するために、定期的ローテーションでキーを管理し、 API キーの制限を追加する必要がある サービス アカウントの権限借用 • サービス アカウント キーへのアクセスは不要で、代わりに IAM 権 限を使用して、サービス アカウントの使用を承認 • ユーザー アカウントに与える権限を減らすことが可能 • ユーザーがサービス アカウントにアクセスする必要がなくなった ら、IAM で、そのサービス アカウントのリソースからユーザー ID を 削除するだけ • AWS でいうと Assume Role のイメージ https://blog.g-gen.co.jp/entry/using-google-cloud-service-account-impersonation
サービス アカウントの権限借用 - terraform
GKE 用のサブネット設計 https://cloud.google.com/blog/ja/products/containers-kubernetes/ip-address-management-in-gke ※ GKE Autopilot(GKE: v1.27までは)では、NodeあたりのPod数の上限が32となっているため、 Standardモードより も広いCIDRが必要となるので設計に注意 https://cloud.google.com/kubernetes-engine/docs/how-to/flexible-pod-cidr?hl=ja#cidr_settings_for_clusters
TIPS : 不連続マルチPod CIDR https://cloud.google.com/kubernetes-engine/docs/how-to/multi-pod-cidr?hl=ja#how_discontiguous_multi-pod_cidr_works CIDRの拡張 • SecondaryのIPが足らなければ、不連続マルチ Pod CIDRを使い、Node
レベルで必要なIPアドレス を拡張する • ちなみに、ServiceレベルのCIDR拡張はKubernetes 1.29 でアルファ機能として搭載されている ◦ APIs to manage IP address ranges for Services (SIG Network) {#ip-address-range-apis}
他にも GKE で考慮すべきこと https://cloud.google.com/kubernetes-engine/docs/how-to/multi-pod-cidr?hl=ja#how_discontiguous_multi-pod_cidr_works ホストプロジェクトでFirewall Ruleを設定しないとGKE Nodeに対するヘルスチェックが通らない デフォルトFirewallルールでは、サービスプロジェクトに所属するGKEノードへのFirewallルールが許可されていないた め、ホストプロジェクトにFirewallルールを作成(こちらもネットワーク管理者への依頼が必要) 限定公開クラスタのPodのインターネット接続には、ホストプロジェクト内にCloud
Natが必要 NodeのサブネットをホストプロジェクトのCloud Natのマッピングに含める必要がある 例えば、Docker Hubなど外部のレジストリからDockerコンテナを取得できるようにCloud NATの対象サブネットにノード のサブネットを追加(こちらもネットワーク管理者への依頼が必要) ip-masq-agent でSNATされるサブネットを設定する FWルールの関係でPodのIPではなくNodeのIPにNATする必要がある場合の設定 デフォルトでip-masq-agentがデプロイされていてNoSNATにいろいろ入っているため、必要に応じて削除
まとめ 04 Copyright © 3-shake, Inc. All Rights Reserved.
まとめ • Shared VPCでGKEを構築する際には、さまざまな考慮すべき事項(苦悩)がある • 特にネットワークを共有する GKE では、ホストプロジェクト ↔ サービスプロジェクト
で考えることが多い ◦ ここにサイロ化された組織だとコミュケーションコストや調整コストが乗ってきて単純な構築よりも負担がかかる • ネットワークリソースの一元管理やサイロ化された組織での運用には合致している点もありますが、構築おける一定の 奮闘も必要であるということを理解した上で、取り組む必要がある • そうはいっても、組織・サービスが多くなればなるほど Shared VPC による効果は大きい
Thank you Copyright © 3-shake, Inc. All Rights Reserved.