Streamline Kubernetes Ingress with Plural

Managing the sprawling ecosystem of third-party controllers within Kubernetes can feel like playing a never-ending game of whack-a-mole. Just when you think everything is stable, a critical vulnerability like the recent one in ingress-nginx pops up, forcing you to scramble for a fix. Upgrading these controllers is often a risky proposition, fraught with compatibility issues between the controller version and your specific Kubernetes version. This post explores how Plural's unique approach to managing ingress plural, using the Observer resource, automates the upgrade process for ingress-nginx and other critical components. We'll demonstrate how Plural checks for compatibility, generates precise pull requests, and triggers your deployment pipeline, ensuring seamless and safe upgrades. We'll also discuss how Plural simplifies the initial setup and ongoing management of edge networking components, including Ingress, DNS, and SSL certificates, through runtime charts and GlobalServices.

Let's face it - securing Kubernetes isn't getting any easier. Just last week, ingress-nginx (one of the most widely deployed Kubernetes ingress controllers) was hit with a series of critical vulnerabilities. The most severe of these (CVE-2025-1974) could potentially allow any workload in your cluster's internal pod network to exploit its admission webhook, ultimately revealing cluster secrets by leveraging flaws in how annotations are configured.

If you're running ingress-nginx in production right now, you're probably frantically trying to upgrade the controller. And you’ve probably encountered the dependency challenges that follow.

Streamlining Third-Party Controller Upgrades

Kubernetes itself is rarely deployed alone - it's usually surrounded by a sprawling ecosystem of third-party components that vary wildly in quality and security posture. Upgrading these components isn't straightforward because they're tightly coupled with specific Kubernetes versions.

So for example, each version of ingress-nginx is designed to work with particular Kubernetes API versions. This means that right now, you might be caught between two bad options:

  • Upgrade ingress-nginx to patch the vulnerability, but risk breaking changes if your Kubernetes version is lagging behind
  • Force a Kubernetes upgrade first, potentially breaking other critical components in your cluster

Key Takeaways

  • Automated upgrade pipelines are crucial for Kubernetes security: The recent ingress-nginx vulnerability demonstrates the risk of relying on manual updates for critical components.
  • Plural simplifies Kubernetes dependency management: The Observer resource automatically checks compatibility and creates pull requests for seamless upgrades of third-party controllers.
  • Simplify Kubernetes operations with Plural: Features like runtime charts and GlobalServices streamline the setup and management of essential Kubernetes components, reducing manual effort and ensuring consistency.

What is an Ingress?

Definition and Meaning

“Ingress” simply means the act of entering or the right to enter. Think of a doorway—a way to get *in*. It comes from the Latin word “ingressus,” meaning “to go in” or “to enter.” Outside of tech, you might see “ingress” used in astronomy, referring to a celestial body entering a shadow or a particular sign. Merriam-Webster offers more general definitions.

Kubernetes Usage

In Kubernetes, an Ingress is a resource that manages external access to the services within your cluster. It acts as a reverse proxy and load balancer for incoming traffic, routing requests based on rules you define. It's the entry point for outside requests to reach your applications running inside the cluster. For teams using Plural, managing and upgrading Ingress controllers is simplified through our platform.

Other Meanings and Usages

“Ingress” isn’t limited to Kubernetes or astronomy. It appears in various fields, from military operations to literature (often with a more poetic meaning) and even legal discussions of property rights. Wiktionary provides a good overview of these different contexts.

Plural of Ingress: Ingresses

The plural of "ingress" is "ingresses." In Kubernetes, this refers to multiple Ingress resources, each potentially managing traffic for different services or using different routing rules. See Simple English Wiktionary for a simple explanation.

Property Law and Access Rights

In property law, "ingress" refers specifically to the right to enter a property. It’s often paired with "egress" (the right to exit) and sometimes "regress" (the right to return). These terms are essential for defining access rights and easements, ensuring individuals can legally access and leave properties. Wikipedia offers more detail on these legal concepts.

Historical Context

Historically, "ingress" and "egress" carried significant weight, especially regarding the movement of people and goods. For example, the Ingress into India Ordinance of 1914 controlled the movement of individuals returning to India, demonstrating the historical use of these terms in regulating access. Wikipedia provides further historical context.

Understanding Ingression

Definition and Different Meanings

“Ingression” is the noun form of “ingress,” referring to the *act* of entering. While often used interchangeably with "ingress," "ingression" sometimes appears in specialized fields like metaphysics and biology to describe the process of entering or the start of a process. Wiktionary offers a more nuanced explanation.

Relationship to Ingress

“Ingression” is derived from "ingress." "Ingress" is the doorway; "ingression" is walking through it. Both relate to entering, but "ingression" emphasizes the process or action.

Ingress in Swedish

In Swedish, "ingress" means the introductory paragraph of a newspaper article. This shows how a word can evolve and take on unique meanings in different languages. Wiktionary notes this distinct usage.

Past Tense of Ingress: Ingressed

The past tense of "ingress" is "ingressed." So, if something has already entered, you might say it "ingressed" into a specific area. Your Dictionary confirms this past tense usage.

Effortless Upgrades with Plural: A How-To

Plural cuts this gordian knot. Our Observer resource does the following things:

  • Regularly checks our internally maintained compatibility matrices to identify when new versions of components like ingress-nginx are released.
  • Only suggests upgrades that are confirmed compatible with your specific Kubernetes versions.

