2960 lines
204 KiB
YAML
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: []
|