1_r/devopsish

1_r/devopsish

54643 bookmarks
Custom sorting
Gateway API v1.3.0: Advancements in Request Mirroring CORS Gateway Merging and Retry Budgets
Gateway API v1.3.0: Advancements in Request Mirroring CORS Gateway Merging and Retry Budgets

Gateway API v1.3.0: Advancements in Request Mirroring, CORS, Gateway Merging, and Retry Budgets

https://kubernetes.io/blog/2025/06/02/gateway-api-v1-3/

Join us in the Kubernetes SIG Network community in celebrating the general availability of Gateway API v1.3.0! We are also pleased to announce that there are already a number of conformant implementations to try, made possible by postponing this blog announcement. Version 1.3.0 of the API was released about a month ago on April 24, 2025.

Gateway API v1.3.0 brings a new feature to the Standard channel (Gateway API's GA release channel): percentage-based request mirroring, and introduces three new experimental features: cross-origin resource sharing (CORS) filters, a standardized mechanism for listener and gateway merging, and retry budgets.

Also see the full release notes and applaud the v1.3.0 release team next time you see them.

Graduation to Standard channel

Graduation to the Standard channel is a notable achievement for Gateway API features, as inclusion in the Standard release channel denotes a high level of confidence in the API surface and provides guarantees of backward compatibility. Of course, as with any other Kubernetes API, Standard channel features can continue to evolve with backward-compatible additions over time, and we (SIG Network) certainly expect further refinements and improvements in the future. For more information on how all of this works, refer to the Gateway API Versioning Policy.

Percentage-based request mirroring

Leads: Lior Lieberman,Jake Bennert

GEP-3171: Percentage-Based Request Mirroring

Percentage-based request mirroring is an enhancement to the existing support for HTTP request mirroring, which allows HTTP requests to be duplicated to another backend using the RequestMirror filter type. Request mirroring is particularly useful in blue-green deployment. It can be used to assess the impact of request scaling on application performance without impacting responses to clients.

The previous mirroring capability worked on all the requests to a backendRef.

Percentage-based request mirroring allows users to specify a subset of requests they want to be mirrored, either by percentage or fraction. This can be particularly useful when services are receiving a large volume of requests. Instead of mirroring all of those requests, this new feature can be used to mirror a smaller subset of them.

Here's an example with 42% of the requests to "foo-v1" being mirrored to "foo-v2":

apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: http-filter-mirror labels: gateway: mirror-gateway spec: parentRefs:

  • name: mirror-gateway hostnames:
  • mirror.example rules:
  • backendRefs:
  • name: foo-v1 port: 8080 filters:
  • type: RequestMirror requestMirror: backendRef: name: foo-v2 port: 8080 percent: 42 # This value must be an integer.

You can also configure the partial mirroring using a fraction. Here is an example with 5 out of every 1000 requests to "foo-v1" being mirrored to "foo-v2".

rules:

  • backendRefs:
  • name: foo-v1 port: 8080 filters:
  • type: RequestMirror requestMirror: backendRef: name: foo-v2 port: 8080 fraction: numerator: 5 denominator: 1000

Additions to Experimental channel

The Experimental channel is Gateway API's channel for experimenting with new features and gaining confidence with them before allowing them to graduate to standard. Please note: the experimental channel may include features that are changed or removed later.

Starting in release v1.3.0, in an effort to distinguish Experimental channel resources from Standard channel resources, any new experimental API kinds have the prefix "X". For the same reason, experimental resources are now added to the API group gateway.networking.x-k8s.io instead of gateway.networking.k8s.io. Bear in mind that using new experimental channel resources means they can coexist with standard channel resources, but migrating these resources to the standard channel will require recreating them with the standard channel names and API group (both of which lack the "x-k8s" designator or "X" prefix).

The v1.3 release introduces two new experimental API kinds: XBackendTrafficPolicy and XListenerSet. To be able to use experimental API kinds, you need to install the Experimental channel Gateway API YAMLs from the locations listed below.

CORS filtering

Leads: Liang Li, Eyal Pazz, Rob Scott

GEP-1767: CORS Filter

Cross-origin resource sharing (CORS) is an HTTP-header based mechanism that allows a web page to access restricted resources from a server on an origin (domain, scheme, or port) different from the domain that served the web page. This feature adds a new HTTPRoute filter type, called "CORS", to configure the handling of cross-origin requests before the response is sent back to the client.

To be able to use experimental CORS filtering, you need to install the Experimental channel Gateway API HTTPRoute yaml.

Here's an example of a simple cross-origin configuration:

apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: http-route-cors spec: parentRefs:

  • name: http-gateway rules:
  • matches:
  • path: type: PathPrefix value: /resource/foo filters:
  • cors:
  • type: CORS allowOrigins:
  • * allowMethods:
  • GET
  • HEAD
  • POST allowHeaders:
  • Accept
  • Accept-Language
  • Content-Language
  • Content-Type
  • Range backendRefs:
  • kind: Service name: http-route-cors port: 80

In this case, the Gateway returns an origin header of "*", which means that the requested resource can be referenced from any origin, a methods header (Access-Control-Allow-Methods) that permits the GET, HEAD, and POST verbs, and a headers header allowing Accept, Accept-Language, Content-Language, Content-Type, and Range.

HTTP/1.1 200 OK Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, HEAD, POST Access-Control-Allow-Headers: Accept,Accept-Language,Content-Language,Content-Type,Range

The complete list of fields in the new CORS filter:

allowOrigins

allowMethods

allowHeaders

allowCredentials

exposeHeaders

maxAge

See CORS protocol for details.

XListenerSets (standardized mechanism for Listener and Gateway merging)

Lead: Dave Protasowski

GEP-1713: ListenerSets - Standard Mechanism to Merge Multiple Gateways

This release adds a new experimental API kind, XListenerSet, that allows a shared list of listeners to be attached to one or more parent Gateway(s). In addition, it expands upon the existing suggestion that Gateway API implementations may merge configuration from multiple Gateway objects. It also:

adds a new field allowedListeners to the .spec of a Gateway. The allowedListeners field defines from which Namespaces to select XListenerSets that are allowed to attach to that Gateway: Same, All, None, or Selector based.

increases the previous maximum number (64) of listeners with the addition of XListenerSets.

allows the delegation of listener configuration, such as TLS, to applications in other namespaces.

To be able to use experimental XListenerSet, you need to install the Experimental channel Gateway API XListenerSet yaml.

The following example shows a Gateway with an HTTP listener and two child HTTPS XListenerSets with unique hostnames and certificates. The combined set of listeners attached to the Gateway includes the two additional HTTPS listeners in the XListenerSets that attach to the Gateway. This example illustrates the delegation of listener TLS config to application owners in different namespaces ("store" and "app"). The HTTPRoute has both the Gateway listener named "foo" and one XListenerSet listener named "second" as parentRefs.

apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: prod-external namespace: infra spec: gatewayClassName: example allowedListeners:

  • from: All listeners:
  • name: foo hostname: foo.com protocol: HTTP port: 80 --- apiVersion: gateway.networking.x-k8s.io/v1alpha1 kind: XListenerSet metadata: name: store namespace: store spec: parentRef: name: prod-external listeners:
  • name: first hostname: first.foo.com protocol: HTTPS port: 443 tls: mode: Terminate certificateRefs:
  • kind: Secret group: "" name: first-workload-cert --- apiVersion: gateway.networking.x-k8s.io/v1alpha1 kind: XListenerSet metadata: name: app namespace: app spec: parentRef: name: prod-external listeners:
  • name: second hostname: second.foo.com protocol: HTTPS port: 443 tls: mode: Terminate certificateRefs:
  • kind: Secret group: "" name: second-workload-cert --- apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: httproute-example spec: parentRefs:
  • name: app kind: XListenerSet sectionName: second
  • name: parent-gateway kind: Gateway sectionName: foo ...

Each listener in a Gateway must have a unique combination of port, protocol, (and hostname if supported by the protocol) in order for all listeners to be compatible and not conflicted over which traffic they should receive.

Furthermore, implementations can merge separate Gateways into a single set of listener addresses if all listeners across those Gateways are compatible. The management of merged listeners was under-specified in releases prior to v1.3.0.

With the new feature, the specification on merging is expanded. Implementations must treat the parent Gateways as having the merged list of all listeners from itself and from attached XListenerSets, and validation of this list of listeners must behave the same as if the list were part of a single Gateway. Within a single Gateway, listeners are ordered using the following precedence:

Single Listeners (not a part of an XListenerSet) first,

Remaining listeners ordered by:

object creation time (oldest first), and if two listeners are defined in objects that have the same timestamp, then

alphabetically based on "{namespace}/{name of listener}"

Retry budgets (XBackendTrafficPolicy)

Leads: Eric Bishop, Mike Morris

GEP

·kubernetes.io·
Gateway API v1.3.0: Advancements in Request Mirroring CORS Gateway Merging and Retry Budgets
DevOps Toolkit - Forget CLIs and GUIs: AI is the New Interface for Developer Platforms - https://www.youtube.com/watch?v=ApjnCa-a2xI
DevOps Toolkit - Forget CLIs and GUIs: AI is the New Interface for Developer Platforms - https://www.youtube.com/watch?v=ApjnCa-a2xI

Forget CLIs and GUIs: AI is the New Interface for Developer Platforms

Discover how AI can revolutionize user interactions with Internal Developer Platforms. This video demonstrates using AI to create, observe, and delete services through natural language conversations. Watch as we leverage custom AI commands to dynamically generate Kubernetes manifests, monitor service status, and manage resources, all without users needing deep platform knowledge. Learn about the pros and cons of this approach, including flexibility vs. determinism. See how AI can simplify complex operations, making platform interactions more intuitive for developers. This approach showcases the potential of AI in streamlining DevOps processes and enhancing developer experiences. We'll use Claude Code custom commands today, but the same principles could be applied to other agents as well.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Sponsor: TestSprite 🔗 https://testsprite.com ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

InternalDeveloperPlatform, #AI, #PlatformEngineering

Consider joining the channel: https://www.youtube.com/c/devopstoolkit/join

▬▬▬▬▬▬ 🔗 Additional Info 🔗 ▬▬▬▬▬▬ ➡ Transcript and commands: https://devopstoolkit.live/internal-developer-platforms/forget-clis-and-guis-ai-is-the-new-interface-for-developer-platforms 🔗 Claude Code: https://claude.ai 🎬 Claude Code: AI Agent for DevOps, SRE, and Platform Engineering: https://youtu.be/h-6LP133o6w

▬▬▬▬▬▬ 💰 Sponsorships 💰 ▬▬▬▬▬▬ If you are interested in sponsoring this channel, please visit https://devopstoolkit.live/sponsor for more information. Alternatively, feel free to contact me over Twitter or LinkedIn (see below).

▬▬▬▬▬▬ 👋 Contact me 👋 ▬▬▬▬▬▬ ➡ BlueSky: https://vfarcic.bsky.social ➡ LinkedIn: https://www.linkedin.com/in/viktorfarcic/

▬▬▬▬▬▬ 🚀 Other Channels 🚀 ▬▬▬▬▬▬ 🎤 Podcast: https://www.devopsparadox.com/ 💬 Live streams: https://www.youtube.com/c/DevOpsParadox

▬▬▬▬▬▬ ⏱ Timecodes ⏱ ▬▬▬▬▬▬ 00:00 AI for Internal Developer Platforms (IDPs) 01:40 TestSprite (sponsor) 02:41 AI for Internal Developer Platforms (IDPs) (cont.) 03:25 AI to Create Platform Services 08:21 AI to Observe Platform Services 10:32 AI to Fix Issues with Platform Services 11:31 AI to Fix Delete Platform Services 12:52 How Did It All Happen? 14:43 Pros and Cons of AI as Platform Interface

via YouTube https://www.youtube.com/watch?v=ApjnCa-a2xI

·youtube.com·
DevOps Toolkit - Forget CLIs and GUIs: AI is the New Interface for Developer Platforms - https://www.youtube.com/watch?v=ApjnCa-a2xI
Your Gmail Inbox Is Running Slow. Do These Things to Fix It
Your Gmail Inbox Is Running Slow. Do These Things to Fix It
If conversations are slow to load and Gmail's search seems sluggish, you can speed things up by tweaking some settings and doing some routine maintenance.
·wired.com·
Your Gmail Inbox Is Running Slow. Do These Things to Fix It
Open Source Thrives on Contribution, Not Just Consumption
Open Source Thrives on Contribution, Not Just Consumption
Open source gives freely, but it thrives when users give back. True “open source companies” contribute time, code or care that keep the tools we all depend on strong and sustainable. Open source is a…
·ciq.com·
Open Source Thrives on Contribution, Not Just Consumption
zenangst/KeyboardCowboy
zenangst/KeyboardCowboy
:keyboard: The missing keyboard shortcut utility for macOS - zenangst/KeyboardCowboy at console.dev
·github.com·
zenangst/KeyboardCowboy
F2
F2
F2 documentation
·f2.freshman.tech·
F2
DevOps Toolkit - Ep23 - Ask Me Anything About Anything with Esmira Bayramova - https://www.youtube.com/watch?v=b5pN35kcOkk
DevOps Toolkit - Ep23 - Ask Me Anything About Anything with Esmira Bayramova - https://www.youtube.com/watch?v=b5pN35kcOkk

Ep23 - Ask Me Anything About Anything with Esmira Bayramova

There are no restrictions in this AMA session. You can ask anything about DevOps, Cloud, Kubernetes, Platform Engineering, containers, or anything else. We'll have special guest Esmira Bayramova to help us out.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Sponsor: Codefresh 🔗 GitOps Argo CD Certifications: https://learning.codefresh.io (use "viktor" for a 50% discount) ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

▬▬▬▬▬▬ 👋 Contact me 👋 ▬▬▬▬▬▬ ➡ BlueSky: https://vfarcic.bsky.social ➡ LinkedIn: https://www.linkedin.com/in/viktorfarcic/

▬▬▬▬▬▬ 🚀 Other Channels 🚀 ▬▬▬▬▬▬ 🎤 Podcast: https://www.devopsparadox.com/ 💬 Live streams: https://www.youtube.com/c/DevOpsParadox

via YouTube https://www.youtube.com/watch?v=b5pN35kcOkk

·youtube.com·
DevOps Toolkit - Ep23 - Ask Me Anything About Anything with Esmira Bayramova - https://www.youtube.com/watch?v=b5pN35kcOkk
Last Week in Kubernetes Development - Week Ending May 25 2025
Last Week in Kubernetes Development - Week Ending May 25 2025

Week Ending May 25, 2025

https://lwkd.info/2025/20250527

Developer News

The Program Committee is now accepting applications for the Maintainer Summit North America 2025. Share your interest in joining the committee before Monday, July 7th.

Release Schedule

Next Deadline: PRR Freeze, June 12th

The Release Cycle for 1.34 has started, and the release team is actively collecting enhancements. SIG Leads should discuss enhancements and add the lead-opted-in label for KEPs going into v1.34.

Featured PRs

131842: Add metrics for compatibility version

This PR adds alpha metrics for binary, emulation, and minimum compatibility versions in componentGlobalsRegistry, exposed via Prometheus in kube-apiserver, scheduler, and controller-manager for observability of version negotiation. It introduces an AddMetrics method that publishes the binary version, emulation version, and minimum compatibility version of each component as Prometheus gauge metrics. Users can now monitor version negotiation for kube-apiserver, scheduler, and controller-manager using these metrics.

128748: feat: introduce pInfo.UnschedulableCount to make the backoff calculation more appropriate

This PR updates the scheduler to separate scheduling failures caused by plugin rejections from those caused by internal errors. It introduces UnschedulableCount to track only plugin-based rejections, ensuring that transient errors like API failures or network issues do not increase backoff time unfairly. This change improves scheduling fairness and responsiveness under cluster instability.

129983: feature(scheduler): Customizable pod selection and ordering in DefaultPreemption plugin

This PR introduces support for customizing pod selection and ordering in the DefaultPreemption plugin; It adds optional EligiblePods and OrderedPods function hooks, allowing scheduler integrations to override the default behavior without reimplementing the plugin. This enables more flexible preemption strategies while maintaining the existing plugin interface.

This PR adds support for the EncryptionAlgorithmECDSAP384 in kubeadm API types; Users can now choose ECDSA-P384 for generating PKI assets like CA and component certificates during kubeadm init; Implemented key generation logic for ECDSA P-384 keys in pkiutil (using elliptic.P384()). This ensures the algorithm is handled correctly across pkiutil and cluster configuration paths.

KEP of the Week

KEP 4369: Allow almost all printable ASCII characters in environment variables

This enhancement allowed all printable ASCII characters (with ASCII codes 32–126), except "=", to be used in environment variable names. Previously, Kubernetes imposed restrictions that could prevent certain applications from functioning as intended, especially when users couldn’t control the variable names. By lifting these constraints, the change improved compatibility with a broader range of applications and removed an adoption barrier, aligning Kubernetes behaviour more closely with real-world usage patterns

This KEP is tracked for beta in v1.34.

Other Merges

automatic_reloads of authz config metrics to beta

Pod backoff to be completely skipped when PodMaxBackoffDuration kube-scheduler option is set to zero

Shorthand for –output flag in kubectl explain which was accidentally deleted has been added back

Kubernetes is now built using Go 1.24.3

References to group resource in metrics unified

e2e: Shadowed error fixed in reboot test

Filter integration tests added for NodeAffinity plugin

AuthenticationConfiguration type has been promoted to apiserver.config.k8s.io/v1

Volumes on nodes to not be expanded if controller expansion is finished

Promotions

QueueingHint to GA

kuberc to beta

Version Updates

system-validators to v1.10.1

etcd to v3.6.0

Go for publishing bot rules to 1.23.9

Subprojects and Dependency Updates

minikube v1.36.0 delivers significantly faster vfkit networking on macOS with the --network vmnet-shared option, supports Kubernetes v1.33.1, enables addon configuration via a dedicated config file, and includes additional improvements

vertical-pod-autoscaler v1.4.0 is out, with alpha support for in-place pod resource updates via the InPlaceOrRecreate Feature Gate, improved resource tracking from pod status, options for global maximum resource limits, and a set of bug fixes and dependency updates

kubespray v2.28.0 is out with a bunch of version updates. Krew installation support is removed.

Shoutouts

No shoutouts this week. Want to thank someone for special efforts to improve Kubernetes? Tag them in the #shoutouts channel.

via Last Week in Kubernetes Development https://lwkd.info/

May 27, 2025 at 06:10PM

·lwkd.info·
Last Week in Kubernetes Development - Week Ending May 25 2025
Performance testing Kubernetes workloads with Stephan Schwarz
Performance testing Kubernetes workloads with Stephan Schwarz

Performance testing Kubernetes workloads, with Stephan Schwarz

https://ku.bz/yY-FnmGfH

If you're tasked with performance testing Kubernetes workloads without much guidance, this episode offers clear, experience-based strategies that go beyond theory.

Stephan Schwarz, a DevOps engineer at iits-consulting, walks through his systematic approach to performance testing Kubernetes applications. He covers everything from defining what performance actually means, to the practical methodology of breaking individual pods to understand their limits, and navigating the complexities of Kubernetes-specific components that affect test results.

You will learn:

How to establish baseline performance metrics by systematically testing individual pods, disabling autoscaling features, and documenting each incremental change to understand real application limits

Why shared Kubernetes components skew results and how ingress controllers, service meshes, and monitoring stacks create testing challenges that require careful consideration of the entire request chain

Practical approaches to HPA configuration, including how to account for scaling latency, the time delays inherent in Kubernetes scaling operations, and planning for spare capacity based on your SLA requirements

The role of observability tools like OpenTelemetry in production environments where load testing isn't feasible, and how distributed tracing helps isolate performance bottlenecks across interdependent services

Sponsor

This episode is sponsored by Learnk8s — get started on your Kubernetes journey through comprehensive online, in-person or remote training.

More info

Find all the links and info for this episode here: https://ku.bz/yY-FnmGfH

Interested in sponsoring an episode? Learn more.

via KubeFM https://kube.fm

May 27, 2025 at 06:00AM

·kube.fm·
Performance testing Kubernetes workloads with Stephan Schwarz
DevOps Toolkit - The Missing Link: How MCP Servers Supercharge Your AI Coding Assistant - https://www.youtube.com/watch?v=n0dCFY6wMeI
DevOps Toolkit - The Missing Link: How MCP Servers Supercharge Your AI Coding Assistant - https://www.youtube.com/watch?v=n0dCFY6wMeI

The Missing Link: How MCP Servers Supercharge Your AI Coding Assistant

Discover the power of Model Context Protocol (MCP) for AI-assisted software engineering! This video explores how MCP enhances Large Language Models and AI agents by providing crucial context. Learn about two essential MCP servers: Memory and Context7. See how they improve AI's ability to understand project specifics, retain information, and access up-to-date documentation. Witness practical demonstrations using Cursor, and learn how to integrate MCP servers into your workflow. Elevate your AI-assisted coding experience with MCP!

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬ Sponsor: Stacklok Toolhive 🔗 https://github.com/stacklok/toolhive ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

AIForDevelopers, #ModelContextProtocol, #LLMEnhancements

Consider joining the channel: https://www.youtube.com/c/devopstoolkit/join

▬▬▬▬▬▬ 🔗 Additional Info 🔗 ▬▬▬▬▬▬ ➡ Transcript and commands: https://devopstoolkit.live/ai/the-missing-link-how-mcp-servers-supercharge-your-ai-coding-assistant 🔗 Model Context Protocol: https://github.com/modelcontextprotocol 🎬 Outdated AI Responses? Context7 Solves LLMs' Biggest Flaw: https://youtu.be/F0MLnVgk4as

▬▬▬▬▬▬ 💰 Sponsorships 💰 ▬▬▬▬▬▬ If you are interested in sponsoring this channel, please visit https://devopstoolkit.live/sponsor for more information. Alternatively, feel free to contact me over Twitter or LinkedIn (see below).

▬▬▬▬▬▬ 👋 Contact me 👋 ▬▬▬▬▬▬ ➡ BlueSky: https://vfarcic.bsky.social ➡ LinkedIn: https://www.linkedin.com/in/viktorfarcic/

▬▬▬▬▬▬ 🚀 Other Channels 🚀 ▬▬▬▬▬▬ 🎤 Podcast: https://www.devopsparadox.com/ 💬 Live streams: https://www.youtube.com/c/DevOpsParadox

▬▬▬▬▬▬ ⏱ Timecodes ⏱ ▬▬▬▬▬▬ 00:00 MCP Intro 00:50 What is Model Context Protocol (MCP)? 06:53 Memory and Context7 MCP Servers 07:49 Stacklok Toolhive (sponsor) 09:04 Memory and Context7 MCP Servers (cont.)

via YouTube https://www.youtube.com/watch?v=n0dCFY6wMeI

·youtube.com·
DevOps Toolkit - The Missing Link: How MCP Servers Supercharge Your AI Coding Assistant - https://www.youtube.com/watch?v=n0dCFY6wMeI
Mozilla Is Shutting Down Pocket
Mozilla Is Shutting Down Pocket
Mozilla announced today it's going to be shutting down its Pocket read-it-later bookmarking service this summer.
·phoronix.com·
Mozilla Is Shutting Down Pocket
Cachebuster - A Pro Tip for Bypassing Cache | UptimeRobot Blog
Cachebuster - A Pro Tip for Bypassing Cache | UptimeRobot Blog
Caching is a great way to improve website performance and minimize the load. An ideal cache displays the cached version until the content changes and flushes the cache when there is a change. Yet, there may be cases where the cached version is not the most up-to-date one (if there is a DB error on […]
·uptimerobot.com·
Cachebuster - A Pro Tip for Bypassing Cache | UptimeRobot Blog