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:2.8.0 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 using the matching 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 using the matching 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