gateway-api/config/servicepolicies/crd/experimental/cdnpolicy.yaml (334 lines of code) (raw):
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: (unknown)
creationTimestamp: null
name: cdnpolicies.networking.gke.io
spec:
group: networking.gke.io
names:
kind: CDNPolicy
listKind: CDNPolicyList
plural: cdnpolicies
singular: cdnpolicy
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: CDNPolicy provides a way to apply CDN policy configuration with
the GKE implementation of the Gateway 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: Spec defines the desired state of CDNPolicy.
properties:
default:
description: Default defines default policy configuration for the
targeted resource.
properties:
bypassCacheOnRequestHeaders:
description: Bypass the cache when the specified request headers
are matched - e.g. Pragma or Authorization headers. Up to 5
headers can be specified. The cache is bypassed for all CacheMode
settings.
items:
description: BypassCacheOnRequestHeaders configures bypassing
the cache when the specified request headers are matched -
e.g. Pragma or Authorization headers. Up to 5 headers can
be specified. The cache is bypassed for all CacheMode settings.
properties:
headerName:
description: The header field name to match on when bypassing
cache. Values are case-insensitive.
maxLength: 256
type: string
type: object
type: array
cacheMode:
description: 'Specifies the cache setting for all responses from
this backend. The possible values are: * USE_ORIGIN_HEADERS:
Requires the origin to set valid caching headers to cache
content. Responses without these headers will not be cached at
Google''s edge, and will require a full trip to the origin on
every request, potentially impacting performance and increasing
load on the origin server. * FORCE_CACHE_ALL: Cache all content,
ignoring any "private", "no-store" or "no-cache" directives
in Cache-Control response headers. Warning: this may result
in Cloud CDN caching private, per-user (user identifiable)
content. * CACHE_ALL_STATIC: Automatically cache static content,
including common image formats, media (video and audio), and
web assets (JavaScript and CSS). Requests and responses that
are marked as uncacheable, as well as dynamic content (including
HTML), will not be cached.'
enum:
- USE_ORIGIN_HEADERS
- FORCE_CACHE_ALL
- CACHE_ALL_STATIC
type: string
cachePolicy:
description: This field can only be specified if CDN caching is
enabled for this backend service. The field configures CDN cache
settings.
properties:
includeHost:
description: If true, requests to different hosts will be
cached separately.
type: boolean
includeProtocol:
description: If true, http and https requests will be cached
separately.
type: boolean
includeQueryString:
description: If true, query string parameters are included
in the cache key according to QueryStringDenylist and QueryStringAllowlist.
If neither is set, the entire query string is included and
if false the entire query string is excluded.
type: boolean
queryStringAllowlist:
description: Names of query string parameters to include in
cache keys. All other parameters are excluded. Either specify
QueryStringDenylist or QueryStringAllowlist, but not both.
items:
type: string
type: array
queryStringDenylist:
description: Names of query string parameters to exclude from
cache keys. All other parameters are included. Either specify
QueryStringDenylist or QueryStringAllowlist, but not both.
items:
type: string
type: array
type: object
clientTtl:
description: Specifies a separate client (e.g. browser client)
maximum TTL. This is used to clamp the max-age (or Expires)
value sent to the client. With FORCE_CACHE_ALL, the lesser of
ClientTTL and DefaultTTL is used for the response max-age directive,
along with a "public" directive. For cacheable content in CACHE_ALL_STATIC
mode, ClientTTL clamps the max-age from the origin (if specified),
or else sets the response max-age directive to the lesser of
the ClientTTL and DefaultTTL, and also ensures a "public" cache-control
directive is present. If a client TTL is not specified, a default
value (1 hour) will be used. The maximum allowed value is 31.622.400s
(1 year).
format: int32
maximum: 31622400
minimum: 0
type: integer
defaultTtl:
description: Specifies the default TTL for cached content served
by this origin for responses that do not have an existing valid
TTL (max-age or s-max-age). Setting a TTL of 0 means "always
revalidate". The value of DefaultTTL cannot be set to a value
greater than that of MaxTTL, but can be equal. When the CacheMode
is set to FORCE_CACHE_ALL, the DefaultTTL will overwrite the
TTL set in all responses. The maximum allowed value is 31.622.400s
(1 year), noting that infrequently accessed objects may be evicted
from the cache before the defined TTL.
format: int32
maximum: 31622400
minimum: 0
type: integer
disabled:
description: This field denotes whether to disable CDN caching.
type: boolean
maxTtl:
description: Specifies the maximum allowed TTL for cached content
served by this origin. Cache directives that attempt to set
a max-age or s-maxage higher than this, or an Expires header
more than MaxTTL seconds in the future will be capped at the
value of MaxTTL, as if it were the value of an s-maxage Cache-Control
directive. Headers sent to the client will not be modified.
Setting a TTL of 0 means "always revalidate". The maximum allowed
value is 31.622.400s (1 year), noting that infrequently accessed
objects may be evicted from the cache before the defined TTL.
format: int32
maximum: 31622400
minimum: 0
type: integer
negativeCaching:
description: 'Negative caching allows per-status code TTLs to
be set, in order to apply fine-grained caching for common errors
or redirects. This can reduce the load on your origin and improve
end-user experience by reducing response latency. When the cache
mode is set to CACHE_ALL_STATIC or USE_ORIGIN_HEADERS, negative
caching applies to responses with the specified response code
that lack any Cache-Control, Expires, or Pragma: no-cache directives.
When the cache mode is set to FORCE_CACHE_ALL, negative caching
applies to all responses with the specified response code, and
overrides any caching headers. By default, Cloud CDN will apply
the following default TTLs to these status codes: * HTTP 300
(Multiple Choice), 301, 308 (Permanent Redirects): 10m * HTTP
404 (Not Found), 410 (Gone), 451 (Unavailable For Legal Reasons):
120s * HTTP 405 (Method Not Found), 421 (Misdirected Request),
501 (Not Implemented): 60s. These defaults can be overridden
in NegativeCachingPolicy.'
type: boolean
negativeCachingPolicy:
description: Sets a cache TTL for the specified HTTP status code.
NegativeCaching must be enabled to configure NegativeCachingPolicy.
Omitting the policy and leaving NegativeCaching enabled will
use Cloud CDN's default cache TTLs. Note that when specifying
an explicit NegativeCachingPolicy, you should take care to specify
a cache TTL for all response codes that you wish to cache. Cloud
CDN will not apply any default negative caching when a policy
exists.
items:
description: NegativeCachingPolicy sets cache TTL for the specified
HTTP status code.
properties:
code:
description: The HTTP status code to define a TTL against.
Only HTTP status codes 300, 301, 302, 307, 308, 404, 405,
410, 421, 451 and 501 can be specified as values, and
you cannot specify a status code more than once.
enum:
- 300
- 301
- 302
- 307
- 308
- 404
- 405
- 410
- 421
- 451
- 501
format: int32
type: integer
ttl:
description: The TTL (in seconds) for which to cache responses
with the corresponding status code. The maximum allowed
value is 1800s (30 minutes), noting that infrequently
accessed objects may be evicted from the cache before
the defined TTL.
format: int32
maximum: 1800
minimum: 0
type: integer
type: object
type: array
requestCoalescing:
description: If true, Cloud CDN will combine multiple concurrent
cache fill requests into a small number of requests to the origin.
type: boolean
serveWhileStale:
description: Serve existing content from the cache (if available)
when revalidating content with the origin, or when an error
is encountered when refreshing the cache. This setting defines
the default "max-stale" duration for any cached responses that
do not specify a max-stale directive. Stale responses that exceed
the TTL configured here will not be served. The default limit
(max-stale) is 86400s (1 day), which will allow stale content
to be served up to this limit beyond the max-age (or s-max-age)
of a cached response. The maximum allowed value is 604800 (1
week). Set this to zero (0) to disable serve-while-stale.
format: int32
maximum: 604800
minimum: 0
type: integer
signedUrlCacheMaxAgeSec:
description: 'Maximum number of seconds the response to a signed
URL request will be considered fresh. After this time period,
the response will be revalidated before being served. Defaults
to 1hr (3600s). When serving responses to signed URL requests,
Cloud CDN will internally behave as though all responses from
this backend had a "Cache-Control: public, max-age=[TTL]" header,
regardless of any existing Cache-Control header. The actual
headers served in responses will not be altered.'
format: int64
minimum: 0
type: integer
required:
- disabled
type: object
targetRef:
description: TargetRef identifies an API object to apply policy to.
properties:
group:
description: Group is the group of the target resource.
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 target resource.
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 target resource.
maxLength: 253
minLength: 1
type: string
namespace:
description: Namespace is the namespace of the referent. When
unspecified, the local namespace is inferred. Even when policy
targets a resource in a different namespace, it MUST only apply
to traffic originating from the same namespace as the policy.
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
type: string
required:
- group
- kind
- name
type: object
required:
- targetRef
type: object
status:
description: Status defines the current state of CDNPolicy.
properties:
conditions:
description: Conditions describe the current conditions of the CDNPolicy.
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
type: array
x-kubernetes-list-map-keys:
- type
x-kubernetes-list-type: map
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
kind: ""
plural: ""
conditions: []
storedVersions: []