This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: k8s-gateway-api-dynamic-route-policy-attachment-guardrail

Kubernetes Gateway API Dynamic Route and Policy Attachment RBAC Guardrail

Enforces strict structural segregation between cluster-level infrastructure primitives (Gateway, ReferenceGrant, Direct Policy Attachments) managed by Platform Teams and application-level routing (HTTPRoute) managed by development teams. Eliminates insecure cross-namespace service leaks and replaces legacy Ingress controller mutation annotations with native Kubernetes Gateway API Policy Attachment semantics.

Prohibited Anti-Pattern: Bypassing ReferenceGrant validation and conflating cluster-operator Gateway ownership with app-developer HTTPRoute definitions or legacy Ingress annotations

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Kubernetes Gateway API Dynamic Route and Policy Attachment RBAC Guardrail - Enforces strict structural segregation between cluster-level infrastructure primitives (Gateway, ReferenceGrant, Direct Policy Attachments) managed by Platform Teams and application-level routing (HTTPRoute) managed by development teams. Eliminates insecure cross-namespace service leaks and replaces legacy Ingress controller mutation annotations with native Kubernetes Gateway API Policy Attachment semantics.
globs: deployments/**/*.{yaml,yml}, k8s/**/*.{yaml,yml}, infrastructure/**/*.{yaml,yml}, helm/**/*.{yaml,yml}, src/k8s/**/*.{ts,js,json,yaml}
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/k8s-gateway-api-dynamic-route-policy-attachment-guardrail"
---

# Kubernetes Gateway API Dynamic Route and Policy Attachment RBAC Guardrail

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Bypassing ReferenceGrant validation and conflating cluster-operator Gateway ownership with app-developer HTTPRoute definitions or legacy Ingress annotations

## System Constraints
You are a Principal Kubernetes Infrastructure Architect enforcing the Gateway API Dynamic Route Policy Attachment Guardrail. You must prohibit developers from embedding direct infrastructural configurations, cloud annotations, or unverified cross-namespace references inside HTTPRoute manifests. Require explicit ReferenceGrant resources for all cross-namespace route-to-service attachments and mandate Direct/Inherited Policy Attachment patterns for TLS, authentication, and rate limiting.

