Kubernetes Ingress

The Kubernetes Ingress API manages external HTTP and HTTPS access to services within a cluster, providing load balancing, SSL termination, and name-based virtual hosting. Traffic routing is controlled by rules defined on the Ingress resource and fulfilled by an Ingress controller.

OpenAPI Specification

kubernetes-ingress-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Kubernetes Services Kubernetes Ingress API
  description: >-
    The Kubernetes Ingress API manages external HTTP and HTTPS access to
    services within a cluster, providing load balancing, SSL/TLS termination,
    and name-based virtual hosting. Traffic routing is controlled by rules
    defined on the Ingress resource and fulfilled by an Ingress controller
    such as nginx-ingress, Traefik, or a cloud provider's ingress controller.
  version: v1.32.0
  contact:
    name: Kubernetes Community
    url: https://kubernetes.io/community/
  termsOfService: https://www.apache.org/licenses/LICENSE-2.0
externalDocs:
  description: Kubernetes Ingress API Reference
  url: https://kubernetes.io/docs/reference/kubernetes-api/service-resources/ingress-v1/
servers:
  - url: https://kubernetes.default.svc
    description: In-cluster Kubernetes API Server
tags:
  - name: Ingress
    description: >-
      Ingress resources defining HTTP and HTTPS routing rules from external
      traffic to cluster services, with TLS termination support.
  - name: IngressClass
    description: >-
      IngressClass resources identifying which ingress controller
      should fulfill an Ingress resource.
  - name: IngressStatus
    description: >-
      Status subresource for Ingress objects, reporting load balancer
      IP or hostname assignments from the ingress controller.
security:
  - bearerAuth: []
  - clientCertificate: []
