-
Notifications
You must be signed in to change notification settings - Fork 101
Add blog better-support-for-byo-infrastructure-on-aws #1051
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| --- | ||
| title: "Better Support for BYO Infrastructure on AWS" | ||
| linkTitle: "Better Support for BYO Infrastructure on AWS" | ||
| newsSubtitle: August 19, 2026 | ||
| publishdate: 2026-08-19 | ||
| authors: | ||
| - avatar: https://avatars.githubusercontent.com/hebelsan | ||
| login: hebelsan | ||
| name: Alexander Hebel | ||
| tags: | ||
| - feature-announcement | ||
| - extensions | ||
| - provider-aws | ||
| - networking | ||
| aliases: ["/blog/2026/08/19/better-support-for-byo-infrastructure-on-aws"] | ||
| --- | ||
|
|
||
| Many organizations running Gardener on AWS already have established cloud infrastructure — VPCs, subnets, route tables, and security groups — managed independently through their own IaC tooling or centrally by a platform team. Until now, Gardener's AWS provider extension assumed full ownership of networking infrastructure, creating NAT gateways, route tables, and security groups as part of each shoot lifecycle. This worked well for greenfield deployments but left little room for organizations with pre-existing infrastructure. | ||
|
|
||
| Gardener v1.149 introduces improved Bring Your Own (BYO) infrastructure support for AWS, letting operators deploy shoot clusters into existing subnets and integrate with infrastructure components they already manage. | ||
|
|
||
| ## What's New | ||
|
|
||
| The extension now supports deploying shoots into **pre-existing subnets** rather than always creating new ones. This means worker nodes can be placed in subnets already connected to the organization's network topology — including custom transit gateway attachments, VPC peering, and firewall rules. | ||
|
|
||
| Beyond subnets, operators can now configure: | ||
|
|
||
| - **User-managed route tables** — instead of Gardener creating and managing route tables, you can reference existing ones, allowing full control over how traffic is routed. This is particularly useful for directing egress through centralized firewalls, transit gateways, or VPN gateways. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
file='website/blog/2026/08/08-19-better-support-for-byo-infrastructure-on-aws.md'
printf '%s\n' '--- target article ---'
sed -n '1,90p' "$file"
printf '%s\n' '--- related BYO VPC references ---'
rg -n -i -C 3 'custom default route|route table|NAT gateway|BYO VPC|security group|pod-CIDR|aws-custom-route-controller' . \
-g '!node_modules' -g '!build' -g '!dist' | head -n 300Repository: gardener/documentation Length of output: 50378 🌐 Web query:
💡 Result: Pull Request Citations:
🌐 Web query:
💡 Result: There is no widely recognized official AWS tool or documented service named aws-custom-route-controller. It is possible this term refers to a custom-developed automation script, a specific third-party Kubernetes controller, or an internal tool used within a particular ecosystem like Gardener. In a Bring-Your-Own (BYO) VPC scenario on AWS, managing NAT Gateways and route tables typically involves standard AWS networking practices [1]. When you bring your own VPC, you must manually ensure that your NAT Gateway is deployed in a public subnet with an associated Elastic IP [1]. To allow instances in private subnets to reach the internet, you must create a route table for those subnets and add a route that directs traffic destined for 0.0.0.0/0 to the NAT Gateway ID [1]. If you are using tools like Gardener to manage infrastructure, they may provide extensions or controllers that automate these networking tasks for BYO VPCs, but these are specific to those platforms rather than being general AWS services [1]. Citations: 🏁 Script executed: #!/bin/bash
set -eu
urls=(
'https://raw.githubusercontent.com/gardener/gardener-extension-provider-aws/master/docs/usage/bring-your-own-vpc.md'
'https://raw.githubusercontent.com/gardener/gardener-extension-provider-aws/master/docs/proposals/flexible-network-configuration.md'
)
for url in "${urls[@]}"; do
printf '\n--- %s ---\n' "$url"
curl -fsSL "$url" | rg -n -i -C 4 'route|NAT|gateway|subnet|security.?group|overlay|pod.?CIDR|custom' | head -n 220
done
printf '\n--- PR 1741 metadata and changed-file names ---\n'
curl -fsSL 'https://api.github.com/repos/gardener/gardener-extension-provider-aws/pulls/1741' |
jq '{state,title,merged_at,base:.base.ref,head:.head.ref,body}'
curl -fsSL 'https://api.github.com/repos/gardener/gardener-extension-provider-aws/pulls/1741/files?per_page=100' |
jq -r '.[] | .filename'Repository: gardener/documentation Length of output: 31335 🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- PR merge commit ---'
curl -fsSL 'https://api.github.com/repos/gardener/gardener-extension-provider-aws/pulls/1741' |
jq -r '.merge_commit_sha'
merge_sha="$(curl -fsSL 'https://api.github.com/repos/gardener/gardener-extension-provider-aws/pulls/1741' | jq -r '.merge_commit_sha')"
printf '%s\n' '--- route/default/NAT references in the PR diff ---'
curl -fsSL 'https://api.github.com/repos/gardener/gardener-extension-provider-aws/pulls/1741/files?per_page=100' |
jq -r '.[] | select(.patch != null) | "\(.filename)\n\(.patch)"' |
rg -n -i -C 5 'custom.?route|default route|route table|NAT|gateway|workersSubnetID|nodesSecurityGroupID|overlay' | head -n 350
printf '%s\n' '--- exact PR documentation sections ---'
for path in docs/usage/bring-your-own-vpc.md docs/proposals/flexible-network-configuration.md; do
printf '\n--- %s ---\n' "$path"
curl -fsSL "https://raw.githubusercontent.com/gardener/gardener-extension-provider-aws/$merge_sha/$path" |
sed -n '1,180p'
doneRepository: gardener/documentation Length of output: 43218 Describe BYO routing and NAT behavior accurately. In BYO mode, the 🤖 Prompt for AI Agents |
||
| - **Custom security groups** — attach pre-existing security groups to shoot worker nodes, enabling consistent enforcement of your organization's security policies across Gardener-managed and self-managed workloads. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
printf '%s\n' '--- article ---'
sed -n '1,80p' website/blog/2026/08/08-19-better-support-for-byo-infrastructure-on-aws.md
printf '%s\n' '--- repository references ---'
rg -n -C 3 'nodesSecurityGroupID|self.*NodePort|NodePort.*egress|security group' . \
-g '!node_modules' -g '!dist' -g '!build' | head -n 300
printf '%s\n' '--- linked proposal ---'
python3 - <<'PY'
from urllib.request import urlopen
url = "https://gardener.cloud/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws/proposals/flexible-network-configuration/"
try:
data = urlopen(url, timeout=15).read().decode("utf-8", "replace")
print(data[:50000])
except Exception as exc:
print(f"FETCH_ERROR: {exc}")
PYRepository: gardener/documentation Length of output: 48355 🏁 Script executed: #!/bin/bash
set -eu
proposal="$(fd -t f 'flexible-network-configuration\.md$' . | head -n 1)"
printf 'proposal=%s\n' "$proposal"
printf '%s\n' '--- proposal outline ---'
ast-grep outline "$proposal" 2>/dev/null || true
printf '%s\n' '--- security-group references with context ---'
rg -n -C 8 'nodesSecurityGroupID|security group|self|NodePort|egress|rules' "$proposal"
printf '%s\n' '--- provider AWS documentation references ---'
rg -n -C 5 'nodesSecurityGroupID|nodes security group|node security group|NodePort' \
hugo/content/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws \
-g '*.md'Repository: gardener/documentation Length of output: 50380 Describe the custom security group as a replacement. Set 🤖 Prompt for AI Agents |
||
| - **Ingress and egress traffic control** — when a custom default route is provided, Gardener skips NAT gateway creation and relies on your existing routing for internet connectivity. | ||
|
|
||
| ## Why It Matters | ||
|
|
||
| For enterprise deployments, infrastructure governance is often centralized. Network admins control VPCs and subnets; security teams manage security groups; platform teams own routing policies. The previous model forced a clean split: Gardener-owned infrastructure alongside manually-managed infrastructure, with no bridge between them. | ||
|
|
||
| With BYO infrastructure support, Gardener shoots become first-class citizens of an existing AWS environment rather than isolated tenants. This unlocks scenarios like: | ||
|
|
||
| - Shoot clusters that share a transit gateway with other workloads, with no NAT gateway required | ||
| - Workers placed in subnets subject to centrally-managed NACLs and flow logs | ||
| - Consistent security group policies applied across the entire organization | ||
|
|
||
| ## Getting Started | ||
|
|
||
| Configure the infrastructure section of your `Shoot` resource to reference existing AWS resources. See [gardener-extension-provider-aws#1741](https://github.com/gardener/gardener-extension-provider-aws/pull/1741) for full details on the new fields and configuration options. | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -eu
file='website/blog/2026/08/08-19-better-support-for-byo-infrastructure-on-aws.md'
printf '%s\n' '--- article context ---'
sed -n '35,50p' "$file"
printf '%s\n' '--- repository references to the guide and PR ---'
rg -n -i 'bring-your-own-vpc|gardener-extension-provider-aws#1741|PR.?1741' . --glob '!node_modules' --glob '!dist' --glob '!build' | head -100
printf '%s\n' '--- guide availability ---'
curl -L --max-time 20 -sS -o /tmp/aws-byo-vpc-guide.html -w 'HTTP %{http_code}\nURL %{url_effective}\n' 'https://gardener.cloud/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws/bring-your-own-vpc/?utm_source=openai'
test -s /tmp/aws-byo-vpc-guide.html && sed -n '1,5p' /tmp/aws-byo-vpc-guide.htmlRepository: gardener/documentation Length of output: 3341 🏁 Script executed: #!/bin/bash
set -eu
guide='hugo/content/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws/bring-your-own-vpc.md'
printf '%s\n' '--- guide structure ---'
rg -n '^#{1,4} |Shoot|route.?table|security.?group|infrastructure|spec\.' "$guide" | head -160
printf '%s\n' '--- nearby documentation-link conventions ---'
sed -n '340,365p' hugo/content/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws/usage.md
sed -n '170,185p' hugo/content/docs/guides/networking/ipv6.md
printf '%s\n' '--- canonical published URL references ---'
rg -n 'https://gardener\.cloud/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws/bring-your-own-vpc|/docs/extensions/infrastructure-extensions/gardener-extension-provider-aws/bring-your-own-vpc/' . --glob '!node_modules' --glob '!dist' --glob '!build'Repository: gardener/documentation Length of output: 11962 Link the end-user BYO VPC guide. Replace the PR link in “Getting Started” with AWS Infrastructure Setup for Bring-Your-Own VPC. Keep PR 🤖 Prompt for AI Agents |
||
|
|
||
| --- | ||
|
|
||
| **Sources:** | ||
|
|
||
| - [📽️ Recording — Review Meeting 2026/08/19](https://youtu.be/Y9sqwVqV2Es?t=45) | ||
| - [gardener-extension-provider-aws#1741: Better support for BYO Infrastructure](https://github.com/gardener/gardener-extension-provider-aws/pull/1741) | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: gardener/documentation
Length of output: 50379
🏁 Script executed:
Repository: gardener/documentation
Length of output: 10221
🏁 Script executed:
Repository: gardener/documentation
Length of output: 8501
Narrow the previous ownership claim.
networks.vpc.idalready supported existing VPCs. State that Gardener managed the networking resources it created, including NAT gateways, route tables, and security groups.🧰 Tools
🪛 LanguageTool
[style] ~18-~18: To make your writing flow more naturally, try moving the adverb ‘already’ closer to the verb ‘established’.
Context: ...y organizations running Gardener on AWS already have established cloud infrastructure — VPCs, subnets, r...
(PERF_TENS_ADV_PLACEMENT)
🤖 Prompt for AI Agents