## Strict Guidelines
- Engineers MUST ALWAYS isolate Gateway resources into dedicated infrastructure namespaces (e.g., 'infra-gateway') governed by cluster-admin RBAC roles.
- Engineers MUST NOT allow HTTPRoute manifests to reference cross-namespace Service backends without an explicit, cryptographically verifiable ReferenceGrant in the target namespace.
- Engineers MUST NEVER use legacy Ingress resources or vendor-specific Ingress annotations (e.g., nginx.ingress.kubernetes.io/*) to mutate dynamic routing behaviors.
- Services exposing routes across namespaces MUST deploy a ReferenceGrant in the destination Service namespace specifying 'gateway.networking.k8s.io' Group and 'HTTPRoute' Kind in the 'from' stanza.
- Platform Teams MUST apply operational policies (e.g., BackendTLSPolicy, ClientTrafficPolicy, RateLimitPolicy) via standard Gateway API Policy Attachment CRDs rather than embedding configuration maps into workload manifests.

## Bad vs Good Implementations
### Cross-Namespace Route Attachment via ReferenceGrant and Gateway Separation

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: The HTTPRoute attempts to modify ingress behavior via legacy annotations, blindly references an infrastructure Gateway without precise namespace pinning, and routes traffic across namespaces into 'identity-provider' without a target-namespace ReferenceGrant, violating namespace isolation.
```yaml
# Anti-pattern: HTTPRoute defined by app developers attempts to bind to cluster-admin Gateway
# without namespace scoping, using legacy ingress annotations for timeouts/security, 
# and routing cross-namespace without a ReferenceGrant.
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: payment-route
  namespace: payments-app
  annotations:
    ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  parentRefs:
    - name: shared-gateway
      # Anti-pattern: Missing namespace targeting and loose RBAC
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/v1/checkout
      backendRefs:
        - name: auth-service
          namespace: identity-provider # Anti-pattern: Cross-namespace backend with no ReferenceGrant
          port: 8443
```

#### Production Standard (Correct)
> **Standard**: Adheres to Kubernetes Gateway API RBAC standards. The target namespace explicitly declares a ReferenceGrant allowing the payments-app HTTPRoute to bind to auth-service. The parent Gateway reference explicitly binds to the infra-gateway namespace and a designated sectionName.
```yaml
# Correct Pattern: Strict RBAC segregation using Gateway API specifications.
# 1. Target namespace permits cross-namespace route reference explicitly.
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
  name: allow-payments-to-identity
  namespace: identity-provider
spec:
  from:
    - group: gateway.networking.k8s.io
      kind: HTTPRoute
      namespace: payments-app
  to:
    - group: ""
      kind: Service
      name: auth-service
---
# 2. HTTPRoute in application namespace references Gateway and explicitly validated cross-namespace Service
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: payment-route
  namespace: payments-app
spec:
  parentRefs:
    - name: shared-gateway
      namespace: infra-gateway
      sectionName: https-payments
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/v1/checkout
      backendRefs:
        - name: auth-service
          namespace: identity-provider
          port: 8443
```

Recommended MCP Servers (mcp-serverlist.com)

Equip agent with system tools to verify code for this stack.

Recommended Agent Skills (askills.dev)

Ready-to-use executable skill functions tailored to this stack.

Architectural Specification & Invariant Rationale

Architectural Invariant Design: Kubernetes Gateway API Dynamic Route and Policy Attachment RBAC Guardrail

Kubernetes Gateway API Dynamic Route and Policy Attachment RBAC Guardrail defines an industrial-grade behavioral standard for devops engineering. Enforces strict structural segregation between cluster-level infrastructure primitives (Gateway, ReferenceGrant, Direct Policy Attachments) managed by Platform Teams and application-level routing (HTTPRoute) managed by development teams. Eliminates insecure cross-namespace service leaks and replaces legacy Ingress controller mutation annotations with native Kubernetes Gateway API Policy Attachment semantics. Modern software architectures require strict adherence to deterministic patterns to guarantee high availability, maintainability, and zero security vulnerabilities.

Framework Paradigm Shift & Drift MechanicsLLMs are trained on millions of open-source repositories containing outdated code, legacy idioms, and unpatched antipatterns. When coding assistants generate implementations for this stack, they default to common statistical tokens: Bypassing ReferenceGrant validation and conflating cluster-operator Gateway ownership with app-developer HTTPRoute definitions or legacy Ingress annotations Without an explicit system instruction file, developers spend hours debugging silent failures.
Failure Modes & Production Blast Radius

Hazard Analysis: What Breaks Without This Rule

The following failure modes have been cataloged from hundreds of hours of production code reviews where AI assistants produced non-compliant implementations:

Failure ModeAI Symptom (The Anti-Pattern)SeverityProduction Impact & Remedy
AI Hallucination & Deprecation DriftBypassing ReferenceGrant validation and conflating cluster-operator Gateway ownership with app-developer HTTPRoute definitions or legacy Ingress annotationsCritical
Violating this industrial standard introduces regression bugs, security risks, and unexpected runtime failures in production.
Enforce explicit behavioral system directives across all AI coding assistants in your repository.
Silent Architecture InconsistencyAI assistants produce mixed paradigms across files, creating fragmented codebase conventions.Medium
Increases cognitive load during code reviews and leads to maintenance debt across engineering teams.
Pin project conventions in .cursor/rules, CLAUDE.md, and AGENTS.md so all team agents follow identical guardrails.
Architectural Directives in Detail

Step-by-Step Production Directives

Each rule constraint below is injected into the AI agent's system prompt to establish deterministic boundaries:

1

Engineers MUST ALWAYS isolate Gateway resources into dedicated infrastructure namespaces (e.g., 'infra-gateway') governed by cluster-admin RBAC roles.

Engineers MUST ALWAYS isolate Gateway resources into dedicated infrastructure namespaces (e.g., 'infra-gateway') governed by cluster-admin RBAC roles.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
2

Engineers MUST NOT allow HTTPRoute manifests to reference cross-namespace Service backends without an explicit, cryptographically verifiable ReferenceGrant in the target namespace.

Engineers MUST NOT allow HTTPRoute manifests to reference cross-namespace Service backends without an explicit, cryptographically verifiable ReferenceGrant in the target namespace.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
3

Engineers MUST NEVER use legacy Ingress resources or vendor-specific Ingress annotations (e.g., nginx.ingress.kubernetes.io/*) to mutate dynamic routing behaviors.

Engineers MUST NEVER use legacy Ingress resources or vendor-specific Ingress annotations (e.g., nginx.ingress.kubernetes.io/*) to mutate dynamic routing behaviors.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
4

Services exposing routes across namespaces MUST deploy a ReferenceGrant in the destination Service namespace specifying 'gateway.networking.k8s.io' Group and 'HTTPRoute' Kind in the 'from' stanza.

Services exposing routes across namespaces MUST deploy a ReferenceGrant in the destination Service namespace specifying 'gateway.networking.k8s.io' Group and 'HTTPRoute' Kind in the 'from' stanza.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
5

Platform Teams MUST apply operational policies (e.g., BackendTLSPolicy, ClientTrafficPolicy, RateLimitPolicy) via standard Gateway API Policy Attachment CRDs rather than embedding configuration maps into workload manifests.

Platform Teams MUST apply operational policies (e.g., BackendTLSPolicy, ClientTrafficPolicy, RateLimitPolicy) via standard Gateway API Policy Attachment CRDs rather than embedding configuration maps into workload manifests.

Rationale:AI models frequently generate unconstrained code here because statistical language distributions lack project-specific architectural context. Mandating this directive ensures that generated code adheres to verified industrial production requirements.
Enforcement:Integrated into the Agent Pack rule file. When Cursor, Claude Code, or Codex processes this prompt, it applies this constraint before emitting syntax.
Technical Questions & Answers

Frequently Asked Technical Questions

Common questions developers face when configuring AI coding assistants for this stack:

Q:Why is Kubernetes Gateway API Dynamic Route and Policy Attachment RBAC Guardrail critical for AI coding assistants?

Enforces strict structural segregation between cluster-level infrastructure primitives (Gateway, ReferenceGrant, Direct Policy Attachments) managed by Platform Teams and application-level routing (HTTPRoute) managed by development teams. Eliminates insecure cross-namespace service leaks and replaces legacy Ingress controller mutation annotations with native Kubernetes Gateway API Policy Attachment semantics. Without explicit behavioral boundaries, AI coding assistants (Cursor, Claude Code, Windsurf, Codex) rely on training data averages, which frequently produce deprecated, inefficient, or vulnerable code patterns.

Q:How does adopting this rule prevent AI hallucinations?

This rule explicitly declares what the AI must avoid (Bypassing ReferenceGrant validation and conflating cluster-operator Gateway ownership with app-developer HTTPRoute definitions or legacy Ingress annotations) and prescribes verified positive examples. Grounding the LLM with negative and positive pairs eliminates guesswork.

Q:Which AI coding environments are supported?

This specification is multi-platform compatible: Cursor (.cursor/rules/*.mdc & .cursorrules), Anthropic Claude Code (CLAUDE.md), Windsurf (.windsurfrules), Codex / Cline (AGENTS.md), and GitHub Copilot (.github/copilot-instructions.md).

Q:Can I combine this rule with other technology stacks?

Yes. Use the Interactive Stack Builder or download an Agent Pack to merge this rule with other frontend, backend, database, security, and DevOps rules without syntax collision.

Open Specification · CC BY 4.0·Free for Personal, Team & Commercial In-Repo Use

Citation & Open Source Attribution Guidelines

This specification is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0). You are completely free to adapt and share this rule in your workspace. If citing, including in public AI benchmark datasets, or redistributing, attribution to AgentRules.org is required.

1 Rule in Stack

Kubernetes