rollouts/config/crd/bases/rollouts.kruise.io_rollouth...

2960 lines
204 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.7.0
creationTimestamp: null
name: rollouthistories.rollouts.kruise.io
spec:
group: rollouts.kruise.io
names:
kind: RolloutHistory
listKind: RolloutHistoryList
plural: rollouthistories
singular: rollouthistory
scope: Namespaced
versions:
- additionalPrinterColumns:
- description: Phase indicates phase of RolloutHistory, such as pending, progressing,
completed
jsonPath: .status.phase
name: PHASE
type: string
- description: CanaryStepIndex indicates the current step
jsonPath: .status.canaryStepIndex
name: CURRENT_STEP
type: integer
- description: CanaryStepState indicates state of this rollout revision, such
as init, pending, update, terminated, completed, cancelled, whick is upon
rollout canary_step_state
jsonPath: .status.canaryStepState
name: CURRENT_STATE
type: string
- description: Message provides details on why the rollout is in its current phase
jsonPath: .status.rolloutState.message
name: MESSAGE
type: string
- jsonPath: .metadata.creationTimestamp
name: AGE
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: RolloutHistory is the Schema for the rollouthistories API
properties:
apiVersion:
description: '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'
type: string
kind:
description: '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'
type: string
metadata:
type: object
spec:
description: RolloutHistorySpec defines the desired state of RolloutHistory
properties:
rolloutWrapper:
description: RolloutWrapper indicates information of the rollout related
with rollouthistory
properties:
name:
description: Name indicates the rollout name
type: string
rollout:
description: Rollout indecates the related rollout
properties:
apiVersion:
description: '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'
type: string
kind:
description: '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'
type: string
metadata:
type: object
spec:
description: RolloutSpec defines the desired state of Rollout
properties:
objectRef:
description: 'INSERT ADDITIONAL SPEC FIELDS - desired
state of cluster Important: Run "make" to regenerate
code after modifying this file ObjectRef indicates workload'
properties:
workloadRef:
description: WorkloadRef contains enough information
to let you identify a workload for Rollout Batch
release of the bypass
properties:
apiVersion:
description: API Version of the referent
type: string
kind:
description: Kind of the referent
type: string
name:
description: Name of the referent
type: string
required:
- apiVersion
- kind
- name
type: object
type: object
rolloutID:
description: RolloutID should be changed before each workload
revision publication. It is to distinguish consecutive
multiple workload publications and rollout progress.
type: string
strategy:
description: rollout strategy
properties:
canary:
description: CanaryStrategy defines parameters for
a Replica Based Canary
properties:
steps:
description: Steps define the order of phases
to execute release in batches(20%, 40%, 60%,
80%, 100%)
items:
description: CanaryStep defines a step of a
canary workload.
properties:
pause:
description: Pause defines a pause stage
for a rollout, manual or auto
properties:
duration:
description: Duration the amount of
time to wait before moving to the
next step.
format: int32
type: integer
type: object
replicas:
anyOf:
- type: integer
- type: string
description: 'Replicas is the number of
expected canary pods in this batch it
can be an absolute number (ex: 5) or a
percentage of total pods.'
x-kubernetes-int-or-string: true
weight:
format: int32
type: integer
type: object
type: array
trafficRoutings:
description: TrafficRoutings hosts all the supported
service meshes supported to enable more fine-grained
traffic routing todo current only support one
TrafficRouting
items:
description: TrafficRouting hosts all the different
configuration for supported service meshes
to enable more fine-grained traffic routing
properties:
gateway:
description: Gateway holds Gateway specific
configuration to route traffic Gateway
configuration only supports >= v0.4.0
(v1alpha2).
properties:
httpRouteName:
description: HTTPRouteName refers to
the name of an `HTTPRoute` resource
in the same namespace as the `Rollout`
type: string
type: object
gracePeriodSeconds:
description: Optional duration in seconds
the traffic provider(e.g. nginx ingress
controller) consumes the service, ingress
configuration changes gracefully.
format: int32
type: integer
ingress:
description: Ingress holds Ingress specific
configuration to route traffic, e.g. Nginx,
Alb.
properties:
classType:
description: ClassType refers to the
class type of an `Ingress`, e.g. Nginx.
Default is Nginx
type: string
name:
description: Name refers to the name
of an `Ingress` resource in the same
namespace as the `Rollout`
type: string
required:
- name
type: object
service:
description: Service holds the name of a
service which selects pods with stable
version and don't select any pods with
canary version.
type: string
required:
- service
type: object
type: array
type: object
paused:
description: Paused indicates that the Rollout is
paused. Default value is false
type: boolean
type: object
required:
- objectRef
- strategy
type: object
status:
description: RolloutStatus defines the observed state of Rollout
properties:
canaryStatus:
description: Canary describes the state of the canary
rollout
properties:
canaryReadyReplicas:
description: CanaryReadyReplicas the numbers of ready
canary revision pods
format: int32
type: integer
canaryReplicas:
description: CanaryReplicas the numbers of canary
revision pods
format: int32
type: integer
canaryRevision:
description: CanaryRevision is calculated by rollout
based on podTemplateHash, and the internal logic
flow uses It may be different from rs podTemplateHash
in different k8s versions, so it cannot be used
as service selector label
type: string
canaryService:
description: CanaryService holds the name of a service
which selects pods with canary version and don't
select any pods with stable version.
type: string
currentStepIndex:
description: CurrentStepIndex defines the current
step of the rollout is on. If the current step index
is null, the controller will execute the rollout.
format: int32
type: integer
currentStepState:
type: string
lastUpdateTime:
format: date-time
type: string
message:
type: string
observedRolloutID:
description: ObservedRolloutID will record the newest
spec.RolloutID if status.canaryRevision equals to
workload.updateRevision
type: string
observedWorkloadGeneration:
description: observedWorkloadGeneration is the most
recent generation observed for this Rollout ref
workload generation.
format: int64
type: integer
podTemplateHash:
description: pod template hash is used as service
selector label
type: string
rolloutHash:
description: RolloutHash from rollout.spec object
type: string
required:
- canaryReadyReplicas
- canaryReplicas
- canaryService
- currentStepState
- podTemplateHash
type: object
conditions:
description: Conditions a list of conditions a rollout
can have.
items:
description: RolloutCondition describes the state of
a rollout at a certain point.
properties:
lastTransitionTime:
description: Last time the condition transitioned
from one status to another.
format: date-time
type: string
lastUpdateTime:
description: The last time this condition was updated.
format: date-time
type: string
message:
description: A human readable message indicating
details about the transition.
type: string
reason:
description: The reason for the condition's last
transition.
type: string
status:
description: Phase of the condition, one of True,
False, Unknown.
type: string
type:
description: Type of rollout condition.
type: string
required:
- message
- reason
- status
- type
type: object
type: array
message:
description: Message provides details on why the rollout
is in its current phase
type: string
observedGeneration:
description: observedGeneration is the most recent generation
observed for this Rollout.
format: int64
type: integer
phase:
description: BlueGreenStatus *BlueGreenStatus `json:"blueGreenStatus,omitempty"`
Phase is the rollout phase.
type: string
stableRevision:
description: CanaryRevision the hash of the canary pod
template CanaryRevision string `json:"canaryRevision,omitempty"`
StableRevision indicates the revision pods that has
successfully rolled out
type: string
type: object
type: object
type: object
serviceWrapper:
description: ServiceWrapper indicates information of the service related
with workload
properties:
name:
description: Name indicates the service name
type: string
service:
description: Service indicates the service
properties:
apiVersion:
description: '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'
type: string
kind:
description: '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'
type: string
metadata:
description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'
type: object
spec:
description: Spec defines the behavior of a service. https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
properties:
allocateLoadBalancerNodePorts:
description: allocateLoadBalancerNodePorts defines if
NodePorts will be automatically allocated for services
with type LoadBalancer. Default is "true". It may be
set to "false" if the cluster load-balancer does not
rely on NodePorts. If the caller requests specific
NodePorts (by specifying a value), those requests will
be respected, regardless of this field. This field may
only be set for services with type LoadBalancer and
will be cleared if the type is changed to any other
type. This field is beta-level and is only honored by
servers that enable the ServiceLBNodePortControl feature.
type: boolean
clusterIP:
description: 'clusterIP is the IP address of the service
and is usually assigned randomly. If an address is specified
manually, is in-range (as per system configuration),
and is not in use, it will be allocated to the service;
otherwise creation of the service will fail. This field
may not be changed through updates unless the type field
is also being changed to ExternalName (which requires
this field to be blank) or the type field is being changed
from ExternalName (in which case this field may optionally
be specified, as describe above). Valid values are
"None", empty string (""), or a valid IP address. Setting
this to "None" makes a "headless service" (no virtual
IP), which is useful when direct endpoint connections
are preferred and proxying is not required. Only applies
to types ClusterIP, NodePort, and LoadBalancer. If this
field is specified when creating a Service of type ExternalName,
creation will fail. This field will be wiped when updating
a Service to type ExternalName. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
type: string
clusterIPs:
description: "ClusterIPs is a list of IP addresses assigned
to this service, and are usually assigned randomly.
\ If an address is specified manually, is in-range (as
per system configuration), and is not in use, it will
be allocated to the service; otherwise creation of the
service will fail. This field may not be changed through
updates unless the type field is also being changed
to ExternalName (which requires this field to be empty)
or the type field is being changed from ExternalName
(in which case this field may optionally be specified,
as describe above). Valid values are \"None\", empty
string (\"\"), or a valid IP address. Setting this
to \"None\" makes a \"headless service\" (no virtual
IP), which is useful when direct endpoint connections
are preferred and proxying is not required. Only applies
to types ClusterIP, NodePort, and LoadBalancer. If this
field is specified when creating a Service of type ExternalName,
creation will fail. This field will be wiped when updating
a Service to type ExternalName. If this field is not
specified, it will be initialized from the clusterIP
field. If this field is specified, clients must ensure
that clusterIPs[0] and clusterIP have the same value.
\n Unless the \"IPv6DualStack\" feature gate is enabled,
this field is limited to one value, which must be the
same as the clusterIP field. If the feature gate is
enabled, this field may hold a maximum of two entries
(dual-stack IPs, in either order). These IPs must correspond
to the values of the ipFamilies field. Both clusterIPs
and ipFamilies are governed by the ipFamilyPolicy field.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies"
items:
type: string
type: array
x-kubernetes-list-type: atomic
externalIPs:
description: externalIPs is a list of IP addresses for
which nodes in the cluster will also accept traffic
for this service. These IPs are not managed by Kubernetes. The
user is responsible for ensuring that traffic arrives
at a node with this IP. A common example is external
load-balancers that are not part of the Kubernetes system.
items:
type: string
type: array
externalName:
description: externalName is the external reference that
discovery mechanisms will return as an alias for this
service (e.g. a DNS CNAME record). No proxying will
be involved. Must be a lowercase RFC-1123 hostname
(https://tools.ietf.org/html/rfc1123) and requires `type`
to be "ExternalName".
type: string
externalTrafficPolicy:
description: externalTrafficPolicy denotes if this Service
desires to route external traffic to node-local or cluster-wide
endpoints. "Local" preserves the client source IP and
avoids a second hop for LoadBalancer and Nodeport type
services, but risks potentially imbalanced traffic spreading.
"Cluster" obscures the client source IP and may cause
a second hop to another node, but should have good overall
load-spreading.
type: string
healthCheckNodePort:
description: healthCheckNodePort specifies the healthcheck
nodePort for the service. This only applies when type
is set to LoadBalancer and externalTrafficPolicy is
set to Local. If a value is specified, is in-range,
and is not in use, it will be used. If not specified,
a value will be automatically allocated. External systems
(e.g. load-balancers) can use this port to determine
if a given node holds endpoints for this service or
not. If this field is specified when creating a Service
which does not need it, creation will fail. This field
will be wiped when updating a Service to no longer need
it (e.g. changing type).
format: int32
type: integer
internalTrafficPolicy:
description: InternalTrafficPolicy specifies if the cluster
internal traffic should be routed to all endpoints or
node-local endpoints only. "Cluster" routes internal
traffic to a Service to all endpoints. "Local" routes
traffic to node-local endpoints only, traffic is dropped
if no node-local endpoints are ready. The default value
is "Cluster".
type: string
ipFamilies:
description: "IPFamilies is a list of IP families (e.g.
IPv4, IPv6) assigned to this service, and is gated by
the \"IPv6DualStack\" feature gate. This field is usually
assigned automatically based on cluster configuration
and the ipFamilyPolicy field. If this field is specified
manually, the requested family is available in the cluster,
and ipFamilyPolicy allows it, it will be used; otherwise
creation of the service will fail. This field is conditionally
mutable: it allows for adding or removing a secondary
IP family, but it does not allow changing the primary
IP family of the Service. Valid values are \"IPv4\"
and \"IPv6\". This field only applies to Services of
types ClusterIP, NodePort, and LoadBalancer, and does
apply to \"headless\" services. This field will be
wiped when updating a Service to type ExternalName.
\n This field may hold a maximum of two entries (dual-stack
families, in either order). These families must correspond
to the values of the clusterIPs field, if specified.
Both clusterIPs and ipFamilies are governed by the ipFamilyPolicy
field."
items:
description: IPFamily represents the IP Family (IPv4
or IPv6). This type is used to express the family
of an IP expressed by a type (e.g. service.spec.ipFamilies).
type: string
type: array
x-kubernetes-list-type: atomic
ipFamilyPolicy:
description: IPFamilyPolicy represents the dual-stack-ness
requested or required by this Service, and is gated
by the "IPv6DualStack" feature gate. If there is no
value provided, then this field will be set to SingleStack.
Services can be "SingleStack" (a single IP family),
"PreferDualStack" (two IP families on dual-stack configured
clusters or a single IP family on single-stack clusters),
or "RequireDualStack" (two IP families on dual-stack
configured clusters, otherwise fail). The ipFamilies
and clusterIPs fields depend on the value of this field. This
field will be wiped when updating a service to type
ExternalName.
type: string
loadBalancerClass:
description: loadBalancerClass is the class of the load
balancer implementation this Service belongs to. If
specified, the value of this field must be a label-style
identifier, with an optional prefix, e.g. "internal-vip"
or "example.com/internal-vip". Unprefixed names are
reserved for end-users. This field can only be set when
the Service type is 'LoadBalancer'. If not set, the
default load balancer implementation is used, today
this is typically done through the cloud provider integration,
but should apply for any default implementation. If
set, it is assumed that a load balancer implementation
is watching for Services with a matching class. Any
default load balancer implementation (e.g. cloud providers)
should ignore Services that set this field. This field
can only be set when creating or updating a Service
to type 'LoadBalancer'. Once set, it can not be changed.
This field will be wiped when a service is updated to
a non 'LoadBalancer' type.
type: string
loadBalancerIP:
description: 'Only applies to Service Type: LoadBalancer
LoadBalancer will get created with the IP specified
in this field. This feature depends on whether the underlying
cloud-provider supports specifying the loadBalancerIP
when a load balancer is created. This field will be
ignored if the cloud-provider does not support the feature.'
type: string
loadBalancerSourceRanges:
description: 'If specified and supported by the platform,
this will restrict traffic through the cloud-provider
load-balancer will be restricted to the specified client
IPs. This field will be ignored if the cloud-provider
does not support the feature." More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/'
items:
type: string
type: array
ports:
description: 'The list of ports that are exposed by this
service. More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
items:
description: ServicePort contains information on service's
port.
properties:
appProtocol:
description: The application protocol for this port.
This field follows standard Kubernetes label syntax.
Un-prefixed names are reserved for IANA standard
service names (as per RFC-6335 and http://www.iana.org/assignments/service-names).
Non-standard protocols should use prefixed names
such as mycompany.com/my-custom-protocol.
type: string
name:
description: The name of this port within the service.
This must be a DNS_LABEL. All ports within a ServiceSpec
must have unique names. When considering the endpoints
for a Service, this must match the 'name' field
in the EndpointPort. Optional if only one ServicePort
is defined on this service.
type: string
nodePort:
description: 'The port on each node on which this
service is exposed when type is NodePort or LoadBalancer. Usually
assigned by the system. If a value is specified,
in-range, and not in use it will be used, otherwise
the operation will fail. If not specified, a
port will be allocated if this Service requires
one. If this field is specified when creating
a Service which does not need it, creation will
fail. This field will be wiped when updating a
Service to no longer need it (e.g. changing type
from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport'
format: int32
type: integer
port:
description: The port that will be exposed by this
service.
format: int32
type: integer
protocol:
default: TCP
description: The IP protocol for this port. Supports
"TCP", "UDP", and "SCTP". Default is TCP.
type: string
targetPort:
anyOf:
- type: integer
- type: string
description: 'Number or name of the port to access
on the pods targeted by the service. Number must
be in the range 1 to 65535. Name must be an IANA_SVC_NAME.
If this is a string, it will be looked up as a
named port in the target Pod''s container ports.
If this is not specified, the value of the ''port''
field is used (an identity map). This field is
ignored for services with clusterIP=None, and
should be omitted or set equal to the ''port''
field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service'
x-kubernetes-int-or-string: true
required:
- port
type: object
type: array
x-kubernetes-list-map-keys:
- port
- protocol
x-kubernetes-list-type: map
publishNotReadyAddresses:
description: publishNotReadyAddresses indicates that any
agent which deals with endpoints for this Service should
disregard any indications of ready/not-ready. The primary
use case for setting this field is for a StatefulSet's
Headless Service to propagate SRV DNS records for its
Pods for the purpose of peer discovery. The Kubernetes
controllers that generate Endpoints and EndpointSlice
resources for Services interpret this to mean that all
endpoints are considered "ready" even if the Pods themselves
are not. Agents which consume only Kubernetes generated
endpoints through the Endpoints or EndpointSlice resources
can safely assume this behavior.
type: boolean
selector:
additionalProperties:
type: string
description: 'Route service traffic to pods with label
keys and values matching this selector. If empty or
not present, the service is assumed to have an external
process managing its endpoints, which Kubernetes will
not modify. Only applies to types ClusterIP, NodePort,
and LoadBalancer. Ignored if type is ExternalName. More
info: https://kubernetes.io/docs/concepts/services-networking/service/'
type: object
x-kubernetes-map-type: atomic
sessionAffinity:
description: 'Supports "ClientIP" and "None". Used to
maintain session affinity. Enable client IP based session
affinity. Must be ClientIP or None. Defaults to None.
More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies'
type: string
sessionAffinityConfig:
description: sessionAffinityConfig contains the configurations
of session affinity.
properties:
clientIP:
description: clientIP contains the configurations
of Client IP based session affinity.
properties:
timeoutSeconds:
description: timeoutSeconds specifies the seconds
of ClientIP type session sticky time. The value
must be >0 && <=86400(for 1 day) if ServiceAffinity
== "ClientIP". Default value is 10800(for 3
hours).
format: int32
type: integer
type: object
type: object
type:
description: 'type determines how the Service is exposed.
Defaults to ClusterIP. Valid options are ExternalName,
ClusterIP, NodePort, and LoadBalancer. "ClusterIP" allocates
a cluster-internal IP address for load-balancing to
endpoints. Endpoints are determined by the selector
or if that is not specified, by manual construction
of an Endpoints object or EndpointSlice objects. If
clusterIP is "None", no virtual IP is allocated and
the endpoints are published as a set of endpoints rather
than a virtual IP. "NodePort" builds on ClusterIP and
allocates a port on every node which routes to the same
endpoints as the clusterIP. "LoadBalancer" builds on
NodePort and creates an external load-balancer (if supported
in the current cloud) which routes to the same endpoints
as the clusterIP. "ExternalName" aliases this service
to the specified externalName. Several other fields
do not apply to ExternalName services. More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types'
type: string
type: object
status:
description: 'Most recently observed status of the service.
Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'
properties:
conditions:
description: Current service state
items:
description: "Condition contains details for one aspect
of the current state of this API Resource. --- This
struct is intended for direct use as an array at the
field path .status.conditions. For example, type
FooStatus struct{ // Represents the observations
of a foo's current state. // Known .status.conditions.type
are: \"Available\", \"Progressing\", and \"Degraded\"
\ // +patchMergeKey=type // +patchStrategy=merge
\ // +listType=map // +listMapKey=type Conditions
[]metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
\n // other fields }"
properties:
lastTransitionTime:
description: lastTransitionTime is the last time
the condition transitioned from one status to
another. This should be when the underlying condition
changed. If that is not known, then using the
time when the API field changed is acceptable.
format: date-time
type: string
message:
description: message is a human readable message
indicating details about the transition. This
may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: observedGeneration represents the .metadata.generation
that the condition was set based upon. For instance,
if .metadata.generation is currently 12, but the
.status.conditions[x].observedGeneration is 9,
the condition is out of date with respect to the
current state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: reason contains a programmatic identifier
indicating the reason for the condition's last
transition. Producers of specific condition types
may define expected values and meanings for this
field, and whether the values are considered a
guaranteed API. The value should be a CamelCase
string. This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True,
False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in
foo.example.com/CamelCase. --- Many .condition.type
values are consistent across resources like Available,
but because arbitrary conditions can be useful
(see .node.status.conditions), the ability to
deconflict is important. The regex it matches
is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
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
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
loadBalancer:
description: LoadBalancer contains the current status
of the load-balancer, if one is present.
properties:
ingress:
description: Ingress is a list containing ingress
points for the load-balancer. Traffic intended for
the service should be sent to these ingress points.
items:
description: 'LoadBalancerIngress represents the
status of a load-balancer ingress point: traffic
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 (typically
AWS load-balancers)
type: string
ip:
description: IP is set for load-balancer ingress
points that are IP based (typically GCE or
OpenStack load-balancers)
type: string
ports:
description: Ports is a list of records of service
ports If used, every port defined in the service
should have an entry in it
items:
properties:
error:
description: 'Error is to record the problem
with the service port The format of
the error shall comply with the following
rules: - built-in error values shall
be specified in this file and those
shall use CamelCase names - cloud
provider specific error values must
have names that comply with the format
foo.example.com/CamelCase. --- The regex
it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
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:
default: TCP
description: 'Protocol is the protocol
of the service port of which status
is recorded here The supported values
are: "TCP", "UDP", "SCTP"'
type: string
required:
- port
- protocol
type: object
type: array
x-kubernetes-list-type: atomic
type: object
type: array
type: object
type: object
type: object
type: object
trafficRoutingWrapper:
description: TrafficRoutingWrapper indicates information of traffic
route related with workload
properties:
httpRouteWrapper:
description: HTTPRouteWrapper indacates information of Gateway
API
properties:
httpRoute:
description: HTTPRoute indicates the HTTPRoute
properties:
apiVersion:
description: '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'
type: string
kind:
description: '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'
type: string
metadata:
type: object
spec:
description: Spec defines the desired state of HTTPRoute.
properties:
hostnames:
description: "Hostnames defines a set of hostname
that should match against the HTTP Host header to
select a HTTPRoute to process the request. This
matches the RFC 1123 definition of a hostname with
2 notable exceptions: \n 1. IPs are not allowed.
2. A hostname may be prefixed with a wildcard label
(`*.`). The wildcard label must appear by itself
as the first label. \n If a hostname is specified
by both the Listener and HTTPRoute, there must be
at least one intersecting hostname for the HTTPRoute
to be attached to the Listener. For example: \n
* A Listener with `test.example.com` as the hostname
matches HTTPRoutes that have either not specified
any hostnames, or have specified at least one
of `test.example.com` or `*.example.com`. * A Listener
with `*.example.com` as the hostname matches HTTPRoutes
\ that have either not specified any hostnames
or have specified at least one hostname that matches
the Listener hostname. For example, `test.example.com`
and `*.example.com` would both match. On the other
\ hand, `example.com` and `test.example.net` would
not match. \n If both the Listener and HTTPRoute
have specified hostnames, any HTTPRoute hostnames
that do not match the Listener hostname MUST be
ignored. For example, if a Listener specified `*.example.com`,
and the HTTPRoute specified `test.example.com` and
`test.example.net`, `test.example.net` must not
be considered for a match. \n If both the Listener
and HTTPRoute have specified hostnames, and none
match with the criteria above, then the HTTPRoute
is not accepted. The implementation must raise an
'Accepted' Condition with a status of `False` in
the corresponding RouteParentStatus. \n Support:
Core"
items:
description: "Hostname is the fully qualified domain
name of a network host. This matches the RFC 1123
definition of a hostname with 2 notable exceptions:
\n 1. IPs are not allowed. 2. A hostname may be
prefixed with a wildcard label (`*.`). The wildcard
\ label must appear by itself as the first label.
\n Hostname can be \"precise\" which is a domain
name without the terminating dot of a network
host (e.g. \"foo.example.com\") or \"wildcard\",
which is a domain name prefixed with a single
wildcard label (e.g. `*.example.com`). \n Note
that as per RFC1035 and RFC1123, a *label* must
consist of lower case alphanumeric characters
or '-', and must start and end with an alphanumeric
character. No other punctuation is allowed."
maxLength: 253
minLength: 1
pattern: ^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
maxItems: 16
type: array
parentRefs:
description: "ParentRefs references the resources
(usually Gateways) that a Route wants to be attached
to. Note that the referenced parent resource needs
to allow this for the attachment to be complete.
For Gateways, that means the Gateway needs to allow
attachment from Routes of this kind and namespace.
\n The only kind of parent resource with \"Core\"
support is Gateway. This API may be extended in
the future to support additional kinds of parent
resources such as one of the route kinds. \n It
is invalid to reference an identical parent more
than once. It is valid to reference multiple distinct
sections within the same parent resource, such as
2 Listeners within a Gateway. \n It is possible
to separately reference multiple distinct objects
that may be collapsed by an implementation. For
example, some implementations may choose to merge
compatible Gateway Listeners together. If that is
the case, the list of routes attached to those resources
should also be merged."
items:
description: "ParentRef identifies an API object
(usually a Gateway) that can be considered a parent
of this resource (usually a route). The only kind
of parent resource with \"Core\" support is Gateway.
This API may be extended in the future to support
additional kinds of parent resources, such as
HTTPRoute. \n The API object must be valid in
the cluster; the Group and Kind must be registered
in the cluster for this reference to be valid.
\n References to objects with invalid Group and
Kind are not valid, and must be rejected by the
implementation, with appropriate Conditions set
on the containing object."
properties:
group:
default: gateway.networking.k8s.io
description: "Group is the group of the referent.
\n Support: Core"
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
default: Gateway
description: "Kind is kind of the referent.
\n Support: Core (Gateway) Support: Custom
(Other Resources)"
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: "Name is the name of the referent.
\n Support: Core"
maxLength: 253
minLength: 1
type: string
namespace:
description: "Namespace is the namespace of
the referent. When unspecified (or empty string),
this refers to the local namespace of the
Route. \n Support: Core"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
sectionName:
description: "SectionName is the name of a section
within the target resource. In the following
resources, SectionName is interpreted as the
following: \n * Gateway: Listener Name \n
Implementations MAY choose to support attaching
Routes to other resources. If that is the
case, they MUST clearly document how SectionName
is interpreted. \n When unspecified (empty
string), this will reference the entire resource.
For the purpose of status, an attachment is
considered successful if at least one section
in the parent resource accepts it. For example,
Gateway listeners can restrict which Routes
can attach to them by Route kind, namespace,
or hostname. If 1 of 2 Gateway listeners accept
attachment from the referencing Route, the
Route MUST be considered successfully attached.
If no Gateway listeners accept attachment
from this Route, the Route MUST be considered
detached from the Gateway. \n Support: Core"
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
required:
- name
type: object
maxItems: 32
type: array
rules:
default:
- matches:
- path:
type: PathPrefix
value: /
description: Rules are a list of HTTP matchers, filters
and actions.
items:
description: HTTPRouteRule defines semantics for
matching an HTTP request based on conditions (matches),
processing it (filters), and forwarding the request
to an API object (backendRefs).
properties:
backendRefs:
description: "If unspecified or invalid (refers
to a non-existent resource or a Service with
no endpoints), the rule performs no forwarding.
If there are also no filters specified that
would result in a response being sent, a HTTP
503 status code is returned. 503 responses
must be sent so that the overall weight is
respected; if an invalid backend is requested
to have 80% of requests, then 80% of requests
must get a 503 instead. \n Support: Core for
Kubernetes Service Support: Custom for any
other resource \n Support for weight: Core"
items:
description: HTTPBackendRef defines how a
HTTPRoute should forward an HTTP request.
properties:
filters:
description: "Filters defined at this
level should be executed if and only
if the request is being forwarded to
the backend defined here. \n Support:
Custom (For broader support of filters,
use the Filters field in HTTPRouteRule.)"
items:
description: HTTPRouteFilter defines
processing steps that must be completed
during the request or response lifecycle.
HTTPRouteFilters are meant as an extension
point to express processing that may
be done in Gateway implementations.
Some examples include request or response
modification, implementing authentication
strategies, rate-limiting, and traffic
shaping. API guarantee/conformance
is defined based on the type of the
filter.
properties:
extensionRef:
description: "ExtensionRef is an
optional, implementation-specific
extension to the \"filter\" behavior.
\ For example, resource \"myroutefilter\"
in group \"networking.example.net\").
ExtensionRef MUST NOT be used
for core and extended filters.
\n Support: Implementation-specific"
properties:
group:
description: Group is the group
of the referent. For example,
"networking.k8s.io". When
unspecified (empty string),
core API group is inferred.
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
description: Kind is kind of
the referent. For example
"HTTPRoute" or "Service".
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: Name is the name
of the referent.
maxLength: 253
minLength: 1
type: string
required:
- group
- kind
- name
type: object
requestHeaderModifier:
description: "RequestHeaderModifier
defines a schema for a filter
that modifies request headers.
\n Support: Core"
properties:
add:
description: "Add adds the given
header(s) (name, value) to
the request before the action.
It appends to any existing
values associated with the
header name. \n Input: GET
/foo HTTP/1.1 my-header:
foo \n Config: add: -
name: \"my-header\" value:
\"bar\" \n Output: GET /foo
HTTP/1.1 my-header: foo
\ my-header: bar"
items:
description: HTTPHeader represents
an HTTP Header name and
value as defined by RFC
7230.
properties:
name:
description: "Name is
the name of the HTTP
Header to be matched.
Name matching MUST be
case insensitive. (See
https://tools.ietf.org/html/rfc7230#section-3.2).
\n If multiple entries
specify equivalent header
names, the first entry
with an equivalent name
MUST be considered for
a match. Subsequent
entries with an equivalent
header name MUST be
ignored. Due to the
case-insensitivity of
header names, \"foo\"
and \"Foo\" are considered
equivalent."
maxLength: 256
minLength: 1
pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
type: string
value:
description: Value is
the value of HTTP Header
to be matched.
maxLength: 4096
minLength: 1
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
remove:
description: "Remove the given
header(s) from the HTTP request
before the action. The value
of Remove is a list of HTTP
header names. Note that the
header names are case-insensitive
(see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
\n Input: GET /foo HTTP/1.1
\ my-header1: foo my-header2:
bar my-header3: baz \n Config:
\ remove: [\"my-header1\",
\"my-header3\"] \n Output:
\ GET /foo HTTP/1.1 my-header2:
bar"
items:
type: string
maxItems: 16
type: array
set:
description: "Set overwrites
the request with the given
header (name, value) before
the action. \n Input: GET
/foo HTTP/1.1 my-header:
foo \n Config: set: -
name: \"my-header\" value:
\"bar\" \n Output: GET /foo
HTTP/1.1 my-header: bar"
items:
description: HTTPHeader represents
an HTTP Header name and
value as defined by RFC
7230.
properties:
name:
description: "Name is
the name of the HTTP
Header to be matched.
Name matching MUST be
case insensitive. (See
https://tools.ietf.org/html/rfc7230#section-3.2).
\n If multiple entries
specify equivalent header
names, the first entry
with an equivalent name
MUST be considered for
a match. Subsequent
entries with an equivalent
header name MUST be
ignored. Due to the
case-insensitivity of
header names, \"foo\"
and \"Foo\" are considered
equivalent."
maxLength: 256
minLength: 1
pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
type: string
value:
description: Value is
the value of HTTP Header
to be matched.
maxLength: 4096
minLength: 1
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
type: object
requestMirror:
description: "RequestMirror defines
a schema for a filter that mirrors
requests. Requests are sent to
the specified destination, but
responses from that destination
are ignored. \n Support: Extended"
properties:
backendRef:
description: "BackendRef references
a resource where mirrored
requests are sent. \n If the
referent cannot be found,
this BackendRef is invalid
and must be dropped from the
Gateway. The controller must
ensure the \"ResolvedRefs\"
condition on the Route status
is set to `status: False`
and not configure this backend
in the underlying implementation.
\n If there is a cross-namespace
reference to an *existing*
object that is not allowed
by a ReferencePolicy, the
controller must ensure the
\"ResolvedRefs\" condition
on the Route is set to `status:
False`, with the \"RefNotPermitted\"
reason and not configure this
backend in the underlying
implementation. \n In either
error case, the Message of
the `ResolvedRefs` Condition
should be used to provide
more detail about the problem.
\n Support: Extended for Kubernetes
Service Support: Custom for
any other resource"
properties:
group:
default: ""
description: Group is the
group of the referent.
For example, "networking.k8s.io".
When unspecified (empty
string), core API group
is inferred.
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
default: Service
description: Kind is kind
of the referent. For example
"HTTPRoute" or "Service".
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: Name is the
name of the referent.
maxLength: 253
minLength: 1
type: string
namespace:
description: "Namespace
is the namespace of the
backend. When unspecified,
the local namespace is
inferred. \n Note that
when a namespace is specified,
a ReferencePolicy object
is required in the referent
namespace to allow that
namespace's owner to accept
the reference. See the
ReferencePolicy documentation
for details. \n Support:
Core"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
port:
description: Port specifies
the destination port number
to use for this resource.
Port is required when
the referent is a Kubernetes
Service. For other resources,
destination port might
be derived from the referent
resource or this field.
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- name
type: object
required:
- backendRef
type: object
requestRedirect:
description: "RequestRedirect defines
a schema for a filter that responds
to the request with an HTTP redirection.
\n Support: Core"
properties:
hostname:
description: "Hostname is the
hostname to be used in the
value of the `Location` header
in the response. When empty,
the hostname of the request
is used. \n Support: Core"
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
port:
description: "Port is the port
to be used in the value of
the `Location` header in the
response. When empty, port
(if specified) of the request
is used. \n Support: Extended"
format: int32
maximum: 65535
minimum: 1
type: integer
scheme:
description: "Scheme is the
scheme to be used in the value
of the `Location` header in
the response. When empty,
the scheme of the request
is used. \n Support: Extended"
enum:
- http
- https
type: string
statusCode:
default: 302
description: "StatusCode is
the HTTP status code to be
used in response. \n Support:
Core"
enum:
- 301
- 302
type: integer
type: object
type:
description: "Type identifies the
type of filter to apply. As with
other API fields, types are classified
into three conformance levels:
\n - Core: Filter types and their
corresponding configuration defined
by \"Support: Core\" in this
package, e.g. \"RequestHeaderModifier\".
All implementations must support
core filters. \n - Extended: Filter
types and their corresponding
configuration defined by \"Support:
Extended\" in this package, e.g.
\"RequestMirror\". Implementers
\ are encouraged to support extended
filters. \n - Custom: Filters
that are defined and supported
by specific vendors. In the
future, filters showing convergence
in behavior across multiple implementations
will be considered for inclusion
in extended or core conformance
levels. Filter-specific configuration
for such filters is specified
using the ExtensionRef field.
`Type` should be set to \"ExtensionRef\"
for custom filters. \n Implementers
are encouraged to define custom
implementation types to extend
the core API with implementation-specific
behavior. \n If a reference to
a custom filter type cannot be
resolved, the filter MUST NOT
be skipped. Instead, requests
that would have been processed
by that filter MUST receive a
HTTP error response."
enum:
- RequestHeaderModifier
- RequestMirror
- RequestRedirect
- ExtensionRef
type: string
required:
- type
type: object
maxItems: 16
type: array
group:
default: ""
description: Group is the group of the
referent. For example, "networking.k8s.io".
When unspecified (empty string), core
API group is inferred.
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
default: Service
description: Kind is kind of the referent.
For example "HTTPRoute" or "Service".
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: Name is the name of the referent.
maxLength: 253
minLength: 1
type: string
namespace:
description: "Namespace is the namespace
of the backend. When unspecified, the
local namespace is inferred. \n Note
that when a namespace is specified,
a ReferencePolicy object is required
in the referent namespace to allow that
namespace's owner to accept the reference.
See the ReferencePolicy documentation
for details. \n Support: Core"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
port:
description: Port specifies the destination
port number to use for this resource.
Port is required when the referent is
a Kubernetes Service. For other resources,
destination port might be derived from
the referent resource or this field.
format: int32
maximum: 65535
minimum: 1
type: integer
weight:
default: 1
description: "Weight specifies the proportion
of requests forwarded to the referenced
backend. This is computed as weight/(sum
of all weights in this BackendRefs list).
For non-zero values, there may be some
epsilon from the exact proportion defined
here depending on the precision an implementation
supports. Weight is not a percentage
and the sum of weights does not need
to equal 100. \n If only one backend
is specified and it has a weight greater
than 0, 100% of the traffic is forwarded
to that backend. If weight is set to
0, no traffic should be forwarded for
this entry. If unspecified, weight defaults
to 1. \n Support for this field varies
based on the context where used."
format: int32
maximum: 1000000
minimum: 0
type: integer
required:
- name
type: object
maxItems: 16
type: array
filters:
description: "Filters define the filters that
are applied to requests that match this rule.
\n The effects of ordering of multiple behaviors
are currently unspecified. This can change
in the future based on feedback during the
alpha stage. \n Conformance-levels at this
level are defined based on the type of filter:
\n - ALL core filters MUST be supported by
all implementations. - Implementers are encouraged
to support extended filters. - Implementation-specific
custom filters have no API guarantees across
\ implementations. \n Specifying a core filter
multiple times has unspecified or custom conformance.
\n Support: Core"
items:
description: HTTPRouteFilter defines processing
steps that must be completed during the
request or response lifecycle. HTTPRouteFilters
are meant as an extension point to express
processing that may be done in Gateway implementations.
Some examples include request or response
modification, implementing authentication
strategies, rate-limiting, and traffic shaping.
API guarantee/conformance is defined based
on the type of the filter.
properties:
extensionRef:
description: "ExtensionRef is an optional,
implementation-specific extension to
the \"filter\" behavior. For example,
resource \"myroutefilter\" in group
\"networking.example.net\"). ExtensionRef
MUST NOT be used for core and extended
filters. \n Support: Implementation-specific"
properties:
group:
description: Group is the group of
the referent. For example, "networking.k8s.io".
When unspecified (empty string),
core API group is inferred.
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
description: Kind is kind of the referent.
For example "HTTPRoute" or "Service".
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: Name is the name of the
referent.
maxLength: 253
minLength: 1
type: string
required:
- group
- kind
- name
type: object
requestHeaderModifier:
description: "RequestHeaderModifier defines
a schema for a filter that modifies
request headers. \n Support: Core"
properties:
add:
description: "Add adds the given header(s)
(name, value) to the request before
the action. It appends to any existing
values associated with the header
name. \n Input: GET /foo HTTP/1.1
\ my-header: foo \n Config: add:
\ - name: \"my-header\" value:
\"bar\" \n Output: GET /foo HTTP/1.1
\ my-header: foo my-header: bar"
items:
description: HTTPHeader represents
an HTTP Header name and value
as defined by RFC 7230.
properties:
name:
description: "Name is the name
of the HTTP Header to be matched.
Name matching MUST be case
insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
\n If multiple entries specify
equivalent header names, the
first entry with an equivalent
name MUST be considered for
a match. Subsequent entries
with an equivalent header
name MUST be ignored. Due
to the case-insensitivity
of header names, \"foo\" and
\"Foo\" are considered equivalent."
maxLength: 256
minLength: 1
pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
type: string
value:
description: Value is the value
of HTTP Header to be matched.
maxLength: 4096
minLength: 1
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
remove:
description: "Remove the given header(s)
from the HTTP request before the
action. The value of Remove is a
list of HTTP header names. Note
that the header names are case-insensitive
(see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
\n Input: GET /foo HTTP/1.1 my-header1:
foo my-header2: bar my-header3:
baz \n Config: remove: [\"my-header1\",
\"my-header3\"] \n Output: GET
/foo HTTP/1.1 my-header2: bar"
items:
type: string
maxItems: 16
type: array
set:
description: "Set overwrites the request
with the given header (name, value)
before the action. \n Input: GET
/foo HTTP/1.1 my-header: foo \n
Config: set: - name: \"my-header\"
\ value: \"bar\" \n Output: GET
/foo HTTP/1.1 my-header: bar"
items:
description: HTTPHeader represents
an HTTP Header name and value
as defined by RFC 7230.
properties:
name:
description: "Name is the name
of the HTTP Header to be matched.
Name matching MUST be case
insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
\n If multiple entries specify
equivalent header names, the
first entry with an equivalent
name MUST be considered for
a match. Subsequent entries
with an equivalent header
name MUST be ignored. Due
to the case-insensitivity
of header names, \"foo\" and
\"Foo\" are considered equivalent."
maxLength: 256
minLength: 1
pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
type: string
value:
description: Value is the value
of HTTP Header to be matched.
maxLength: 4096
minLength: 1
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
type: object
requestMirror:
description: "RequestMirror defines a
schema for a filter that mirrors requests.
Requests are sent to the specified destination,
but responses from that destination
are ignored. \n Support: Extended"
properties:
backendRef:
description: "BackendRef references
a resource where mirrored requests
are sent. \n If the referent cannot
be found, this BackendRef is invalid
and must be dropped from the Gateway.
The controller must ensure the \"ResolvedRefs\"
condition on the Route status is
set to `status: False` and not configure
this backend in the underlying implementation.
\n If there is a cross-namespace
reference to an *existing* object
that is not allowed by a ReferencePolicy,
the controller must ensure the \"ResolvedRefs\"
\ condition on the Route is set
to `status: False`, with the \"RefNotPermitted\"
reason and not configure this backend
in the underlying implementation.
\n In either error case, the Message
of the `ResolvedRefs` Condition
should be used to provide more detail
about the problem. \n Support: Extended
for Kubernetes Service Support:
Custom for any other resource"
properties:
group:
default: ""
description: Group is the group
of the referent. For example,
"networking.k8s.io". When unspecified
(empty string), core API group
is inferred.
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
default: Service
description: Kind is kind of the
referent. For example "HTTPRoute"
or "Service".
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: Name is the name
of the referent.
maxLength: 253
minLength: 1
type: string
namespace:
description: "Namespace is the
namespace of the backend. When
unspecified, the local namespace
is inferred. \n Note that when
a namespace is specified, a
ReferencePolicy object is required
in the referent namespace to
allow that namespace's owner
to accept the reference. See
the ReferencePolicy documentation
for details. \n Support: Core"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
port:
description: Port specifies the
destination port number to use
for this resource. Port is required
when the referent is a Kubernetes
Service. For other resources,
destination port might be derived
from the referent resource or
this field.
format: int32
maximum: 65535
minimum: 1
type: integer
required:
- name
type: object
required:
- backendRef
type: object
requestRedirect:
description: "RequestRedirect defines
a schema for a filter that responds
to the request with an HTTP redirection.
\n Support: Core"
properties:
hostname:
description: "Hostname is the hostname
to be used in the value of the `Location`
header in the response. When empty,
the hostname of the request is used.
\n Support: Core"
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
port:
description: "Port is the port to
be used in the value of the `Location`
header in the response. When empty,
port (if specified) of the request
is used. \n Support: Extended"
format: int32
maximum: 65535
minimum: 1
type: integer
scheme:
description: "Scheme is the scheme
to be used in the value of the `Location`
header in the response. When empty,
the scheme of the request is used.
\n Support: Extended"
enum:
- http
- https
type: string
statusCode:
default: 302
description: "StatusCode is the HTTP
status code to be used in response.
\n Support: Core"
enum:
- 301
- 302
type: integer
type: object
type:
description: "Type identifies the type
of filter to apply. As with other API
fields, types are classified into three
conformance levels: \n - Core: Filter
types and their corresponding configuration
defined by \"Support: Core\" in this
package, e.g. \"RequestHeaderModifier\".
All implementations must support core
filters. \n - Extended: Filter types
and their corresponding configuration
defined by \"Support: Extended\" in
this package, e.g. \"RequestMirror\".
Implementers are encouraged to support
extended filters. \n - Custom: Filters
that are defined and supported by specific
vendors. In the future, filters showing
convergence in behavior across multiple
\ implementations will be considered
for inclusion in extended or core conformance
levels. Filter-specific configuration
for such filters is specified using
the ExtensionRef field. `Type` should
be set to \"ExtensionRef\" for custom
filters. \n Implementers are encouraged
to define custom implementation types
to extend the core API with implementation-specific
behavior. \n If a reference to a custom
filter type cannot be resolved, the
filter MUST NOT be skipped. Instead,
requests that would have been processed
by that filter MUST receive a HTTP error
response."
enum:
- RequestHeaderModifier
- RequestMirror
- RequestRedirect
- ExtensionRef
type: string
required:
- type
type: object
maxItems: 16
type: array
matches:
default:
- path:
type: PathPrefix
value: /
description: "Matches define conditions used
for matching the rule against incoming HTTP
requests. Each match is independent, i.e.
this rule will be matched if **any** one of
the matches is satisfied. \n For example,
take the following matches configuration:
\n ``` matches: - path: value: \"/foo\"
\ headers: - name: \"version\" value:
\"v2\" - path: value: \"/v2/foo\" ```
\n For a request to match against this rule,
a request must satisfy EITHER of the two conditions:
\n - path prefixed with `/foo` AND contains
the header `version: v2` - path prefix of
`/v2/foo` \n See the documentation for HTTPRouteMatch
on how to specify multiple match conditions
that should be ANDed together. \n If no matches
are specified, the default is a prefix path
match on \"/\", which has the effect of matching
every HTTP request. \n Proxy or Load Balancer
routing configuration generated from HTTPRoutes
MUST prioritize rules based on the following
criteria, continuing on ties. Precedence must
be given to the the Rule with the largest
number of: \n * Characters in a matching non-wildcard
hostname. * Characters in a matching hostname.
* Characters in a matching path. * Header
matches. * Query param matches. \n If ties
still exist across multiple Routes, matching
precedence MUST be determined in order of
the following criteria, continuing on ties:
\n * The oldest Route based on creation timestamp.
* The Route appearing first in alphabetical
order by \"<namespace>/<name>\". \n If ties
still exist within the Route that has been
given precedence, matching precedence MUST
be granted to the first matching rule meeting
the above criteria."
items:
description: "HTTPRouteMatch defines the predicate
used to match requests to a given action.
Multiple match types are ANDed together,
i.e. the match will evaluate to true only
if all conditions are satisfied. \n For
example, the match below will match a HTTP
request only if its path starts with `/foo`
AND it contains the `version: v1` header:
\n ``` match: path: value: \"/foo\"
\ headers: - name: \"version\" value
\"v1\" ```"
properties:
headers:
description: Headers specifies HTTP request
header matchers. Multiple match values
are ANDed together, meaning, a request
must match all the specified headers
to select the route.
items:
description: HTTPHeaderMatch describes
how to select a HTTP route by matching
HTTP request headers.
properties:
name:
description: "Name is the name of
the HTTP Header to be matched.
Name matching MUST be case insensitive.
(See https://tools.ietf.org/html/rfc7230#section-3.2).
\n If multiple entries specify
equivalent header names, only
the first entry with an equivalent
name MUST be considered for a
match. Subsequent entries with
an equivalent header name MUST
be ignored. Due to the case-insensitivity
of header names, \"foo\" and \"Foo\"
are considered equivalent. \n
When a header is repeated in an
HTTP request, it is implementation-specific
behavior as to how this is represented.
Generally, proxies should follow
the guidance from the RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2
regarding processing a repeated
header, with special handling
for \"Set-Cookie\"."
maxLength: 256
minLength: 1
pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
type: string
type:
default: Exact
description: "Type specifies how
to match against the value of
the header. \n Support: Core (Exact)
\n Support: Custom (RegularExpression)
\n Since RegularExpression HeaderMatchType
has custom conformance, implementations
can support POSIX, PCRE or any
other dialects of regular expressions.
Please read the implementation's
documentation to determine the
supported dialect."
enum:
- Exact
- RegularExpression
type: string
value:
description: Value is the value
of HTTP Header to be matched.
maxLength: 4096
minLength: 1
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
method:
description: "Method specifies HTTP method
matcher. When specified, this route
will be matched only if the request
has the specified method. \n Support:
Extended"
enum:
- GET
- HEAD
- POST
- PUT
- DELETE
- CONNECT
- OPTIONS
- TRACE
- PATCH
type: string
path:
default:
type: PathPrefix
value: /
description: Path specifies a HTTP request
path matcher. If this field is not specified,
a default prefix match on the "/" path
is provided.
properties:
type:
default: PathPrefix
description: "Type specifies how to
match against the path Value. \n
Support: Core (Exact, PathPrefix)
\n Support: Custom (RegularExpression)"
enum:
- Exact
- PathPrefix
- RegularExpression
type: string
value:
default: /
description: Value of the HTTP path
to match against.
maxLength: 1024
type: string
type: object
queryParams:
description: QueryParams specifies HTTP
query parameter matchers. Multiple match
values are ANDed together, meaning,
a request must match all the specified
query parameters to select the route.
items:
description: HTTPQueryParamMatch describes
how to select a HTTP route by matching
HTTP query parameters.
properties:
name:
description: Name is the name of
the HTTP query param to be matched.
This must be an exact string match.
(See https://tools.ietf.org/html/rfc7230#section-2.7.3).
maxLength: 256
minLength: 1
type: string
type:
default: Exact
description: "Type specifies how
to match against the value of
the query parameter. \n Support:
Extended (Exact) \n Support: Custom
(RegularExpression) \n Since RegularExpression
QueryParamMatchType has custom
conformance, implementations can
support POSIX, PCRE or any other
dialects of regular expressions.
Please read the implementation's
documentation to determine the
supported dialect."
enum:
- Exact
- RegularExpression
type: string
value:
description: Value is the value
of HTTP query param to be matched.
maxLength: 1024
minLength: 1
type: string
required:
- name
- value
type: object
maxItems: 16
type: array
x-kubernetes-list-map-keys:
- name
x-kubernetes-list-type: map
type: object
maxItems: 8
type: array
type: object
maxItems: 16
type: array
type: object
status:
description: Status defines the current state of HTTPRoute.
properties:
parents:
description: "Parents is a list of parent resources
(usually Gateways) that are associated with the
route, and the status of the route with respect
to each parent. When this route attaches to a parent,
the controller that manages the parent must add
an entry to this list when the controller first
sees the route and should update the entry as appropriate
when the route or gateway is modified. \n Note that
parent references that cannot be resolved by an
implementation of this API will not be added to
this list. Implementations of this API can only
populate Route status for the Gateways/parent resources
they are responsible for. \n A maximum of 32 Gateways
will be represented in this list. An empty list
means the route has not been attached to any Gateway."
items:
description: RouteParentStatus describes the status
of a route with respect to an associated Parent.
properties:
conditions:
description: "Conditions describes the status
of the route with respect to the Gateway.
Note that the route's availability is also
subject to the Gateway's own status conditions
and listener status. \n If the Route's ParentRef
specifies an existing Gateway that supports
Routes of this kind AND that Gateway's controller
has sufficient access, then that Gateway's
controller MUST set the \"Accepted\" condition
on the Route, to indicate whether the route
has been accepted or rejected by the Gateway,
and why. \n A Route MUST be considered \"Accepted\"
if at least one of the Route's rules is implemented
by the Gateway. \n There are a number of cases
where the \"Accepted\" condition may not be
set due to lack of controller visibility,
that includes when: \n * The Route refers
to a non-existent parent. * The Route is of
a type that the controller does not support.
* The Route is in a namespace the the controller
does not have access to."
items:
description: "Condition contains details for
one aspect of the current state of this
API Resource. --- This struct is intended
for direct use as an array at the field
path .status.conditions. For example, type
FooStatus struct{ // Represents the
observations of a foo's current state. //
Known .status.conditions.type are: \"Available\",
\"Progressing\", and \"Degraded\" //
+patchMergeKey=type // +patchStrategy=merge
\ // +listType=map // +listMapKey=type
\ Conditions []metav1.Condition `json:\"conditions,omitempty\"
patchStrategy:\"merge\" patchMergeKey:\"type\"
protobuf:\"bytes,1,rep,name=conditions\"`
\n // other fields }"
properties:
lastTransitionTime:
description: lastTransitionTime is the
last time the condition transitioned
from one status to another. This should
be when the underlying condition changed. If
that is not known, then using the time
when the API field changed is acceptable.
format: date-time
type: string
message:
description: message is a human readable
message indicating details about the
transition. This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: observedGeneration represents
the .metadata.generation that the condition
was set based upon. For instance, if
.metadata.generation is currently 12,
but the .status.conditions[x].observedGeneration
is 9, the condition is out of date with
respect to the current state of the
instance.
format: int64
minimum: 0
type: integer
reason:
description: reason contains a programmatic
identifier indicating the reason for
the condition's last transition. Producers
of specific condition types may define
expected values and meanings for this
field, and whether the values are considered
a guaranteed API. The value should be
a CamelCase string. This field may not
be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition,
one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase
or in foo.example.com/CamelCase. ---
Many .condition.type values are consistent
across resources like Available, but
because arbitrary conditions can be
useful (see .node.status.conditions),
the ability to deconflict is important.
The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
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
required:
- lastTransitionTime
- message
- reason
- status
- type
type: object
maxItems: 8
minItems: 1
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
controllerName:
description: "ControllerName is a domain/path
string that indicates the name of the controller
that wrote this status. This corresponds with
the controllerName field on GatewayClass.
\n Example: \"example.net/gateway-controller\".
\n The format of this field is DOMAIN \"/\"
PATH, where DOMAIN and PATH are valid Kubernetes
names (https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names)."
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*\/[A-Za-z0-9\/\-._~%!$&'()*+,;=:]+$
type: string
parentRef:
description: ParentRef corresponds with a ParentRef
in the spec that this RouteParentStatus struct
describes the status of.
properties:
group:
default: gateway.networking.k8s.io
description: "Group is the group of the
referent. \n Support: Core"
maxLength: 253
pattern: ^$|^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
kind:
default: Gateway
description: "Kind is kind of the referent.
\n Support: Core (Gateway) Support: Custom
(Other Resources)"
maxLength: 63
minLength: 1
pattern: ^[a-zA-Z]([-a-zA-Z0-9]*[a-zA-Z0-9])?$
type: string
name:
description: "Name is the name of the referent.
\n Support: Core"
maxLength: 253
minLength: 1
type: string
namespace:
description: "Namespace is the namespace
of the referent. When unspecified (or
empty string), this refers to the local
namespace of the Route. \n Support: Core"
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
sectionName:
description: "SectionName is the name of
a section within the target resource.
In the following resources, SectionName
is interpreted as the following: \n *
Gateway: Listener Name \n Implementations
MAY choose to support attaching Routes
to other resources. If that is the case,
they MUST clearly document how SectionName
is interpreted. \n When unspecified (empty
string), this will reference the entire
resource. For the purpose of status, an
attachment is considered successful if
at least one section in the parent resource
accepts it. For example, Gateway listeners
can restrict which Routes can attach to
them by Route kind, namespace, or hostname.
If 1 of 2 Gateway listeners accept attachment
from the referencing Route, the Route
MUST be considered successfully attached.
If no Gateway listeners accept attachment
from this Route, the Route MUST be considered
detached from the Gateway. \n Support:
Core"
maxLength: 253
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
type: string
required:
- name
type: object
required:
- controllerName
- parentRef
type: object
maxItems: 32
type: array
required:
- parents
type: object
required:
- spec
type: object
name:
description: Name indicates the httproute name
type: string
type: object
ingressWrapper:
description: Ingress indicates information of ingress
properties:
ingress:
description: Ingress indicates the ingress
properties:
apiVersion:
description: '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'
type: string
kind:
description: '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'
type: string
metadata:
description: 'Standard object''s metadata. More info:
https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata'
type: object
spec:
description: 'Spec is the desired state of the Ingress.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'
properties:
defaultBackend:
description: DefaultBackend is the backend that should
handle requests that don't match any rule. If Rules
are not specified, DefaultBackend must be specified.
If DefaultBackend is not set, the handling of requests
that do not match any of the rules will be up to
the Ingress controller.
properties:
resource:
description: Resource is an ObjectRef to another
Kubernetes resource in the namespace of the
Ingress object. If resource is specified, a
service.Name and service.Port must not be specified.
This is a mutually exclusive setting with "Service".
properties:
apiGroup:
description: APIGroup is the group for the
resource being referenced. If APIGroup is
not specified, the specified Kind must be
in the core API group. For any other third-party
types, APIGroup is required.
type: string
kind:
description: Kind is the type of resource
being referenced
type: string
name:
description: Name is the name of resource
being referenced
type: string
required:
- kind
- name
type: object
service:
description: Service references a Service as a
Backend. This is a mutually exclusive setting
with "Resource".
properties:
name:
description: Name is the referenced service.
The service must exist in the same namespace
as the Ingress object.
type: string
port:
description: Port of the referenced service.
A port name or port number is required for
a IngressServiceBackend.
properties:
name:
description: Name is the name of the port
on the Service. This is a mutually exclusive
setting with "Number".
type: string
number:
description: Number is the numerical port
number (e.g. 80) on the Service. This
is a mutually exclusive setting with
"Name".
format: int32
type: integer
type: object
required:
- name
type: object
type: object
ingressClassName:
description: IngressClassName is the name of the IngressClass
cluster resource. The associated IngressClass defines
which controller will implement the resource. This
replaces the deprecated `kubernetes.io/ingress.class`
annotation. For backwards compatibility, when that
annotation is set, it must be given precedence over
this field. The controller may emit a warning if
the field and annotation have different values.
Implementations of this API should ignore Ingresses
without a class specified. An IngressClass resource
may be marked as default, which can be used to set
a default value for this field. For more information,
refer to the IngressClass documentation.
type: string
rules:
description: A list of host rules used to configure
the Ingress. If unspecified, or no rule matches,
all traffic is sent to the default backend.
items:
description: IngressRule represents the rules mapping
the paths under a specified host to the related
backend services. Incoming requests are first
evaluated for a host match, then routed to the
backend associated with the matching IngressRuleValue.
properties:
host:
description: "Host is the fully qualified domain
name of a network host, as defined by RFC
3986. Note the following deviations from the
\"host\" part of the URI as defined in RFC
3986: 1. IPs are not allowed. Currently an
IngressRuleValue can only apply to the
IP in the Spec of the parent Ingress. 2. The
`:` delimiter is not respected because ports
are not allowed. \t Currently the port of
an Ingress is implicitly :80 for http and
\t :443 for https. Both these may change
in the future. Incoming requests are matched
against the host before the IngressRuleValue.
If the host is unspecified, the Ingress routes
all traffic based on the specified IngressRuleValue.
\n Host can be \"precise\" which is a domain
name without the terminating dot of a network
host (e.g. \"foo.bar.com\") or \"wildcard\",
which is a domain name prefixed with a single
wildcard label (e.g. \"*.foo.com\"). The wildcard
character '*' must appear by itself as the
first DNS label and matches only a single
label. You cannot have a wildcard label by
itself (e.g. Host == \"*\"). Requests will
be matched against the Host field in the following
way: 1. If Host is precise, the request matches
this rule if the http host header is equal
to Host. 2. If Host is a wildcard, then the
request matches this rule if the http host
header is to equal to the suffix (removing
the first label) of the wildcard rule."
type: string
http:
description: 'HTTPIngressRuleValue is a list
of http selectors pointing to backends. In
the example: http://<host>/<path>?<searchpart>
-> backend where where parts of the url correspond
to RFC 3986, this resource will be used to
match against everything after the last ''/''
and before the first ''?'' or ''#''.'
properties:
paths:
description: A collection of paths that
map requests to backends.
items:
description: HTTPIngressPath associates
a path with a backend. Incoming urls
matching the path are forwarded to the
backend.
properties:
backend:
description: Backend defines the referenced
service endpoint to which the traffic
will be forwarded to.
properties:
resource:
description: Resource is an ObjectRef
to another Kubernetes resource
in the namespace of the Ingress
object. If resource is specified,
a service.Name and service.Port
must not be specified. This
is a mutually exclusive setting
with "Service".
properties:
apiGroup:
description: APIGroup is the
group for the resource being
referenced. If APIGroup
is not specified, the specified
Kind must be in the core
API group. For any other
third-party types, APIGroup
is required.
type: string
kind:
description: Kind is the type
of resource being referenced
type: string
name:
description: Name is the name
of resource being referenced
type: string
required:
- kind
- name
type: object
service:
description: Service references
a Service as a Backend. This
is a mutually exclusive setting
with "Resource".
properties:
name:
description: Name is the referenced
service. The service must
exist in the same namespace
as the Ingress object.
type: string
port:
description: Port of the referenced
service. A port name or
port number is required
for a IngressServiceBackend.
properties:
name:
description: Name is the
name of the port on
the Service. This is
a mutually exclusive
setting with "Number".
type: string
number:
description: Number is
the numerical port number
(e.g. 80) on the Service.
This is a mutually exclusive
setting with "Name".
format: int32
type: integer
type: object
required:
- name
type: object
type: object
path:
description: Path is matched against
the path of an incoming request.
Currently it can contain characters
disallowed from the conventional
"path" part of a URL as defined
by RFC 3986. Paths must begin with
a '/' and must be present when using
PathType with value "Exact" or "Prefix".
type: string
pathType:
description: 'PathType determines
the interpretation of the Path matching.
PathType can be one of the following
values: * Exact: Matches the URL
path exactly. * Prefix: Matches
based on a URL path prefix split
by ''/''. Matching is done on
a path element by element basis.
A path element refers is the list
of labels in the path split by the
''/'' separator. A request is a match
for path p if every p is an element-wise
prefix of p of the request path.
Note that if the last element of
the path is a substring of the
last element in request path, it
is not a match (e.g. /foo/bar matches
/foo/bar/baz, but does not match
/foo/barbaz). * ImplementationSpecific:
Interpretation of the Path matching
is up to the IngressClass. Implementations
can treat this as a separate PathType or
treat it identically to Prefix or
Exact path types. Implementations
are required to support all path
types.'
type: string
required:
- backend
- pathType
type: object
type: array
x-kubernetes-list-type: atomic
required:
- paths
type: object
type: object
type: array
x-kubernetes-list-type: atomic
tls:
description: TLS configuration. Currently the Ingress
only supports a single TLS port, 443. If multiple
members of this list specify different hosts, they
will be multiplexed on the same port according to
the hostname specified through the SNI TLS extension,
if the ingress controller fulfilling the ingress
supports SNI.
items:
description: IngressTLS describes the transport
layer security associated with an Ingress.
properties:
hosts:
description: Hosts are a list of hosts included
in the TLS certificate. The values in this
list must match the name/s used in the tlsSecret.
Defaults to the wildcard host setting for
the loadbalancer controller fulfilling this
Ingress, if left unspecified.
items:
type: string
type: array
x-kubernetes-list-type: atomic
secretName:
description: SecretName is the name of the secret
used to terminate TLS traffic on port 443.
Field is left optional to allow TLS routing
based on SNI hostname alone. If the SNI host
in a listener conflicts with the "Host" header
field used by an IngressRule, the SNI host
is used for termination and value of the Host
header is used for routing.
type: string
type: object
type: array
x-kubernetes-list-type: atomic
type: object
status:
description: 'Status is the current state of the Ingress.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status'
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. Traffic intended
for the service should be sent to these ingress
points.
items:
description: 'LoadBalancerIngress represents
the status of a load-balancer ingress point:
traffic 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 (typically
AWS load-balancers)
type: string
ip:
description: IP is set for load-balancer
ingress points that are IP based (typically
GCE or OpenStack load-balancers)
type: string
ports:
description: Ports is a list of records
of service ports If used, every port defined
in the service should have an entry in
it
items:
properties:
error:
description: 'Error is to record the
problem with the service port The
format of the error shall comply
with the following rules: - built-in
error values shall be specified
in this file and those shall use CamelCase
names - cloud provider specific
error values must have names that
comply with the format foo.example.com/CamelCase.
--- The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
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:
default: TCP
description: 'Protocol is the protocol
of the service port of which status
is recorded here The supported values
are: "TCP", "UDP", "SCTP"'
type: string
required:
- port
- protocol
type: object
type: array
x-kubernetes-list-type: atomic
type: object
type: array
type: object
type: object
type: object
name:
description: Name indicates the ingress name
type: string
type: object
type: object
workload:
description: Workload indicates information of the workload, such
as cloneset, deployment, advanced statefulset
properties:
apiVersion:
description: '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'
type: string
kind:
description: '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'
type: string
name:
description: Name indicates the workload name
type: string
replicas:
description: Number of desired pods. This is a pointer to distinguish
between explicit zero and not specified. Defaults to 1.
format: int32
type: integer
selector:
description: Label selector for pods. It must match the pod template's
labels.
properties:
matchExpressions:
description: matchExpressions is a list of label selector
requirements. The requirements are ANDed.
items:
description: A label selector requirement is a selector
that contains values, a key, and an operator that relates
the key and values.
properties:
key:
description: key is the label key that the selector
applies to.
type: string
operator:
description: operator represents a key's relationship
to a set of values. Valid operators are In, NotIn,
Exists and DoesNotExist.
type: string
values:
description: values is an array of string values. If
the operator is In or NotIn, the values array must
be non-empty. If the operator is Exists or DoesNotExist,
the values array must be empty. This array is replaced
during a strategic merge patch.
items:
type: string
type: array
required:
- key
- operator
type: object
type: array
matchLabels:
additionalProperties:
type: string
description: matchLabels is a map of {key,value} pairs. A
single {key,value} in the matchLabels map is equivalent
to an element of matchExpressions, whose key field is "key",
the operator is "In", and the values array contains only
"value". The requirements are ANDed.
type: object
type: object
template:
description: Template describes the pods that will be created.
x-kubernetes-preserve-unknown-fields: true
type:
description: Type of deployment or CloneSetUpdateStrategy. Can
be "Recreate" or "RollingUpdate".
type: string
required:
- selector
- template
type: object
type: object
status:
description: RolloutHistoryStatus defines the observed state of RolloutHistory
properties:
canaryStepIndex:
description: CanaryStepIndex indicates the current step
format: int32
type: integer
canaryStepPods:
description: canaryStepPods indicates the pods released
items:
description: CanaryStepPods indicates the pods for a revision
properties:
pods:
description: Pods indicates the pods information
items:
description: Pod indicates the information of a pod, including
name, ip, node_name.
properties:
ip:
description: IP indicates the pod ip
type: string
name:
description: Name indicates the node name
type: string
node:
description: Node indicates the node which pod is located
at
type: string
type: object
type: array
podsInStep:
description: PodsInStep indicates the num of new pods released
this step
format: int32
type: integer
podsInTotal:
description: PodsInTotal indicates the num of new pods released
by now
format: int32
type: integer
stepIndex:
description: StepIndex indicates the step index
format: int32
type: integer
required:
- podsInStep
- podsInTotal
type: object
type: array
canaryStepState:
description: CanaryStepState indicates state of this rollout revision,
such as "init", "pending", "update", "terminated", "completed",
"cancelled", whick is upon rollout canary_step_state
type: string
phase:
description: Phase indicates phase of RolloutHistory, such as "pending",
"progressing", "completed"
type: string
rolloutState:
description: RolloutState indicates the rollouts status
properties:
message:
description: Message provides details on why the rollout is in
its current phase
type: string
rolloutPhase:
description: RolloutPhase is the rollout phase.
type: string
type: object
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []