ACP-53164 Add Ingress to Gateway migration how-to#787
Conversation
WalkthroughThis pull request adds a comprehensive migration guide (736 lines) detailing how to transition Kubernetes Ingress resources to Gateway API resources backed by Envoy Gateway on Alauda Container Platform. The guide covers resource mapping, prerequisites, prerequisites and target architecture, step-by-step migration chapters, cutover planning with multiple exposure options, validation procedures, rollback strategies, troubleshooting, and reference materials. ChangesIngress to Gateway API Migration Guide for ACP
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (2)
docs/en/solutions/How_to_Migrate_Ingress_to_Gateway_API_with_Envoy_Gateway_on_ACP.md (2)
62-64: 💤 Low valueConsider varying sentence structure for better flow.
Three consecutive sentences start with "Use". While technically correct, varying the sentence structure would improve readability.
✍️ Optional style improvement
- Use `allowedRoutes.namespaces.from: Same` for private Gateways. - Use `allowedRoutes.namespaces.from: Selector` for shared Gateways so only intended project namespaces can attach routes. - Use `NodePort` only when there is no LoadBalancer provider and make sure users access the NodePort value, not the listener port. + For private Gateways, set `allowedRoutes.namespaces.from: Same`. + For shared Gateways, use `allowedRoutes.namespaces.from: Selector` so only intended project namespaces can attach routes. + Choose `NodePort` only when there is no LoadBalancer provider, and make sure users access the NodePort value, not the listener port.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/en/solutions/How_to_Migrate_Ingress_to_Gateway_API_with_Envoy_Gateway_on_ACP.md` around lines 62 - 64, The three consecutive bullet points all start with "Use", which reduces readability; rephrase them to vary sentence openings and improve flow by converting one or two into imperative or explanatory forms and combining related ideas where appropriate—for example, change "Use NodePort only..." to "Reserve NodePort for environments without a LoadBalancer provider and ensure users connect to the NodePort value rather than the listener port," change "Use hostNetwork only..." to "Enable hostNetwork only for special compatibility or performance scenarios and pin Envoy pods to selected nodes to avoid port conflicts," and reword the third sentence to lead with the scenario (e.g., "When a front load balancer already exposes a stable external IP, retain that IP on the front load balancer and migrate by changing only its backend targets; the Gateway data plane can then run behind the front load balancer using hostNetwork or NodePort") so the bullets no longer all begin with "Use."Source: Linters/SAST tools
289-289: 💤 Low valueTable row contains pipe character in regex pattern that may confuse parsers.
The regex pattern
/shop(/|$)contains a pipe|character. While it's inside backticks, some Markdown parsers may misinterpret it as a table column separator.🔧 Optional fix to escape the pipe character
-| Regex capture rewrite such as `/shop(/|$)(.*)` to `/$2` | Review manually. Standard `HTTPRoute` `URLRewrite` only supports `ReplaceFullPath` and `ReplacePrefixMatch`; it cannot express arbitrary capture substitution. Use an Envoy Gateway extension or policy resource, such as `HTTPRouteFilter` with `ReplaceRegexMatch`, when the behavior is required. | +| Regex capture rewrite such as `/shop(/\|$)(.*)` to `/$2` | Review manually. Standard `HTTPRoute` `URLRewrite` only supports `ReplaceFullPath` and `ReplacePrefixMatch`; it cannot express arbitrary capture substitution. Use an Envoy Gateway extension or policy resource, such as `HTTPRouteFilter` with `ReplaceRegexMatch`, when the behavior is required. |Or use HTML entity:
-| Regex capture rewrite such as `/shop(/|$)(.*)` to `/$2` | Review manually. Standard `HTTPRoute` `URLRewrite` only supports `ReplaceFullPath` and `ReplacePrefixMatch`; it cannot express arbitrary capture substitution. Use an Envoy Gateway extension or policy resource, such as `HTTPRouteFilter` with `ReplaceRegexMatch`, when the behavior is required. | +| Regex capture rewrite such as `/shop(/&`#124`;$)(.*)` to `/$2` | Review manually. Standard `HTTPRoute` `URLRewrite` only supports `ReplaceFullPath` and `ReplacePrefixMatch`; it cannot express arbitrary capture substitution. Use an Envoy Gateway extension or policy resource, such as `HTTPRouteFilter` with `ReplaceRegexMatch`, when the behavior is required. |🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@docs/en/solutions/How_to_Migrate_Ingress_to_Gateway_API_with_Envoy_Gateway_on_ACP.md` at line 289, The table row containing the regex `/shop(/|$)(.*)` can confuse Markdown table parsers because of the unescaped pipe character; update the table cell that currently reads "Regex capture rewrite such as `/shop(/|$)(.*)` to `/$2`" to escape the pipe or use an HTML entity or code tag—for example replace `/shop(/|$)(.*)` with `/shop(/&`#124`;$)(.*)` or `/shop(/\|$)(.*)` (or wrap the pattern in an HTML <code>…</code> element) so the table columns render correctly; leave the surrounding explanation mentioning HTTPRoute, URLRewrite, ReplaceFullPath, ReplacePrefixMatch and the guidance to use HTTPRouteFilter/ReplaceRegexMatch unchanged.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In
`@docs/en/solutions/How_to_Migrate_Ingress_to_Gateway_API_with_Envoy_Gateway_on_ACP.md`:
- Around line 62-64: The three consecutive bullet points all start with "Use",
which reduces readability; rephrase them to vary sentence openings and improve
flow by converting one or two into imperative or explanatory forms and combining
related ideas where appropriate—for example, change "Use NodePort only..." to
"Reserve NodePort for environments without a LoadBalancer provider and ensure
users connect to the NodePort value rather than the listener port," change "Use
hostNetwork only..." to "Enable hostNetwork only for special compatibility or
performance scenarios and pin Envoy pods to selected nodes to avoid port
conflicts," and reword the third sentence to lead with the scenario (e.g., "When
a front load balancer already exposes a stable external IP, retain that IP on
the front load balancer and migrate by changing only its backend targets; the
Gateway data plane can then run behind the front load balancer using hostNetwork
or NodePort") so the bullets no longer all begin with "Use."
- Line 289: The table row containing the regex `/shop(/|$)(.*)` can confuse
Markdown table parsers because of the unescaped pipe character; update the table
cell that currently reads "Regex capture rewrite such as `/shop(/|$)(.*)` to
`/$2`" to escape the pipe or use an HTML entity or code tag—for example replace
`/shop(/|$)(.*)` with `/shop(/&`#124`;$)(.*)` or `/shop(/\|$)(.*)` (or wrap the
pattern in an HTML <code>…</code> element) so the table columns render
correctly; leave the surrounding explanation mentioning HTTPRoute, URLRewrite,
ReplaceFullPath, ReplacePrefixMatch and the guidance to use
HTTPRouteFilter/ReplaceRegexMatch unchanged.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8a52db00-d1cd-4f78-a8df-ae247b858c74
📒 Files selected for processing (1)
docs/en/solutions/How_to_Migrate_Ingress_to_Gateway_API_with_Envoy_Gateway_on_ACP.md
Summary
Verification
Note: yarn build exits 0. The build still prints existing Rspress/search-index relative URL warnings, which do not fail the build.
Summary by CodeRabbit