package v1 import ( "cue.dev/x/k8s.io/api/core/v1" v1_9 "cue.dev/x/k8s.io/apimachinery/pkg/apis/meta/v1" ) // Endpoint represents a single logical "backend" implementing a service. #Endpoint: { // addresses of this endpoint. For EndpointSlices of addressType "IPv4" or // "IPv6", the values are IP addresses in canonical form. The syntax and // semantics of other addressType values are not defined. This must contain at // least one address but no more than 100. EndpointSlices generated by the // EndpointSlice controller will always have exactly 1 address. No semantics // are defined for additional addresses beyond the first, and kube-proxy does // not look at them. "addresses"!: [...string] // conditions contains information about the current status of the endpoint. "conditions"?: #EndpointConditions // deprecatedTopology contains topology information part of the v1beta1 API. // This field is deprecated, and will be removed when the v1beta1 API is // removed (no sooner than kubernetes v1.24). While this field can hold values, // it is not writable through the v1 API, and any attempts to write to it will // be silently ignored. Topology information can be found in the zone and // nodeName fields instead. "deprecatedTopology"?: [string]: string // hints contains information associated with how an endpoint should be consumed. "hints"?: #EndpointHints // hostname of this endpoint. This field may be used by consumers of endpoints // to distinguish endpoints from each other (e.g. in DNS names). Multiple // endpoints which use the same hostname should be considered fungible (e.g. // multiple A values in DNS). Must be lowercase and pass DNS Label (RFC 1123) // validation. "hostname"?: string // nodeName represents the name of the Node hosting this endpoint. This can be // used to determine endpoints local to a Node. "nodeName"?: string // targetRef is a reference to a Kubernetes object that represents this endpoint. "targetRef"?: v1.#ObjectReference // zone is the name of the Zone this endpoint exists in. "zone"?: string } // EndpointConditions represents the current condition of an endpoint. #EndpointConditions: { // ready indicates that this endpoint is ready to receive traffic, according to // whatever system is managing the endpoint. A nil value should be interpreted // as "true". In general, an endpoint should be marked ready if it is serving // and not terminating, though this can be overridden in some cases, such as // when the associated Service has set the publishNotReadyAddresses flag. "ready"?: bool // serving indicates that this endpoint is able to receive traffic, according to // whatever system is managing the endpoint. For endpoints backed by pods, the // EndpointSlice controller will mark the endpoint as serving if the pod's // Ready condition is True. A nil value should be interpreted as "true". "serving"?: bool // terminating indicates that this endpoint is terminating. A nil value should // be interpreted as "false". "terminating"?: bool } // EndpointHints provides hints describing how an endpoint should be consumed. #EndpointHints: { // forNodes indicates the node(s) this endpoint should be consumed by when using // topology aware routing. May contain a maximum of 8 entries. "forNodes"?: [...#ForNode] // forZones indicates the zone(s) this endpoint should be consumed by when using // topology aware routing. May contain a maximum of 8 entries. "forZones"?: [...#ForZone] } // EndpointPort represents a Port used by an EndpointSlice #EndpointPort: { // The application protocol for this port. This is used as a hint for // implementations to offer richer behavior for protocols that they understand. // This field follows standard Kubernetes label syntax. Valid values are // either: // // * Un-prefixed protocol names - reserved for IANA standard service names (as // per RFC-6335 and https://www.iana.org/assignments/service-names). // // * Kubernetes-defined prefixed names: // * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in // https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- // * 'kubernetes.io/ws' - WebSocket over cleartext as described in // https://www.rfc-editor.org/rfc/rfc6455 // * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 // // * Other protocols should use implementation-defined prefixed names such as // mycompany.com/my-custom-protocol. "appProtocol"?: string // name represents the name of this port. All ports in an EndpointSlice must // have a unique name. If the EndpointSlice is derived from a Kubernetes // service, this corresponds to the Service.ports[].name. Name must either be // an empty string or pass DNS_LABEL validation: * must be no more than 63 // characters long. * must consist of lower case alphanumeric characters or // '-'. * must start and end with an alphanumeric character. Default is empty // string. "name"?: string // port represents the port number of the endpoint. If the EndpointSlice is // derived from a Kubernetes service, this must be set to the service's target // port. EndpointSlices used for other purposes may have a nil port. "port"?: int32 & int // protocol represents the IP protocol for this port. Must be UDP, TCP, or SCTP. Default is TCP. "protocol"?: string } // EndpointSlice represents a set of service endpoints. Most EndpointSlices are // created by the EndpointSlice controller to represent the Pods selected by // Service objects. For a given service there may be multiple EndpointSlice // objects which must be joined to produce the full set of endpoints; you can // find all of the slices for a given service by listing EndpointSlices in the // service's namespace whose `kubernetes.io/service-name` label contains the // service's name. #EndpointSlice: { // addressType specifies the type of address carried by this EndpointSlice. All // addresses in this slice must be the same type. This field is immutable after // creation. The following address types are currently supported: * IPv4: // Represents an IPv4 Address. * IPv6: Represents an IPv6 Address. * FQDN: // Represents a Fully Qualified Domain Name. (Deprecated) The EndpointSlice // controller only generates, and kube-proxy only processes, slices of // addressType "IPv4" and "IPv6". No semantics are defined for the "FQDN" type. "addressType"!: string // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "discovery.k8s.io/v1" // endpoints is a list of unique endpoints in this slice. Each slice may include // a maximum of 1000 endpoints. "endpoints"?: [...#Endpoint] // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. // Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "EndpointSlice" // Standard object's metadata. "metadata"?: v1_9.#ObjectMeta // ports specifies the list of network ports exposed by each endpoint in this // slice. Each port must have a unique name. Each slice may include a maximum // of 100 ports. Services always have at least 1 port, so EndpointSlices // generated by the EndpointSlice controller will likewise always have at least // 1 port. EndpointSlices used for other purposes may have an empty ports list. "ports"?: [...#EndpointPort] } // EndpointSliceList represents a list of endpoint slices #EndpointSliceList: { // APIVersion defines the versioned schema of this representation of an object. // Servers should convert recognized schemas to the latest internal value, and // may reject unrecognized values. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources "apiVersion": "discovery.k8s.io/v1" // items is the list of endpoint slices "items"!: [...#EndpointSlice] // Kind is a string value representing the REST resource this object represents. // Servers may infer this from the endpoint the client submits requests to. // Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds "kind": "EndpointSliceList" // Standard list metadata. "metadata"?: v1_9.#ListMeta } // ForNode provides information about which nodes should consume this endpoint. #ForNode: { // name represents the name of the node. "name"!: string } // ForZone provides information about which zones should consume this endpoint. #ForZone: { // name represents the name of the zone. "name"!: string }