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 }