paths:
  /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses:
    get:
      operationId: listNamespacedIngresses
      summary: Kubernetes Services List Ingresses in a namespace
      description: >-
        Returns a list of all Ingress objects in the specified namespace.
        Each Ingress defines HTTP/HTTPS routing rules that an ingress
        controller translates into proxy configuration.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/LabelSelector'
        - $ref: '#/components/parameters/FieldSelector'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Continue'
        - $ref: '#/components/parameters/Watch'
      responses:
        '200':
          description: List of Ingress objects
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createNamespacedIngress
      summary: Kubernetes Services Create an Ingress
      description: >-
        Creates a new Ingress in the specified namespace. The Ingress spec
        defines host-based and path-based routing rules, optional TLS
        configuration, and a default backend for unmatched requests.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/DryRun'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ingress'
      responses:
        '201':
          description: Ingress created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          $ref: '#/components/responses/Conflict'
  /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}:
    get:
      operationId: getNamespacedIngress
      summary: Kubernetes Services Get an Ingress
      description: >-
        Returns the specified Ingress including its routing rules, TLS
        configuration, associated IngressClass, and load balancer status
        from the ingress controller.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/NameParam'
      responses:
        '200':
          description: Ingress details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: replaceNamespacedIngress
      summary: Kubernetes Services Replace an Ingress
      description: >-
        Replaces the full specification of the specified Ingress. The ingress
        controller will reconfigure its proxy rules to match the updated
        routing configuration.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/NameParam'
        - $ref: '#/components/parameters/DryRun'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ingress'
      responses:
        '200':
          description: Ingress updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: patchNamespacedIngress
      summary: Kubernetes Services Patch an Ingress
      description: >-
        Applies a partial update to the specified Ingress using strategic
        merge patch or JSON merge patch semantics.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/NameParam'
      requestBody:
        required: true
        content:
          application/merge-patch+json:
            schema:
              type: object
      responses:
        '200':
          description: Ingress patched
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteNamespacedIngress
      summary: Kubernetes Services Delete an Ingress
      description: >-
        Deletes the specified Ingress. The ingress controller will remove
        the corresponding proxy rules and any associated TLS configuration.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/NameParam'
      responses:
        '200':
          description: Ingress deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /apis/networking.k8s.io/v1/namespaces/{namespace}/ingresses/{name}/status:
    get:
      operationId: getNamespacedIngressStatus
      summary: Kubernetes Services Get Ingress status
      description: >-
        Returns the status subresource for the specified Ingress, including
        the load balancer IP addresses or hostnames assigned by the ingress
        controller.
      tags:
        - IngressStatus
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/NameParam'
      responses:
        '200':
          description: Ingress status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: replaceNamespacedIngressStatus
      summary: Kubernetes Services Replace Ingress status
      description: >-
        Replaces the status subresource of the specified Ingress. Used by
        ingress controllers to report assigned load balancer IPs and
        hostnames.
      tags:
        - IngressStatus
      parameters:
        - $ref: '#/components/parameters/NamespaceParam'
        - $ref: '#/components/parameters/NameParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Ingress'
      responses:
        '200':
          description: Ingress status updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Ingress'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /apis/networking.k8s.io/v1/ingresses:
    get:
      operationId: listIngressesAllNamespaces
      summary: Kubernetes Services List Ingresses across all namespaces
      description: >-
        Returns all Ingress objects cluster-wide. Useful for auditing ingress
        rules, identifying conflicting host rules, and monitoring TLS
        certificate coverage across namespaces.
      tags:
        - Ingress
      parameters:
        - $ref: '#/components/parameters/LabelSelector'
        - $ref: '#/components/parameters/FieldSelector'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Watch'
      responses:
        '200':
          description: List of Ingresses across all namespaces
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressList'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apis/networking.k8s.io/v1/ingressclasses:
    get:
      operationId: listIngressClasses
      summary: Kubernetes Services List IngressClasses
      description: >-
        Returns a list of all IngressClass resources in the cluster. Each
        IngressClass identifies an ingress controller implementation and its
        parameters. Ingress objects reference an IngressClass to select their
        controller.
      tags:
        - IngressClass
      parameters:
        - $ref: '#/components/parameters/LabelSelector'
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Watch'
      responses:
        '200':
          description: List of IngressClass resources
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressClassList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createIngressClass
      summary: Kubernetes Services Create an IngressClass
      description: >-
        Creates a new IngressClass resource. IngressClasses are cluster-scoped
        and define a mapping between Ingress resources and the controller
        responsible for fulfilling them.
      tags:
        - IngressClass
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/IngressClass'
      responses:
        '201':
          description: IngressClass created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressClass'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /apis/networking.k8s.io/v1/ingressclasses/{name}:
    get:
      operationId: getIngressClass
      summary: Kubernetes Services Get an IngressClass
      description: >-
        Returns the specified IngressClass including the controller name and
        any controller-specific parameters reference.
      tags:
        - IngressClass
      parameters:
        - $ref: '#/components/parameters/NameParam'
      responses:
        '200':
          description: IngressClass details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressClass'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteIngressClass
      summary: Kubernetes Services Delete an IngressClass
      description: >-
        Deletes the specified IngressClass. Existing Ingress objects that
        reference this IngressClass will no longer be fulfilled by any
        controller unless another IngressClass is configured.
      tags:
        - IngressClass
      parameters:
        - $ref: '#/components/parameters/NameParam'
      responses:
        '200':
          description: IngressClass deleted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IngressClass'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Kubernetes service account or user bearer token.
    clientCertificate:
      type: mutualTLS
      description: Client TLS certificate signed by the cluster CA.
  parameters:
    NamespaceParam:
      name: namespace
      in: path
      required: true
      description: Namespace name to scope the request.
      schema:
        type: string
    NameParam:
      name: name
      in: path
      required: true
      description: Name of the resource.
      schema:
        type: string
    LabelSelector:
      name: labelSelector
      in: query
      description: Label selector to filter resources.
      schema:
        type: string
    FieldSelector:
      name: fieldSelector
      in: query
      description: Field selector to filter resources by field values.
      schema:
        type: string
    Limit:
      name: limit
      in: query
      description: Maximum number of items to return.
      schema:
        type: integer
        minimum: 1
    Continue:
      name: continue
      in: query
      description: Pagination continuation token.
      schema:
        type: string
    Watch:
      name: watch
      in: query
      description: If true, stream watch events instead of returning a list.
      schema:
        type: boolean
    DryRun:
      name: dryRun
      in: query
      description: If 'All', validates without persisting the change.
      schema:
        type: string
        enum:
          - All
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    NotFound:
      description: Not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Status'
  schemas:
    IngressBackend:
      type: object
      description: >-
        Reference to the backend service or resource that an Ingress routing
        rule should forward traffic to.
      properties:
        service:
          type: object
          description: Service backend reference for routing.
          required:
            - name
            - port
          properties:
            name:
              type: string
              description: Name of the referenced Service in the same namespace.
            port:
              type: object
              description: Port on the referenced Service to forward traffic to.
              properties:
                number:
                  type: integer
                  minimum: 1
                  maximum: 65535
                  description: Numeric port number.
                name:
                  type: string
                  description: Named port as defined in the Service spec.
        resource:
          type: object
          description: >-
            Reference to a custom resource backend in the same namespace.
            Mutually exclusive with service.
          properties:
            apiGroup:
              type: string
              description: API group of the referenced resource.
            kind:
              type: string
              description: Kind of the referenced resource.
            name:
              type: string
              description: Name of the referenced resource.
    HTTPIngressPath:
      type: object
      description: >-
        A mapping of an HTTP path to a backend service. Used within Ingress
        rules to route specific paths to different services.
      required:
        - pathType
        - backend
      properties:
        path:
          type: string
          description: >-
            URL path to match. Must begin with '/'. Required for Exact and
            Prefix pathTypes.
          pattern: '^/'
        pathType:
          type: string
          enum:
            - Exact
            - Prefix
            - ImplementationSpecific
          description: >-
            How the path is matched. Exact requires a case-sensitive exact
            match; Prefix matches paths sharing a '/' delimited prefix;
            ImplementationSpecific defers to the IngressClass controller.
        backend:
          $ref: '#/components/schemas/IngressBackend'
    IngressRule:
      type: object
      description: >-
        A host-based routing rule mapping HTTP requests to backend services
        based on hostname and path prefix matching.
      properties:
        host:
          type: string
          description: >-
            Fully-qualified domain name to match. Wildcard prefixes like
            *.example.com are supported. If unspecified, all hosts match.
        http:
          type: object
          description: HTTP-specific routing configuration for this rule.
          required:
            - paths
          properties:
            paths:
              type: array
              description: >-
                List of path-to-backend mappings for this rule. At least one
                path must be specified.
              minItems: 1
              items:
                $ref: '#/components/schemas/HTTPIngressPath'
    IngressTLS:
      type: object
      description: >-
        TLS configuration for an Ingress, specifying a Secret containing the
        certificate and key for terminating HTTPS connections on port 443.
      properties:
        hosts:
          type: array
          description: >-
            Hosts covered by the TLS certificate. Must match hosts defined
            in the certificate's Subject Alternative Names.
          items:
            type: string
        secretName:
          type: string
          description: >-
            Name of the Secret in the same namespace containing the TLS
            certificate (tls.crt) and key (tls.key).
    IngressSpec:
      type: object
      description: >-
        Specification of the desired behavior of an Ingress, including the
        routing rules, TLS configuration, default backend, and reference to
        the ingress controller via the IngressClass.
      properties:
        ingressClassName:
          type: string
          description: >-
            Name of the IngressClass cluster resource that selects which
            ingress controller handles this Ingress.
        defaultBackend:
          $ref: '#/components/schemas/IngressBackend'
        tls:
          type: array
          description: TLS configuration for HTTPS termination.
          items:
            $ref: '#/components/schemas/IngressTLS'
        rules:
          type: array
          description: >-
            List of host rules for HTTP traffic routing. If no rules match
            a request, the defaultBackend is used.
          items:
            $ref: '#/components/schemas/IngressRule'
    IngressStatus:
      type: object
      description: >-
        Most recently observed status of an Ingress, reporting the load
        balancer IPs or hostnames assigned by the ingress controller.
      properties:
        loadBalancer:
          type: object
          description: LoadBalancer status for the ingress.
          properties:
            ingress:
              type: array
              description: List of load balancer ingress points.
              items:
                type: object
                properties:
                  ip:
                    type: string
                    description: IP address assigned to this ingress point.
                  hostname:
                    type: string
                    description: Hostname assigned to this ingress point.
                  ports:
                    type: array
                    items:
                      type: object
                      properties:
                        port:
                          type: integer
                        protocol:
                          type: string
                        error:
                          type: string
    Ingress:
      type: object
      description: >-
        An Ingress manages external access to the services in a cluster,
        typically HTTP/HTTPS. It provides load balancing, SSL termination,
        and name-based virtual hosting based on routing rules.
      properties:
        apiVersion:
          type: string
          const: networking.k8s.io/v1
        kind:
          type: string
          const: Ingress
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          $ref: '#/components/schemas/IngressSpec'
        status:
          $ref: '#/components/schemas/IngressStatus'
    IngressList:
      type: object
      description: A list of Ingress objects.
      required:
        - items
      properties:
        apiVersion:
          type: string
        kind:
          type: string
          const: IngressList
        metadata:
          $ref: '#/components/schemas/ListMeta'
        items:
          type: array
          items:
            $ref: '#/components/schemas/Ingress'
    IngressClass:
      type: object
      description: >-
        An IngressClass is a cluster-scoped resource that represents an
        ingress controller implementation. Ingress objects reference an
        IngressClass by name to select which controller fulfills them.
      properties:
        apiVersion:
          type: string
          const: networking.k8s.io/v1
        kind:
          type: string
          const: IngressClass
        metadata:
          $ref: '#/components/schemas/ObjectMeta'
        spec:
          type: object
          description: IngressClass specification.
          properties:
            controller:
              type: string
              description: >-
                Name of the controller that handles Ingresses of this class.
                Example: ingress.controller.example.com/nginx
            parameters:
              type: object
              description: >-
                Reference to a custom resource containing controller-specific
                parameters for this IngressClass.
    IngressClassList:
      type: object
      description: A list of IngressClass resources.
      required:
        - items
      properties:
        apiVersion:
          type: string
        kind:
          type: string
          const: IngressClassList
        metadata:
          $ref: '#/components/schemas/ListMeta'
        items:
          type: array
          items:
            $ref: '#/components/schemas/IngressClass'
    ObjectMeta:
      type: object
      description: Standard Kubernetes object metadata.
      properties:
        name:
          type: string
          description: Name of the object.
        namespace:
          type: string
          description: Namespace of the object.
        uid:
          type: string
          description: Unique server-assigned identifier.
        resourceVersion:
          type: string
          description: Internal version for optimistic concurrency.
        creationTimestamp:
          type: string
          format: date-time
          description: Creation timestamp.
        labels:
          type: object
          additionalProperties:
            type: string
          description: Key-value label pairs.
        annotations:
          type: object
          additionalProperties:
            type: string
          description: Non-identifying metadata.
    ListMeta:
      type: object
      description: Metadata for list responses.
      properties:
        resourceVersion:
          type: string
        continue:
          type: string
        remainingItemCount:
          type: integer
    Status:
      type: object
      description: Error or result status returned by the API.
      properties:
        code:
          type: integer
        message:
          type: string
        reason:
          type: string
        status:
          type: string
          enum:
            - Success
            - Failure