This means that when a critical security patch like the recent ingress-nginx fix becomes available, the Observer automatically:

  • Verifies the patch is compatible with your current Kubernetes versions
  • Generates a precise pull request with the exact version changes needed
  • Triggers your deployment pipeline to apply the changes safely

Here's a concrete example of how you'd configure this for the ingress-nginx vulnerability:

apiVersion: deployments.plural.sh/v1alpha1
kind: Observer
metadata:
  name: ingress-nginx
spec:
  crontab: "*/5 * * * *"
  initial: 4.12.0
  target:
    order: SEMVER
    type: ADDON # selecting our addon compatibility tables to poll
    addon:
      name: ingress-nginx # polling ingress nginx specifically
      kubernetesVersions: # ensures the newest version we'd deploy
      - "1.28"            # is compatible with the given K8s versions in use
      - "1.29"
      - "1.30"
  actions:
  - type: PIPELINE
    configuration:
      pipeline:
        pipelineRef:
          name: ingress-nginx
          namespace: infra
        context:
          name: ingress-nginx
          version: $value

When a new compatible version is detected, the system automatically generates a PR with the necessary changes:

The resulting PR contains everything needed to safely update the component:

What makes this approach particularly powerful is that it's not just for one-off fixes. The Observer pattern can be applied to your entire Kubernetes ecosystem, ensuring that security patches are applied promptly across all components, updates never break compatibility with your existing infrastructure, and you can finally escape the dependency hell that comes with manual Kubernetes ecosystem management

Plural's Runtime Chart for Simplified Setup

Beyond security updates, Plural simplifies the initial setup and day-to-day management of essential Kubernetes components. We use a “runtime chart” to streamline the installation and configuration of common tools like ingress-nginx. This chart acts as a blueprint, defining the necessary resources and their configurations. It’s especially useful for edge networking components, which often require careful coordination between Ingress, DNS, and SSL certificates. This approach reduces the chances of misconfigurations and simplifies ongoing maintenance.

With Plural, you don't need to manually piece together YAML files or wrestle with Helm charts. The runtime chart handles the heavy lifting, ensuring a consistent and reliable setup. It also allows you to easily customize settings like resource allocation and replica counts without delving into complex configuration files. This means less time spent on configuration management and more time focused on building and deploying your applications.

Installing Edge Networking Components

Setting up your edge networking involves Ingress, DNS registration, and SSL certificate management. Plural's plural up command simplifies this entire process. The runtime chart streamlines the installation of components like ingress-nginx, ensuring they’re correctly configured and integrated with your cluster. This includes setting up load balancing, TLS termination, and other essential features. Because plural up is driven by our declarative GitOps engine, your entire edge networking stack is managed as code, making it auditable, reproducible, and easy to roll back if needed. This gives you a clear history of changes and simplifies troubleshooting.

Configuring ExternalDNS as a Global Service

DNS registration is a critical part of edge networking. It automatically updates your DNS records when new services are added, so users can find your application. Plural uses ExternalDNS for this, integrating it seamlessly with the runtime chart. You can configure ExternalDNS as a GlobalService in Plural. This means you define it once, and it’s automatically deployed and managed across your entire fleet of Kubernetes clusters. This simplifies management and ensures consistent DNS configuration across all your environments, reducing the risk of errors and inconsistencies.

Next Steps with Plural

This latest ingress-nginx vulnerability is a reminder that automated, compatibility-aware update pipelines aren’t just convenient - they’re essential for any team serious about production Kubernetes. And with Plural, you get them out-of-the-box.

Want to learn more about how Plural can help automate your Kubernetes security posture? Let us know - we're always looking for ways to make managing Kubernetes less painful and more secure.

Frequently Asked Questions

How does Plural handle upgrades for other Kubernetes components besides ingress-nginx?

Plural's Observer resource isn't limited to ingress-nginx. It works with any Kubernetes component you define, checking for new versions and ensuring compatibility with your cluster's Kubernetes version before suggesting an upgrade. You can configure multiple Observer resources to manage updates for your entire ecosystem.

What if my team uses a custom Ingress controller or a different Ingress solution altogether?

Plural is flexible enough to support custom or alternative Ingress solutions. While the blog post focuses on ingress-nginx as a common example, the underlying principles of version checking, compatibility validation, and automated PR generation apply regardless of the specific Ingress controller you use. You can adapt the Observer configuration to work with your chosen solution.

Is Plural only for managing security updates?

No. While security updates are a critical use case, Plural streamlines all kinds of Kubernetes upgrades and configuration changes. The Observer can track new features, performance improvements, or any other updates relevant to your components. The runtime chart simplifies initial setup and ongoing configuration management, reducing manual effort and ensuring consistency.

How does Plural's runtime chart work with my existing infrastructure as code setup?

Plural's runtime chart complements your existing IaC. It provides a standardized way to define and deploy common Kubernetes components, but you can still customize these deployments through your IaC tools. The runtime chart acts as a template, and you can override settings or add additional configurations as needed.

What are the prerequisites for using Plural's Kubernetes upgrade features?

You'll need a running Kubernetes cluster and a Plural installation. The blog post provides examples of Observer and runtime chart configurations, which you'll need to adapt to your specific environment. Plural's documentation offers detailed instructions on setting up and configuring these features.