<mxfile host="thecodeclouds.com" agent="hand-built" version="24.0.0" type="device">
<diagram id="subnets" name="LLD 1: subnets and IP plan"><mxGraphModel dx="1400" dy="900" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1500" pageHeight="920" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="c1" value="Low-level design 1: the prod Shared VPC, two regions, and where every address comes from" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=17;fontColor=#232F3E;fontStyle=1;spacing=0;" vertex="1" parent="1"><mxGeometry x="20" y="16" width="1460" height="23" as="geometry"/></mxCell>
<mxCell id="c2" value="&lt;b&gt;Prod Shared VPC  ·  host project net-prod  ·  10.32.0.0/14  ·  global dynamic routing  ·  MTU 1500&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#4285F4;fillColor=#F1F6FE;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=34;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="20" y="60" width="1460" height="680" as="geometry"/></mxCell>
<mxCell id="c3" value="" style="sketch=0;html=1;aspect=fixed;strokeColor=none;fillColor=#5184F3;shape=mxgraph.gcp2.virtual_private_cloud;" vertex="1" parent="1"><mxGeometry x="28" y="65" width="22" height="20" as="geometry"/></mxCell>
<mxCell id="c4" value="Rule: one /16 per region, one /14 per environment, pods from 100.64.0.0/10 kept out of NCC with an export exclude filter" style="text;html=1;whiteSpace=wrap;align=left;verticalAlign=top;fontSize=12;fontColor=#3C4043;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="45" y="105" width="1400" height="18" as="geometry"/></mxCell>
<mxCell id="c5" value="&lt;b&gt;europe-west2 (London)&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=none;strokeWidth=1;dashed=1;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="40" y="150" width="700" height="560" as="geometry"/></mxCell>
<mxCell id="c6" value='&lt;b&gt;gke-nodes  ·  10.32.0.0/20&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;secondary: pods 100.64.0.0/14 (not exported)  ·  services 10.32.16.0/22&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="60" y="195" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r32i0" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.container_engine;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="650" y="213" width="50" height="44.29" as="geometry"/></mxCell>
<mxCell id="c7" value='&lt;b&gt;workloads  ·  10.32.32.0/20&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;VMs, internal load balancer frontends&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="60" y="295" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r32i1" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.compute_engine;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="650" y="313" width="50" height="44.29" as="geometry"/></mxCell>
<mxCell id="c8" value='&lt;b&gt;proxy-only  ·  10.32.48.0/23&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;purpose REGIONAL_MANAGED_PROXY, for internal and regional ALBs&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="60" y="395" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r32i2" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_load_balancing;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="650" y="413" width="50" height="44.29" as="geometry"/></mxCell>
<mxCell id="c9" value='&lt;b&gt;psc  ·  10.32.50.0/24&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;Private Service Connect endpoints and NAT subnet for published services&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="60" y="495" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r32i3" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.gateway;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="655" y="513" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="nat32" value='&lt;b&gt;Cloud NAT + Cloud Router&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;dynamic port allocation, NAT logs on&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_nat;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="70" y="610" width="52" height="46.07" as="geometry"/></mxCell>
<mxCell id="c10" value="reserved for growth: 10.32.64.0/18 and up" style="text;html=1;whiteSpace=wrap;align=right;verticalAlign=top;fontSize=11;fontColor=#5F6368;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="440" y="625" width="280" height="17" as="geometry"/></mxCell>
<mxCell id="c11" value="&lt;b&gt;europe-west3 (Frankfurt)&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=none;strokeWidth=1;dashed=1;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="760" y="150" width="700" height="560" as="geometry"/></mxCell>
<mxCell id="c12" value='&lt;b&gt;gke-nodes  ·  10.33.0.0/20&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;secondary: pods 100.68.0.0/14 (not exported)  ·  services 10.33.16.0/22&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="780" y="195" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r33i0" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.container_engine;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="1370" y="213" width="50" height="44.29" as="geometry"/></mxCell>
<mxCell id="c13" value='&lt;b&gt;workloads  ·  10.33.32.0/20&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;VMs, internal load balancer frontends&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="780" y="295" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r33i1" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.compute_engine;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="1370" y="313" width="50" height="44.29" as="geometry"/></mxCell>
<mxCell id="c14" value='&lt;b&gt;proxy-only  ·  10.33.48.0/23&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;purpose REGIONAL_MANAGED_PROXY, for internal and regional ALBs&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="780" y="395" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r33i2" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_load_balancing;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="1370" y="413" width="50" height="44.29" as="geometry"/></mxCell>
<mxCell id="c15" value='&lt;b&gt;psc  ·  10.33.50.0/24&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;Private Service Connect endpoints and NAT subnet for published services&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#AECBFA;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#1A73E8;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="780" y="495" width="660" height="80" as="geometry"/></mxCell>
<mxCell id="r33i3" value="&lt;b&gt;&lt;/b&gt;" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.gateway;labelPosition=center;verticalLabelPosition=bottom;align=center;verticalAlign=top;" vertex="1" parent="1"><mxGeometry x="1375" y="513" width="44" height="44" as="geometry"/></mxCell>
<mxCell id="nat33" value='&lt;b&gt;Cloud NAT + Cloud Router&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;dynamic port allocation, NAT logs on&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_nat;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="790" y="610" width="52" height="46.07" as="geometry"/></mxCell>
<mxCell id="c16" value="reserved for growth: 10.33.64.0/18 and up" style="text;html=1;whiteSpace=wrap;align=right;verticalAlign=top;fontSize=11;fontColor=#5F6368;fontStyle=0;spacing=0;" vertex="1" parent="1"><mxGeometry x="1160" y="625" width="280" height="17" as="geometry"/></mxCell>
<mxCell id="c17" value="&lt;b&gt;Service projects attached to net-prod&lt;/b&gt;" style="rounded=1;absoluteArcSize=1;arcSize=6;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#F8F9FA;strokeWidth=1;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;spacingTop=-2;" vertex="1" parent="1"><mxGeometry x="20" y="770" width="1460" height="130" as="geometry"/></mxCell>
<mxCell id="iam" value='&lt;b&gt;roles/compute.networkUser&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#5F6368"&gt;granted per subnet, not per project&lt;/font&gt;' style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#5184F3;fontSize=12;fontColor=#3C4043;shape=mxgraph.gcp2.cloud_iam;labelPosition=right;verticalLabelPosition=middle;align=left;verticalAlign=middle;spacingLeft=4;" vertex="1" parent="1"><mxGeometry x="45" y="815" width="52" height="46.07" as="geometry"/></mxCell>
<mxCell id="c18" value='&lt;b&gt;prod-payments&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;uses: gke-nodes (both regions)&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="400" y="805" width="330" height="70" as="geometry"/></mxCell>
<mxCell id="c19" value='&lt;b&gt;prod-orders&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;uses: gke-nodes, workloads&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="760" y="805" width="330" height="70" as="geometry"/></mxCell>
<mxCell id="c20" value='&lt;b&gt;prod-batch&lt;/b&gt;&lt;br&gt;&lt;font style="font-size:10px" color="#545B64"&gt;uses: workloads (europe-west2 only)&lt;/font&gt;' style="rounded=1;arcSize=8;html=1;whiteSpace=wrap;strokeColor=#9AA0A6;fillColor=#FFFFFF;dashed=0;fontSize=12;fontStyle=0;fontColor=#3C4043;align=left;verticalAlign=top;spacingLeft=8;" vertex="1" parent="1"><mxGeometry x="1120" y="805" width="330" height="70" as="geometry"/></mxCell></root></mxGraphModel></diagram>
</mxfile>
