This specification is maintained by the AgentRules Working Group. Have enhancements or want to claim maintainership?Submit Specification →
devopscritical PriorityID: k8s-gateway-api-backend-tls-policy-zero-trust

Kubernetes Gateway API BackendTLSPolicy Zero-Trust Pod Termination Invariant

Enforces cryptographic end-to-end encryption from Kubernetes Gateway controllers directly to pod workload endpoints using Gateway API BackendTLSPolicy. Mandates explicit CA trust anchor configuration and Subject Alternative Name (SAN) validation to eliminate plaintext intra-cluster egress without the compute, memory, and latency overhead of service mesh sidecars.

Prohibited Anti-Pattern: Terminating TLS at Gateway and Forwarding Plaintext HTTP to Backend Pods Across Cluster Network Fabric

Export Ready-to-Drop Configuration

Select format below to copy code or download file directly.

---
description: Kubernetes Gateway API BackendTLSPolicy Zero-Trust Pod Termination Invariant - Enforces cryptographic end-to-end encryption from Kubernetes Gateway controllers directly to pod workload endpoints using Gateway API BackendTLSPolicy. Mandates explicit CA trust anchor configuration and Subject Alternative Name (SAN) validation to eliminate plaintext intra-cluster egress without the compute, memory, and latency overhead of service mesh sidecars.
globs: k8s/**/*.yaml, deploy/**/*.yaml, charts/**/*.yaml, manifests/**/*.yaml, infra/**/*.ts
alwaysApply: true
verified_by: "agentrules.org"
license: "CC-BY-4.0"
source: "https://agentrules.org/rules/k8s-gateway-api-backend-tls-policy-zero-trust"
---

# Kubernetes Gateway API BackendTLSPolicy Zero-Trust Pod Termination Invariant

> **Severity**: CRITICAL | **Category**: devops
> **Anti-Pattern Warning**: Terminating TLS at Gateway and Forwarding Plaintext HTTP to Backend Pods Across Cluster Network Fabric

## System Constraints
You are a Principal Software Architect and Rules Author enforcing the Kubernetes Gateway API BackendTLSPolicy Zero-Trust Pod Termination Invariant. All cluster ingress routing must maintain strict cryptographic identity verification from the ingress Gateway pod down to the application pod's TLS listener. You must enforce that every backend Service exposed via HTTPRoute or GRPCRoute pairs with an explicit BackendTLSPolicy specifying verified CA trust anchors and hostname SAN validation. Reject any configuration that disables peer verification, forwards unencrypted traffic behind the gateway perimeter, or falls back to cluster-wide cleartext.

## Strict Guidelines
- Engineers MUST ALWAYS attach a BackendTLSPolicy (gateway.networking.k8s.io/v1alpha3) to every Service referenced by an external or internal Gateway HTTPRoute/GRPCRoute.
- Engineers MUST configure 'spec.validation.caCertificateRefs' pointing directly to a ConfigMap containing the authoritative CA root or intermediate bundle.
- Engineers MUST specify 'spec.validation.hostname' matching the exact Subject Alternative Name (SAN) or wildcards presented by the pod application server.
- Workload pods MUST serve valid TLS certificates natively (e.g., issued dynamically via cert-manager CSI driver or mounted secrets) on their target container port.
- Engineers MUST NOT disable TLS verification, bypass SAN validation, or allow cleartext fallback between Gateway instances and upstream pod endpoints.
- Services referenced by HTTPRoute MUST explicitly expose secure ports (e.g., port 8443, 443 with appProtocol: https) and MUST NOT route to unencrypted endpoints.
- Engineers MUST NEVER deploy resource-intensive service mesh sidecar proxies solely for transport encryption when Gateway API BackendTLSPolicy can establish direct zero-trust pod termination.

## Bad vs Good Implementations
### Direct Pod-Level TLS Verification via BackendTLSPolicy (Gateway API)

#### Bad Antipattern (AI Common Hallucination)
> **Why it fails**: Gateway terminates TLS at the ingress boundary and transmits sensitive transaction payloads in cleartext across the cluster network to port 8080. If an attacker breaches any adjacent pod on the node or intercepts node traffic (CNI sniffing), credentials and PII are exposed in plaintext.
```yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: payment-service-route
  namespace: payments
spec:
  parentRefs:
    - name: external-gateway
      namespace: gateway-infra
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/v1/payments
      backendRefs:
        # VIOLATION: Traffic egresses from Gateway to payments-service over unencrypted HTTP (port 8080)
        # without any peer authentication or BackendTLSPolicy enforcement.
        - name: payment-service
          port: 8080
```

#### Production Standard (Correct)
> **Standard**: A BackendTLSPolicy binds to the payment-service. The Gateway validates the upstream pod's TLS certificate against the internal CA bundle in the referenced ConfigMap and asserts that the SAN matches 'payment-service.payments.svc.cluster.local', ensuring end-to-end zero-trust encryption directly to the pod without sidecar overhead.
```yaml
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: payment-service-route
  namespace: payments
spec:
  parentRefs:
    - name: external-gateway
      namespace: gateway-infra
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /api/v1/payments
      backendRefs:
        - name: payment-service
          port: 8443
---
apiVersion: gateway.networking.k8s.io/v1alpha3
kind: BackendTLSPolicy
metadata:
  name: payment-service-tls-policy
  namespace: payments
spec:
  targetRefs:
    - group: ""
      kind: Service
      name: payment-service
  validation:
    caCertificateRefs:
      - group: ""
        kind: ConfigMap
        name: internal-ca-bundle
    hostname: payment-service.payments.svc.cluster.local
```

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 BackendTLSPolicy Zero-Trust Pod Termination Invariant

Kubernetes Gateway API BackendTLSPolicy Zero-Trust Pod Termination Invariant defines an industrial-grade behavioral standard for devops engineering. Enforces cryptographic end-to-end encryption from Kubernetes Gateway controllers directly to pod workload endpoints using Gateway API BackendTLSPolicy. Mandates explicit CA trust anchor configuration and Subject Alternative Name (SAN) validation to eliminate plaintext intra-cluster egress without the compute, memory, and latency overhead of service mesh sidecars. 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: Terminating TLS at Gateway and Forwarding Plaintext HTTP to Backend Pods Across Cluster Network Fabric 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 DriftTerminating TLS at Gateway and Forwarding Plaintext HTTP to Backend Pods Across Cluster Network FabricCritical
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 attach a BackendTLSPolicy (gateway.networking.k8s.io/v1alpha3) to every Service referenced by an external or internal Gateway HTTPRoute/GRPCRoute.

Engineers MUST ALWAYS attach a BackendTLSPolicy (gateway.networking.k8s.io/v1alpha3) to every Service referenced by an external or internal Gateway HTTPRoute/GRPCRoute.

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 configure 'spec.validation.caCertificateRefs' pointing directly to a ConfigMap containing the authoritative CA root or intermediate bundle.

Engineers MUST configure 'spec.validation.caCertificateRefs' pointing directly to a ConfigMap containing the authoritative CA root or intermediate bundle.

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 specify 'spec.validation.hostname' matching the exact Subject Alternative Name (SAN) or wildcards presented by the pod application server.

Engineers MUST specify 'spec.validation.hostname' matching the exact Subject Alternative Name (SAN) or wildcards presented by the pod application server.

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

Workload pods MUST serve valid TLS certificates natively (e.g., issued dynamically via cert-manager CSI driver or mounted secrets) on their target container port.

Workload pods MUST serve valid TLS certificates natively (e.g., issued dynamically via cert-manager CSI driver or mounted secrets) on their target container port.

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

Engineers MUST NOT disable TLS verification, bypass SAN validation, or allow cleartext fallback between Gateway instances and upstream pod endpoints.

Engineers MUST NOT disable TLS verification, bypass SAN validation, or allow cleartext fallback between Gateway instances and upstream pod endpoints.

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.
6

Services referenced by HTTPRoute MUST explicitly expose secure ports (e.g., port 8443, 443 with appProtocol

Services referenced by HTTPRoute MUST explicitly expose secure ports (e.g., port 8443, 443 with appProtocol: https) and MUST NOT route to unencrypted endpoints.

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.
7

Engineers MUST NEVER deploy resource-intensive service mesh sidecar proxies solely for transport encryption when Gateway API BackendTLSPolicy can establish direct zero-trust pod termination.

Engineers MUST NEVER deploy resource-intensive service mesh sidecar proxies solely for transport encryption when Gateway API BackendTLSPolicy can establish direct zero-trust pod termination.

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 BackendTLSPolicy Zero-Trust Pod Termination Invariant critical for AI coding assistants?

Enforces cryptographic end-to-end encryption from Kubernetes Gateway controllers directly to pod workload endpoints using Gateway API BackendTLSPolicy. Mandates explicit CA trust anchor configuration and Subject Alternative Name (SAN) validation to eliminate plaintext intra-cluster egress without the compute, memory, and latency overhead of service mesh sidecars. 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 (Terminating TLS at Gateway and Forwarding Plaintext HTTP to Backend Pods Across Cluster Network Fabric) 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