619 lines
29 KiB
YAML
619 lines
29 KiB
YAML
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: litmus
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: scheduler
|
|
namespace: litmus
|
|
labels:
|
|
name: scheduler
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: scheduler
|
|
labels:
|
|
name: scheduler
|
|
rules:
|
|
- apiGroups: [""]
|
|
resources: ["pods","events", "configmaps","services"]
|
|
verbs: ["create","get","list","delete","update","patch"]
|
|
- apiGroups: ["apps"]
|
|
resources: ["replicasets","deployments"]
|
|
verbs: ["get","list"]
|
|
- apiGroups: ["litmuschaos.io"]
|
|
resources: ["chaosengines","chaosschedules"]
|
|
verbs: ["get","create","update","patch","delete","list","watch","deletecollection"]
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: scheduler
|
|
labels:
|
|
name: scheduler
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: scheduler
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: scheduler
|
|
namespace: litmus
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: chaos-scheduler
|
|
namespace: litmus
|
|
spec:
|
|
replicas: 1
|
|
selector:
|
|
matchLabels:
|
|
name: chaos-scheduler
|
|
template:
|
|
metadata:
|
|
labels:
|
|
name: chaos-scheduler
|
|
spec:
|
|
serviceAccountName: scheduler
|
|
containers:
|
|
- name: chaos-scheduler
|
|
image: litmuschaos/chaos-scheduler:3.0.0-beta9
|
|
command:
|
|
- chaos-scheduler
|
|
imagePullPolicy: Always
|
|
env:
|
|
- name: WATCH_NAMESPACE
|
|
- name: POD_NAME
|
|
valueFrom:
|
|
fieldRef:
|
|
fieldPath: metadata.name
|
|
- name: OPERATOR_NAME
|
|
value: "chaos-scheduler"
|
|
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
name: chaosschedules.litmuschaos.io
|
|
spec:
|
|
group: litmuschaos.io
|
|
names:
|
|
kind: ChaosSchedule
|
|
listKind: ChaosScheduleList
|
|
plural: chaosschedules
|
|
singular: chaosschedule
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1alpha1
|
|
schema:
|
|
openAPIV3Schema:
|
|
type: object
|
|
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/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/api-conventions.md#types-kinds'
|
|
type: string
|
|
metadata:
|
|
type: object
|
|
spec:
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
type: object
|
|
properties:
|
|
engineTemplateSpec:
|
|
type: object
|
|
properties:
|
|
jobCleanUpPolicy:
|
|
type: string
|
|
pattern: ^(delete|retain)$
|
|
# alternate ways to do this in case of complex pattern matches
|
|
#oneOf:
|
|
# - pattern: '^delete$'
|
|
# - pattern: '^retain$'
|
|
annotationCheck:
|
|
type: string
|
|
pattern: ^(true|false)$
|
|
defaultAppHealthCheck:
|
|
type: string
|
|
pattern: ^(true|false)$
|
|
appinfo:
|
|
type: object
|
|
properties:
|
|
appkind:
|
|
type: string
|
|
pattern: ^(^$|deployment|statefulset|daemonset|deploymentconfig|rollout)$
|
|
applabel:
|
|
type: string
|
|
appns:
|
|
type: string
|
|
auxiliaryAppInfo:
|
|
type: string
|
|
engineState:
|
|
type: string
|
|
pattern: ^(active|stop)$
|
|
chaosServiceAccount:
|
|
type: string
|
|
terminationGracePeriodSeconds:
|
|
type: integer
|
|
components:
|
|
type: object
|
|
properties:
|
|
runner:
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
type: object
|
|
properties:
|
|
image:
|
|
type: string
|
|
type:
|
|
type: string
|
|
pattern: ^(go)$
|
|
runnerAnnotations:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
properties:
|
|
key:
|
|
type: string
|
|
minLength: 1
|
|
value:
|
|
type: string
|
|
minLength: 1
|
|
tolerations:
|
|
description: Pod's tolerations.
|
|
items:
|
|
description: The pod with this Toleration tolerates any taint matches the <key,value,effect> using the matching operator <operator>.
|
|
properties:
|
|
effect:
|
|
description: Effect to match. Empty means all effects.
|
|
type: string
|
|
key:
|
|
description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
|
|
type: string
|
|
operator:
|
|
description: Operators are Exists or Equal. Defaults to Equal.
|
|
type: string
|
|
tolerationSeconds:
|
|
description: Period of time the toleration tolerates the taint.
|
|
format: int64
|
|
type: integer
|
|
value:
|
|
description: If the operator is Exists, the value should be empty, otherwise just a regular string.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
experiments:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
spec:
|
|
type: object
|
|
properties:
|
|
probe:
|
|
type: array
|
|
items:
|
|
type: object
|
|
required:
|
|
- runProperties
|
|
properties:
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
minLength: 1
|
|
pattern: ^(k8sProbe|httpProbe|cmdProbe|promProbe)$
|
|
k8sProbe/inputs:
|
|
type: object
|
|
properties:
|
|
group:
|
|
type: string
|
|
version:
|
|
type: string
|
|
resource:
|
|
type: string
|
|
namespace:
|
|
type: string
|
|
fieldSelector:
|
|
type: string
|
|
labelSelector:
|
|
type: string
|
|
operation:
|
|
type: string
|
|
pattern: ^(present|absent|create|delete)$
|
|
minLength: 1
|
|
cmdProbe/inputs:
|
|
type: object
|
|
properties:
|
|
command:
|
|
type: string
|
|
minLength: 1
|
|
comparator:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
minLength: 1
|
|
pattern: ^(int|float|string)$
|
|
criteria:
|
|
type: string
|
|
value:
|
|
type: string
|
|
source:
|
|
type: object
|
|
properties:
|
|
image:
|
|
type: string
|
|
minLength: 1
|
|
hostNetwork:
|
|
type: boolean
|
|
httpProbe/inputs:
|
|
type: object
|
|
properties:
|
|
url:
|
|
type: string
|
|
minLength: 1
|
|
insecureSkipVerify:
|
|
type: boolean
|
|
responseTimeout:
|
|
type: integer
|
|
method:
|
|
type: object
|
|
minProperties: 1
|
|
properties:
|
|
get:
|
|
type: object
|
|
properties:
|
|
criteria:
|
|
type: string
|
|
minLength: 1
|
|
responseCode:
|
|
type: string
|
|
minLength: 1
|
|
post:
|
|
type: object
|
|
properties:
|
|
contentType:
|
|
type: string
|
|
minLength: 1
|
|
body:
|
|
type: string
|
|
bodyPath:
|
|
type: string
|
|
criteria:
|
|
type: string
|
|
minLength: 1
|
|
responseCode:
|
|
type: string
|
|
minLength: 1
|
|
promProbe/inputs:
|
|
type: object
|
|
properties:
|
|
endpoint:
|
|
type: string
|
|
query:
|
|
type: string
|
|
queryPath:
|
|
type: string
|
|
comparator:
|
|
type: object
|
|
properties:
|
|
criteria:
|
|
type: string
|
|
value:
|
|
type: string
|
|
runProperties:
|
|
type: object
|
|
minProperties: 3
|
|
required:
|
|
- probeTimeout
|
|
- interval
|
|
- retry
|
|
properties:
|
|
probeTimeout:
|
|
type: integer
|
|
interval:
|
|
type: integer
|
|
retry:
|
|
type: integer
|
|
probePollingInterval:
|
|
type: integer
|
|
initialDelaySeconds:
|
|
type: integer
|
|
stopOnFailure:
|
|
type: boolean
|
|
mode:
|
|
type: string
|
|
pattern: ^(SOT|EOT|Edge|Continuous|OnChaos)$
|
|
minLength: 1
|
|
data:
|
|
type: string
|
|
components:
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
type: object
|
|
properties:
|
|
statusCheckTimeouts:
|
|
type: object
|
|
properties:
|
|
delay:
|
|
type: integer
|
|
timeout:
|
|
type: integer
|
|
nodeSelector:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
properties:
|
|
key:
|
|
type: string
|
|
minLength: 1
|
|
allowEmptyValue: false
|
|
value:
|
|
type: string
|
|
minLength: 1
|
|
allowEmptyValue: false
|
|
experimentImage:
|
|
type: string
|
|
env:
|
|
type: array
|
|
items:
|
|
description: EnvVar represents an environment variable
|
|
present in a Container.
|
|
properties:
|
|
name:
|
|
description: Name of the environment variable.
|
|
Must be a C_IDENTIFIER.
|
|
type: string
|
|
value:
|
|
description: 'Variable references $(VAR_NAME)
|
|
are expanded using the previous defined environment
|
|
variables in the container and any service environment
|
|
variables. If a variable cannot be resolved,
|
|
the reference in the input string will be unchanged.
|
|
The $(VAR_NAME) syntax can be escaped with a
|
|
double $$, ie: $$(VAR_NAME). Escaped references
|
|
will never be expanded, regardless of whether
|
|
the variable exists or not. Defaults to "".'
|
|
type: string
|
|
valueFrom:
|
|
description: Source for the environment variable's
|
|
value. Cannot be used if value is not empty.
|
|
properties:
|
|
configMapKeyRef:
|
|
description: Selects a key of a ConfigMap.
|
|
properties:
|
|
key:
|
|
description: The key to select.
|
|
type: string
|
|
name:
|
|
description: 'Name of the referent. More
|
|
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
|
TODO: Add other useful fields. apiVersion,
|
|
kind, uid?'
|
|
type: string
|
|
optional:
|
|
description: Specify whether the ConfigMap
|
|
or its key must be defined
|
|
type: boolean
|
|
required:
|
|
- key
|
|
type: object
|
|
fieldRef:
|
|
description: 'Selects a field of the pod:
|
|
supports metadata.name, metadata.namespace,
|
|
metadata.labels, metadata.annotations, spec.nodeName,
|
|
spec.serviceAccountName, status.hostIP,
|
|
status.podIP.'
|
|
properties:
|
|
apiVersion:
|
|
description: Version of the schema the
|
|
FieldPath is written in terms of, defaults
|
|
to "v1".
|
|
type: string
|
|
fieldPath:
|
|
description: Path of the field to select
|
|
in the specified API version.
|
|
type: string
|
|
required:
|
|
- fieldPath
|
|
type: object
|
|
resourceFieldRef:
|
|
description: 'Selects a resource of the container:
|
|
only resources limits and requests (limits.cpu,
|
|
limits.memory, limits.ephemeral-storage,
|
|
requests.cpu, requests.memory and requests.ephemeral-storage)
|
|
are currently supported.'
|
|
properties:
|
|
containerName:
|
|
description: 'Container name: required
|
|
for volumes, optional for env vars'
|
|
type: string
|
|
divisor:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
description: Specifies the output format
|
|
of the exposed resources, defaults to
|
|
"1"
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
resource:
|
|
description: 'Required: resource to select'
|
|
type: string
|
|
required:
|
|
- resource
|
|
type: object
|
|
secretKeyRef:
|
|
description: Selects a key of a secret in
|
|
the pod's namespace
|
|
properties:
|
|
key:
|
|
description: The key of the secret to
|
|
select from. Must be a valid secret
|
|
key.
|
|
type: string
|
|
name:
|
|
description: 'Name of the referent. More
|
|
info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
|
|
TODO: Add other useful fields. apiVersion,
|
|
kind, uid?'
|
|
type: string
|
|
optional:
|
|
description: Specify whether the Secret
|
|
or its key must be defined
|
|
type: boolean
|
|
required:
|
|
- key
|
|
type: object
|
|
type: object
|
|
required:
|
|
- name
|
|
type: object
|
|
configMaps:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
mountPath:
|
|
type: string
|
|
secrets:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
mountPath:
|
|
type: string
|
|
experimentAnnotations:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
properties:
|
|
key:
|
|
type: string
|
|
minLength: 1
|
|
allowEmptyValue: false
|
|
value:
|
|
type: string
|
|
minLength: 1
|
|
allowEmptyValue: false
|
|
tolerations:
|
|
description: Pod's tolerations.
|
|
items:
|
|
description: The pod with this Toleration tolerates any taint matches the <key,value,effect> using the matching operator <operator>.
|
|
properties:
|
|
effect:
|
|
description: Effect to match. Empty means all effects.
|
|
type: string
|
|
key:
|
|
description: Taint key the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists.
|
|
type: string
|
|
operator:
|
|
description: Operators are Exists or Equal. Defaults to Equal.
|
|
type: string
|
|
tolerationSeconds:
|
|
description: Period of time the toleration tolerates the taint.
|
|
format: int64
|
|
type: integer
|
|
value:
|
|
description: If the operator is Exists, the value should be empty, otherwise just a regular string.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
|
|
concurrencyPolicy:
|
|
type: string
|
|
scheduleState:
|
|
type: string
|
|
schedule:
|
|
oneOf:
|
|
- required:
|
|
- now
|
|
- required:
|
|
- once
|
|
- required:
|
|
- repeat
|
|
properties:
|
|
now:
|
|
type: boolean
|
|
once:
|
|
properties:
|
|
executionTime:
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
repeat:
|
|
properties:
|
|
timeRange:
|
|
properties:
|
|
endTime:
|
|
format: date-time
|
|
type: string
|
|
startTime:
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
workHours:
|
|
properties:
|
|
includedHours:
|
|
type: string
|
|
type: object
|
|
required:
|
|
- includedHours
|
|
workDays:
|
|
properties:
|
|
includedDays:
|
|
pattern: ((Mon|Tue|Wed|Thu|Fri|Sat|Sun)(,))*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)
|
|
type: string
|
|
type: object
|
|
required:
|
|
- includedDays
|
|
properties:
|
|
properties:
|
|
minChaosInterval:
|
|
properties:
|
|
hour:
|
|
properties:
|
|
everyNthHour:
|
|
type: integer
|
|
minuteOfTheHour:
|
|
type: integer
|
|
type: object
|
|
minute:
|
|
properties:
|
|
everyNthMinute:
|
|
type: integer
|
|
type: object
|
|
type: object
|
|
minProperties: 1
|
|
maxProperties: 1
|
|
random:
|
|
type: boolean
|
|
type: object
|
|
required:
|
|
- minChaosInterval
|
|
type: object
|
|
required:
|
|
- properties
|
|
type: object
|
|
status:
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources: {}
|
|
conversion:
|
|
strategy: None
|