{
  "description": "TCPIngress is the Schema for the tcpingresses API.\nDeprecated: Use Gateway API instead. See https://developer.konghq.com/kubernetes-ingress-controller/migrate/ingress-to-gateway/",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "Spec is the TCPIngress specification.",
      "properties": {
        "rules": {
          "description": "A list of rules used to configure the Ingress.",
          "items": {
            "description": "IngressRule represents a rule to apply against incoming requests.\nMatching is performed based on an (optional) SNI and port.",
            "properties": {
              "backend": {
                "description": "Backend defines the referenced service endpoint to which the traffic\nwill be forwarded to.",
                "properties": {
                  "serviceName": {
                    "description": "Specifies the name of the referenced service.",
                    "minLength": 1,
                    "type": "string"
                  },
                  "servicePort": {
                    "description": "Specifies the port of the referenced service.",
                    "format": "int32",
                    "maximum": 65535,
                    "minimum": 1,
                    "type": "integer"
                  }
                },
                "required": [
                  "serviceName",
                  "servicePort"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "host": {
                "description": "Host is the fully qualified domain name of a network host, as defined\nby RFC 3986.\nIf a Host is not specified, then port-based TCP routing is performed. Kong\ndoesn't care about the content of the TCP stream in this case.\nIf a Host is specified, the protocol must be TLS over TCP.\nA plain-text TCP request cannot be routed based on Host. It can only\nbe routed based on Port.",
                "type": "string"
              },
              "port": {
                "description": "Port is the port on which to accept TCP or TLS over TCP sessions and\nroute. It is a required field. If a Host is not specified, the requested\nare routed based only on Port.",
                "format": "int32",
                "maximum": 65535,
                "minimum": 1,
                "type": "integer"
              }
            },
            "required": [
              "backend",
              "port"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "tls": {
          "description": "TLS configuration. This is similar to the `tls` section in the\nIngress resource in networking.v1beta1 group.\nThe mapping of SNIs to TLS cert-key pair defined here will be\nused for HTTP Ingress rules as well. Once can define the mapping in\nthis resource or the original Ingress resource, both have the same\neffect.",
          "items": {
            "description": "IngressTLS describes the transport layer security.",
            "properties": {
              "hosts": {
                "description": "Hosts are a list of hosts included in the TLS certificate. The values in\nthis list must match the name/s used in the tlsSecret. Defaults to the\nwildcard host setting for the loadbalancer controller fulfilling this\nIngress, if left unspecified.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "secretName": {
                "description": "SecretName is the name of the secret used to terminate SSL traffic.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "TCPIngressStatus defines the observed state of TCPIngress.",
      "properties": {
        "loadBalancer": {
          "description": "LoadBalancer contains the current status of the load-balancer.",
          "properties": {
            "ingress": {
              "description": "Ingress is a list containing ingress points for the load-balancer.\nTraffic intended for the service should be sent to these ingress points.",
              "items": {
                "description": "LoadBalancerIngress represents the status of a load-balancer ingress point:\ntraffic intended for the service should be sent to an ingress point.",
                "properties": {
                  "hostname": {
                    "description": "Hostname is set for load-balancer ingress points that are DNS based\n(typically AWS load-balancers)",
                    "type": "string"
                  },
                  "ip": {
                    "description": "IP is set for load-balancer ingress points that are IP based\n(typically GCE or OpenStack load-balancers)",
                    "type": "string"
                  },
                  "ipMode": {
                    "description": "IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.\nSetting this to \"VIP\" indicates that traffic is delivered to the node with\nthe destination set to the load-balancer's IP and port.\nSetting this to \"Proxy\" indicates that traffic is delivered to the node or pod with\nthe destination set to the node's IP and node port or the pod's IP and port.\nService implementations may use this information to adjust traffic routing.",
                    "type": "string"
                  },
                  "ports": {
                    "description": "Ports is a list of records of service ports\nIf used, every port defined in the service should have an entry in it",
                    "items": {
                      "description": "PortStatus represents the error condition of a service port",
                      "properties": {
                        "error": {
                          "description": "Error is to record the problem with the service port\nThe format of the error shall comply with the following rules:\n- built-in error values shall be specified in this file and those shall use\n  CamelCase names\n- cloud provider specific error values must have names that comply with the\n  format foo.example.com/CamelCase.",
                          "maxLength": 316,
                          "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
                          "type": "string"
                        },
                        "port": {
                          "description": "Port is the port number of the service port of which status is recorded here",
                          "format": "int32",
                          "type": "integer"
                        },
                        "protocol": {
                          "description": "Protocol is the protocol of the service port of which status is recorded here\nThe supported values are: \"TCP\", \"UDP\", \"SCTP\"",
                          "type": "string"
                        }
                      },
                      "required": [
                        "error",
                        "port",
                        "protocol"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array",
                    "x-kubernetes-list-type": "atomic"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array",
              "x-kubernetes-list-type": "atomic"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
