rancher-partner-charts/charts/citrix-cpx-with-ingress-con.../templates/cic_crds.yaml

1009 lines
44 KiB
YAML
Raw Normal View History

2020-09-25 18:35:57 +00:00
{{- if .Values.crds.install }}
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: rewritepolicies.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
group: citrix.com
version: v1
names:
kind: rewritepolicy
plural: rewritepolicies
singular: rewritepolicy
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
validation:
openAPIV3Schema:
properties:
spec:
properties:
rewrite-policies:
type: array
items:
properties:
servicenames:
description: 'Name of the services that needs to be binded to rewrite policy.'
type: array
items:
type: string
maxLength: 127
goto-priority-expression:
description: 'Expression or other value specifying the next policy to be
evaluated if the current policy evaluates to TRUE.
Specify one of the following values:
* NEXT - Evaluate the policy with the next higher priority number.
* END - End policy evaluation.
Default value of goto-priority-expression: END'
type: string
maxLength: 1499
logpackets:
description: 'Adds an audit message action.
The action specifies whether to log the message, and to which log.'
properties:
logexpression:
description: 'Default-syntax expression that defines the format and content of the log message.'
type: string
maxLength: 7991
loglevel:
description: 'Audit log level, which specifies the severity level of the log message being generated.'
type: string
enum: ["EMERGENCY", "ALERT", "CRITICAL", "ERROR", "WARNING", "NOTICE", "INFORMATIONAL", "DEBUG"]
required: [logexpression, loglevel]
rewrite-policy:
properties:
rewrite-criteria:
description: 'Expression against which traffic is evaluated.'
type: string
maxLength: 1299
default-action:
description: 'Action to perform if the result of policy evaluation is undefined (UNDEF).
An UNDEF event indicates an internal error condition.'
type: string
maxLength: 77
enum: ['NOREWRITE', 'RESET', 'DROP']
operation:
description: 'Type of user-defined rewrite action.'
type: string
enum: ["noop", "delete", "insert_http_header", "delete_http_header",
"corrupt_http_header", "insert_before", "insert_after", "replace",
"replace_http_res", "delete_all", "replace_all", "insert_before_all",
"insert_after_all", "clientless_vpn_encode", "clientless_vpn_encode_all",
"clientless_vpn_decode", "clientless_vpn_decode_all", "insert_sip_header",
"delete_sip_header", "corrupt_sip_header", "replace_sip_res", "replace_diameter_header_field",
"replace_dns_header_field", "replace_dns_answer_section"]
target:
description: 'Default syntax expression that specifies which part of the request or response to rewrite.'
type: string
maxLength: 1229
modify-expression:
description: 'Default syntax expression that specifies the content to insert into the request
or response at the specified location, or that replaces the specified string.'
type: string
maxLength: 7991
multiple-occurence-modify:
description: 'Search facility that is used to match multiple strings in the request or response.'
type: string
maxLength: 171
additional-multiple-occurence-modify:
description: 'Specify additional criteria to refine the results of the search.
Always starts with the "extend(m,n)" operation, where "m" specifies number of bytes to the left of selected data
and "n" specifies number of bytes to the right of selected data.
You can use refineSearch only on body expressions, and only when rewrite-criteria is any one of this:
INSERT_BEFORE_ALL, INSERT_AFTER_ALL, REPLACE_ALL, and DELETE_ALL.'
type: string
maxLength: 1299
direction:
description: 'Bind point to which to bind the policy.'
type: string
enum: ["REQUEST","RESPONSE"]
comment:
description: 'Any comments to preserve information about this rewrite policy.'
type: string
maxLength: 255
required: [rewrite-criteria, operation, target, direction]
required: [servicenames, rewrite-policy]
responder-policies:
type: array
items:
properties:
servicenames:
description: 'Name of the services that needs to be binded to responder policy.'
type: array
items:
type: string
maxLength: 127
goto-priority-expression:
description: 'Expression or other value specifying the next policy to be
evaluated if the current policy evaluates to TRUE.
Specify one of the following values:
* NEXT - Evaluate the policy with the next higher priority number.
* END - End policy evaluation.
Default value of goto-priority-expression: END'
type: string
maxLength: 1499
logpackets:
description: 'Adds an audit message action.
The action specifies whether to log the message, and to which log.'
properties:
logexpression:
description: 'Default-syntax expression that defines the format and content of the log message.'
type: string
maxLength: 7991
loglevel:
description: 'Audit log level, which specifies the severity level of the log message being generated.'
type: string
enum: ["EMERGENCY", "ALERT", "CRITICAL", "ERROR", "WARNING",
"NOTICE", "INFORMATIONAL", "DEBUG"]
required: [logexpression, loglevel]
responder-policy:
properties:
redirect:
description: 'Use this option when you want to Redirect the request when request matches to policy.'
properties:
url:
description: 'URL on which you want to redirect the request.'
type: string
maxLength: 7991
redirect-status-code:
description: 'HTTP response status code, for example 200, 302, 404, etc.'
type: integer
minimum: 100
maximum: 599
redirect-reason:
description: 'Expression specifying the reason for redirecting the request.'
type: string
maxLength: 7991
required: [url]
respondwith:
description: 'Use this parameter when you want to respond to the request when request matches to policy.'
properties:
http-payload-string:
description: 'Expression that you want to sent as response to the request.'
type: string
maxLength: 7991
required: [http-payload-string]
noop:
description: 'Use this option when you want to send the request to the protected server instead of
responding to it when request matches to policy.'
properties:
target:
description: 'Default syntax expression that specifies to perform noop operation on'
type: string
maxLength: 1229
reset:
description: 'Use this option when you want to Reset the client connection by closing it when request matches to policy.'
properties:
drop:
description: 'Use this option when you want to drop the request without sending a response to the user when request matches to policy.'
properties:
respond-criteria:
description: 'Default syntax expression that the policy uses to determine whether to respond to the specified request.'
type: string
maxLength: 1299
default-action:
description: 'Action to perform if the result of policy evaluation is undefined (UNDEF).
An UNDEF event indicates an internal error condition.'
type: string
maxLength: 77
enum: ['NOOP', 'RESET', 'DROP']
comment:
description: 'Any comments to preserve information about this responder policy.'
type: string
maxLength: 255
required: [respond-criteria]
oneOf: [required: [redirect], required: [respondwith], required: [noop], required: [reset], required: [drop]]
required: [servicenames, responder-policy]
dataset:
type: array
items:
properties:
name:
description: 'Name of the dataset.'
type: string
maxLength: 32
type:
description: 'Type of value to bind to the dataset.'
type: string
enum: ["ipv4", "number", "ipv6", "ulong", "double", "mac"]
comment:
description: 'Any comments to preserve information about this dataset.'
type: string
maxLength: 255
values:
description: 'Value of the specified type that is associated with this dataset.'
type: array
required: [name, type, values]
patset:
type: array
items:
properties:
name:
description: 'Name of the Patset.'
type: string
maxLength: 32
comment:
description: 'Any comments to preserve information about this patset.'
type: string
maxLength: 255
values:
description: 'String of characters that constitutes a pattern and is associated with this patset.'
type: array
required: [name, values]
stringmap:
type: array
items:
properties:
name:
description: 'Name of the Stringmap.'
type: string
maxLength: 32
comment:
description: 'Any comments to preserve information about this stringmap.'
type: string
maxLength: 255
values:
description: 'List of (key,value) pairs to be bound to this string map.'
type: array
items:
properties:
key:
description: 'Character string constituting the key to be bound to this string map.'
type: string
maxLength: 2047
value:
description: 'Character string constituting the value associated with the key.'
type: string
maxLength: 2047
required: [name, values]
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: ratelimits.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
group: citrix.com
version: v1beta1
names:
kind: ratelimit
plural: ratelimits
singular: ratelimit
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
validation:
openAPIV3Schema:
properties:
spec:
properties:
servicenames:
description: 'Name of the services to which the ratelimit policies are applied.'
type: array
items:
type: string
maxLength: 127
selector_keys:
description: 'Traffic match criteria to which apply above rate-limit/throttling. All keys are applied as AND condition. If no keys are specified, rate-limit applies at service level'
properties:
basic:
description: "Basic traffic stream selection criteria to which to apply the ratelimit"
properties:
path:
type: array
description: "api resource path prefix match. e.g. /api/v1/products"
items:
type: string
method:
type: array
items:
type: string
enum: ['GET', 'PUT', 'POST','DELETE']
header_name:
description: "HTTP header that identifies the unique API client for e.g. X-apikey"
type: string
per_client_ip:
description: "Setting this applies the throttling limit to each unique Client IP address accessing the API resource"
type: boolean
req_threshold:
description: 'Max requests per timeslice units to be allowed'
type: integer
timeslice:
description: 'Timeslice in miliseconds in multiple of 10. Defaults to 1000 miliseconds'
type: integer
limittype:
description: "Burst mode or smooth. Defaults to burst mode if the limittype is not specified"
type: string
enum: ['BURSTY','SMOOTH']
throttle_action:
type: string
enum: ['DROP', 'RESET','REDIRECT', 'RESPOND']
description: "Drop will drop the requests exceeding limits, RESET will reset the client connection, Redirect will redirect to specified URL, respond will respond with 429 'Exceeded allowed rate of requests'"
redirect_url:
type: string
description: "Redirect-URL"
required: [servicenames, req_threshold]
---
#Sample CRD instance
#apiVersion: citrix.com/v1
#description: VIP for apache service
#kind: vip
#metadata:
# name: service-apache
# namespace: default
#spec:
# description: VIP for the apache Service
# ipaddress: 10.99.98.90
# kind: service
# name: apache
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: vips.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
group: citrix.com
version: v1
names:
kind: vip
plural: vips
singular: vip
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
additionalPrinterColumns:
- JSONPath: .spec.ipaddress
name: VIP
type: string
- name: Age
type: date
JSONPath: .metadata.creationTimestamp
validation:
openAPIV3Schema:
properties:
spec:
properties:
ipaddress:
type: string
name:
type: string
kind:
type: string
enum: ["service", "ingress"]
description:
type: string
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: authpolicies.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
group: citrix.com
version: v1beta1
names:
kind: authpolicy
plural: authpolicies
singular: authpolicy
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
validation:
openAPIV3Schema:
properties:
spec:
properties:
servicenames:
description: 'Name of the services that needs to be binded to rewrite policy.'
type: array
items:
type: string
maxLength: 127
auth_providers:
description: 'Auth Config for required auth providers, one or more of these can be created'
type: array
items:
description: " create config for a single auth provider of a particular type"
properties:
name:
description: 'Name for this provider, has to be unique, referenced by auth policies'
type: string
oauth:
description: 'Auth provided by external oAuth provider'
properties:
issuer:
description: 'Identity of the server whose tokens are to be accepted'
type: string
jwks_uri:
description: 'URL of the endpoint that contains JWKs (Json Web Key) for JWT (Json Web Token) verification'
type: string
audience:
description: 'Audience for which token sent by Authorization server is applicable'
type: array
items:
type: string
token_in_hdr:
description: 'custom header name where token is present, default is Authorization header'
type: array
items:
type: string
token_in_param:
description: 'query parameter name where token is present'
type: array
items:
type: string
basic_local_db:
description: 'Basic HTTP authentication, user data in local DB'
required:
- name
auth_policies:
description: "Auth policies"
type: array
items:
description: "Auth policy"
properties:
resource:
description: " endpoint/resource selection criteria"
properties:
path:
description: "api resource path e.g. /products. "
type: array
items:
type: string
method:
type: array
items:
type: string
enum: ['GET', 'PUT', 'POST','DELETE']
required:
- path
provider:
description: "name of the auth provider for the policy, empty if no authentication required"
type: array
items:
type: string
required:
- resource
- provider
required:
- servicenames
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: listeners.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
status:
spec:
group: citrix.com
version: v1alpha1
names:
kind: Listener
plural: listeners
singular: listener
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
validation:
openAPIV3Schema:
required: [spec]
properties:
spec:
type: object
required: [protocol]
properties:
protocol:
type: string
enum: ["https", "http"]
description: "Protocol for this listener"
vip:
type: string
description: "Endpoint IP address, Optional for CPX, required for Tier-1 deployments"
port:
type: integer
minimum: 1
maximum: 65535
certificates:
type: array
description: "certificates attached to the endpoints - Not applicable for HTTP"
minItems: 1
items:
type: object
properties:
preconfigured:
type: string
description: "Preconfigured Certificate name on ADC "
secret:
type: object
description: "Kuberentes secret object"
required: [name]
properties:
name:
type: string
description: "name of the Kubernetes Secret object where Cert is located"
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
namespace:
type: string
description: "Namespace of the kubernetes secret object; Default is same namespace where the Listener object is located"
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
default:
type: boolean
description: "Only one of the certificate can be marked as default which will be presented if none of the cert matches with the hostname"
routes:
type: array
description: "List of route objects attached to the listener"
minItems: 1
items:
type: object
properties:
name:
type: string
description: "Name of the HTTPRoute object"
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
namespace:
type: string
description: "Namespace of the HTTPRoute object"
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
labelSelector:
description: "Labels key value pair, if the route carries the same labels, it is automatically attached"
type: object
additionalProperties:
type: string
oneOf:
- required: [name, namespace]
- required: [labelSelector]
defaultAction:
type: object
description: "Default action for the listener: One of Backend or Redirect"
properties:
backend:
type: object
oneOf:
- required: [kube]
properties:
kube:
type: object
required: [service, port]
properties:
service:
description: "Name of the backend service"
type: string
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
port:
description: "Service port"
type: integer
minimum: 1
maximum: 65535
namespace:
description: "Service namespace"
type: string
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
backendConfig:
description: "General backend service options"
properties:
secure_backend:
description: "Use Secure communications to the backends"
type: boolean
lbConfig:
description: "Citrix ADC LB vserver configurations for the backend. Refer: https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/configuration/load-balancing/lbvserver/lbvserver/ for all configurations"
type: object
additionalProperties:
type: string
servicegroupConfig:
description: "Citrix ADC service group configurations for the backend; Refer: https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/configuration/basic/servicegroup/servicegroup/ for all configurations"
type: object
additionalProperties:
type: string
redirect:
type: object
oneOf:
- required: [targetExpression]
- required: [hostRedirect]
- required: [httpsRedirect]
properties:
httpsRedirect:
description: "Change the scheme from http to https keeping URL intact"
type: boolean
hostRedirect:
description: "Host name specified is used for redirection with URL intact"
type: string
targetExpression:
description: "A target can be specified using Citrix ADC policy expression"
type: string
responseCode:
description: "Default response code is 302, which can be customised using this attribute"
type: integer
minimum: 100
maximum: 599
oneOf:
- required: ["backend"]
- required: ["redirect"]
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
name: httproutes.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
group: citrix.com
version: v1alpha1
names:
kind: HTTPRoute
plural: httproutes
singular: httproute
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
validation:
openAPIV3Schema:
required: [spec]
properties:
spec:
type: object
required: [rules]
properties:
hostname:
type: array
description: "List of domain names that share the same route, default is '*'"
minItems: 1
items:
type: string
description: "Domain name"
rules:
type: array
description: "List Content routing rules with an action defined"
minItems: 1
items:
type: object
required: [name, action]
properties:
name:
type: string
description: "A name to represent the rule, this is used as an identifier in content routing policy name in ADC"
minLength: 1
maxLength: 20
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
match:
type: array
description: "List of rules with same action"
minItems: 1
items:
type: object
anyOf:
- required: [path]
- required: [headers]
- required: [cookies]
- required: [queryParams]
- required: [method]
- required: [policyExpression]
properties:
path:
type: object
description: "URL Path based content routing"
properties:
prefix:
type: string
description: "URL path matches the prefix expression"
exact:
type: string
description: "URL Path must match exact path"
regex:
type: string
description: "PCRE based regex expression for path matching"
headers:
type: array
description: "List of header for content routing - Must match all the rules- Treated as AND condition if more than 1 rule"
minItems: 1
items:
type: object
description: "Header details for content routing, Check for existence of a header or header name-value match"
properties:
headerName:
type: object
description: "Header name based content routing, Here existence of header is used for routing"
properties:
exact:
type: string
description: "Header Name - treated as exact must exist"
contains:
type: string
description: "Header Name - A header must exist that contain the string the name"
regex:
type: string
description: "header Name - treated as PCRE regex expression"
not:
type: boolean
description: "Default False, if present, rules are inverted. I.e header name must not exist"
oneOf:
- required: [exact]
- required: [contains]
- required: [regex]
headerValue:
type: object
description: "Header Name and Value based match"
properties:
name:
type: string
description: "Header name that must match the value"
exact:
type: string
description: "Header value - treated as exact"
contains:
type: string
description: "Header value - treated as contains"
regex:
type: string
description: "header value - treated as PCRE regex expression"
not:
type: boolean
description: "Default False, if present, rules are inverted. I.e header if present must not match the value"
oneOf:
- required: [name, exact]
- required: [name, contains]
- required: [name, regex]
queryParams:
type: array
description: "List of Query parameters for content routing - Must match all the rules- Treated as AND condition if more than 1 rule"
minItems: 1
items:
type: object
description: "Query parameters Name and Value based match"
properties:
name:
type: string
description: "Query name that must match the value. If no value is specified, matches with any value"
exact:
type: string
description: "Query value - Exact match"
contains:
type: string
description: "Query value - value must have the string(substring)"
regex:
type: string
description: "Query value - Value must match this regex patterm"
not:
type: boolean
description: "Default False, if present, rules are inverted. I.e query if present must not match the value"
anyOf:
- required: [name]
- oneOf:
- required: [name, exact]
- required: [name, contains]
- required: [name, regex]
cookies:
type: array
description: "List of Cookie params for content routing - Must match all the rules- Treated as AND condition if more than 1 rule"
minItems: 1
items:
type: object
description: "Cookie based routing"
properties:
name:
type: string
description: "cookie name that must match the value. If no value specified, it matches with any value"
exact:
type: string
description: "cookie value - treated as exact"
contains:
type: string
description: "cookie value - treated as substring"
regex:
type: string
description: "cookie value - treated as PCRE regex expression"
not:
type: boolean
description: "Default False, if present, rules are inverted. I.e cookie if present must not match the value"
anyOf:
- required: [name]
- oneOf:
- required: [name, exact]
- required: [name, contains]
- required: [name, regex]
method:
type: string
description: "HTTP method for content routing eg: POST, PUT, DELETE etc"
policyExpression:
type: string
description: "Citrix ADC policy expressions; refer: https://docs.citrix.com/en-us/netscaler/media/expression-prefix.pdf"
action:
type: object
description: "Action for the matched rule"
properties:
backend:
type: object
oneOf:
- required: [kube]
properties:
kube:
type: object
required: [service, port]
properties:
service:
description: "Name of the backend service"
type: string
pattern: '^[a-z0-9]([-a-z0-9]*[a-z0-9])?$'
port:
description: "Service port"
type: integer
minimum: 1
maximum: 65535
backendConfig:
description: "General backend service options"
properties:
secure_backend:
description: "Use Secure communications to the backends"
type: boolean
lbConfig:
description: "Citrix ADC LB vserver configurations for the backend. Refer: https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/configuration/load-balancing/lbvserver/lbvserver/ for all configurations"
type: object
additionalProperties:
type: string
servicegroupConfig:
description: "Citrix ADC service group configurations for the backend; Refer: https://developer-docs.citrix.com/projects/netscaler-nitro-api/en/12.0/configuration/basic/servicegroup/servicegroup/ for all configurations"
type: object
additionalProperties:
type: string
redirect:
type: object
oneOf:
- required: [targetExpression]
- required: [hostRedirect]
- required: [httpsRedirect]
properties:
httpsRedirect:
description: "Change the scheme from http to https keeping URL intact"
type: boolean
hostRedirect:
description: "Host name specified is used for redirection with URL intact"
type: string
targetExpression:
description: "A target can be specified using Citrix ADC policy expression"
type: string
responseCode:
description: "Default response code is 302, which can be customised using this attribute"
type: integer
minimum: 100
maximum: 599
oneOf:
- required: ["backend"]
- required: ["redirect"]
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
# name must match the spec fields below, and be in the form: <plural>.<group>
name: continuousdeployments.citrix.com
{{- if .Values.crds.retainOnDelete }}
annotations:
"helm.sh/resource-policy": keep
{{- end }}
spec:
# group name to use for REST API: /apis/<group>/<version>
group: citrix.com
# list of versions supported by this CustomResourceDefinition
version: v1
# - name: v1
# Each version can be enabled/disabled by Served flag.
# served: true
# One and only one version must be marked as the storage version.
#storage: true
# either Namespaced or Cluster
scope: Namespaced
subresources:
status: {}
additionalPrinterColumns:
- name: Status
type: string
description: "Current Status of the CRD"
JSONPath: .status.state
- name: Message
type: string
description: "Status Message"
JSONPath: .status.status_message
names:
# plural name to be used in the URL: /apis/<group>/<version>/<plural>
plural: continuousdeployments
# singular name to be used as an alias on the CLI and for display
singular: continuousdeployment
# kind is normally the CamelCased singular type. Your resource manifests use this.
kind: continuousDeploymentCustomConfig
# shortNames allow shorter string to match your resource on the CLI
shortNames:
- crd
validation:
# openAPIV3Schema is the schema for validating custom objects.
openAPIV3Schema:
properties:
spec:
properties:
cronSpec:
type: integer
---
{{- end }}