instruction: Create a Dockerfile for networking
output: ```dockerfile
  from Kubernetes
  Gloo is an open-source ingress controller based on Envoy,
  which offers API gateway functionality.
  HAProxy Ingress is an ingress controller for
  HAProxy.
  Higress is an Envoy based API gateway that can run as an ingress controller.
  The HAProxy Ingress Controller for Kubernetes
  is also an ingress controller for HAProxy.
  Istio Ingress
  is an Istio based ingress controller.
  The Kong Ingress Controller for Kubernetes
  is an ingress controller driving Kong Gateway.
  Kusk Gateway is an OpenAPI-driven ingress controller based on Envoy.
  The NGINX Ingress Controller for Kubernetes
  works with the NGINX webserver (as a proxy).
  The ngrok Kubernetes Ingress Controller is an open source controller for adding secure public access to your K8s services using the ngrok platform.
  The OCI Native Ingress Controller is an Ingress controller for Oracle Cloud Infrastructure which allows you to manage the OCI Load Balancer.
  OpenNJet Ingress Controller is a OpenNJet-based ingress controller.
  The Pomerium Ingress Controller is based on Pomerium, which offers context-aware access policy.
  Skipper HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress, designed as a library to build your custom proxy.
  The Traefik Kubernetes Ingress provider is an
  ingress controller for the Traefik proxy.
  Tyk Operator extends Ingress with Custom Resources to bring API Management capabilities to Ingress. Tyk Operator works with the Open Source Tyk Gateway & Tyk Cloud control plane.
  Voyager is an ingress controller for
  HAProxy.
  Wallarm Ingress Controller is an Ingress Controller that provides WAAP (WAF) and API Security capabilities.
  
  Using multiple Ingress controllers
  You may deploy any number of ingress controllers using ingress class
  within a cluster. Note the .metadata.name of your ingress class resource. When you create an ingress you would need that name to specify the ingressClassName field on your Ingress object (refer to IngressSpec v1 reference). ingressClassName is a replacement of the older annotation method.
  If you do not specify an IngressClass for an Ingress, and your cluster has exactly one IngressClass marked as default, then Kubernetes applies the cluster's default IngressClass to the Ingress.
  You mark an IngressClass as default by setting the ingressclass.kubernetes.io/is-default-class annotation on that IngressClass, with the string value "true".
  Ideally, all ingress controllers should fulfill this specification, but the various ingress
  controllers operate slightly differently.
  Note:Make sure you review your ingress controller's documentation to understand the caveats of choosing it.
  What's next
  
  Learn more about Ingress.
  Set up Ingress on Minikube with the NGINX Controller.
  
  Items on this page refer to third party products or projects that provide functionality required by Kubernetes. The Kubernetes project authors aren't responsible for those third-party products or projects. See the CNCF website guidelines for more details.You should read the content guide before proposing a change that adds an extra third-party link.
  
  Feedback
  Was this page helpful?
  Yes
  No
  
   Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on
  
   Stack Overflow.
   Open an issue in the GitHub Repository if you want to
  
   report a problem
   or
  
   suggest an improvement.
  
   Last modified April 23, 2024 at 10:41 AM PST: Updated Hyperlink of Easegress IngressController (950c810734)
  
    Create child page
   Create an issue
   Print entire section
  
  Additional controllers
  Using multiple Ingress controllers
  What's next
  
  Documentation
  Blog
  Training
  Partners
  Community
  Case Studies
  
  © 2025 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
  
  ICP license: 京ICP备17074266号-3
  ```