apiVersion: v1 kind: Namespace metadata: name: litmus --- apiVersion: v1 kind: ServiceAccount metadata: name: litmus namespace: litmus labels: app.kubernetes.io/name: litmus # provide unique instance-id if applicable # app.kubernetes.io/instance: litmus-abcxzy app.kubernetes.io/version: v1.13.4 app.kubernetes.io/component: operator-serviceaccount app.kubernetes.io/part-of: litmus app.kubernetes.io/managed-by: kubectl name: litmus --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: litmus labels: app.kubernetes.io/name: litmus # provide unique instance-id if applicable # app.kubernetes.io/instance: litmus-abcxzy app.kubernetes.io/version: v1.13.4 app.kubernetes.io/component: operator-clusterrole app.kubernetes.io/part-of: litmus app.kubernetes.io/managed-by: kubectl name: litmus rules: - apiGroups: [""] resources: ["replicationcontrollers","secrets"] verbs: ["get","list"] - apiGroups: ["apps.openshift.io"] resources: ["deploymentconfigs"] verbs: ["get","list"] - apiGroups: ["apps"] resources: ["deployments", "daemonsets", "replicasets", "statefulsets"] verbs: ["get","list"] - apiGroups: ["batch"] resources: ["jobs"] verbs: ["get","list","deletecollection"] - apiGroups: ["argoproj.io"] resources: ["rollouts"] verbs: ["get","list"] - apiGroups: [""] resources: ["pods","configmaps","events","services"] verbs: ["get","create","update","patch","delete","list","watch","deletecollection"] - apiGroups: ["litmuschaos.io"] resources: ["chaosengines","chaosexperiments","chaosresults"] verbs: ["get","create","update","patch","delete","list","watch","deletecollection"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: litmus labels: app.kubernetes.io/name: litmus # provide unique instance-id if applicable # app.kubernetes.io/instance: litmus-abcxzy app.kubernetes.io/version: v1.13.4 app.kubernetes.io/component: operator-clusterrolebinding app.kubernetes.io/part-of: litmus app.kubernetes.io/managed-by: kubectl name: litmus roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: litmus subjects: - kind: ServiceAccount name: litmus namespace: litmus --- apiVersion: apps/v1 kind: Deployment metadata: labels: app.kubernetes.io/name: litmus # provide unique instance-id if applicable # app.kubernetes.io/instance: litmus-abcxzy app.kubernetes.io/version: v1.13.4 app.kubernetes.io/component: operator app.kubernetes.io/part-of: litmus app.kubernetes.io/managed-by: kubectl name: litmus name: chaos-operator-ce namespace: litmus spec: replicas: 1 selector: matchLabels: name: chaos-operator template: metadata: labels: app.kubernetes.io/name: litmus # provide unique instance-id if applicable # app.kubernetes.io/instance: litmus-abcxzy app.kubernetes.io/version: v1.13.4 app.kubernetes.io/component: operator app.kubernetes.io/part-of: litmus app.kubernetes.io/managed-by: kubectl name: chaos-operator spec: serviceAccountName: litmus containers: - name: chaos-operator image: litmuschaos/chaos-operator:1.13.4 command: - chaos-operator imagePullPolicy: Always env: - name: CHAOS_RUNNER_IMAGE value: "litmuschaos/chaos-runner:1.13.4" - name: WATCH_NAMESPACE value: "" - name: POD_NAME valueFrom: fieldRef: fieldPath: metadata.name - name: OPERATOR_NAME value: "chaos-operator" --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: chaosengines.litmuschaos.io spec: group: litmuschaos.io names: kind: ChaosEngine listKind: ChaosEngineList plural: chaosengines singular: chaosengine 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: 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)$ 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: string minLength: 1 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 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 status: x-kubernetes-preserve-unknown-fields: true type: object served: true storage: true subresources: {} conversion: strategy: None --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: chaosexperiments.litmuschaos.io spec: group: litmuschaos.io names: kind: ChaosExperiment listKind: ChaosExperimentList plural: chaosexperiments singular: chaosexperiment 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 description: type: object additionalProperties: 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 status: x-kubernetes-preserve-unknown-fields: true type: object spec: type: object properties: definition: x-kubernetes-preserve-unknown-fields: true type: object properties: args: type: array items: type: string command: type: array items: type: string env: type: array items: type: object properties: name: type: string value: type: string image: type: string imagePullPolicy: type: string labels: type: object additionalProperties: type: string scope: type: string pattern: ^(Namespaced|Cluster)$ permissions: type: array items: type: object minProperties: 3 required: - apiGroups - resources - verbs properties: apiGroups: type: array items: type: string resources: type: array items: type: string verbs: type: array items: type: string resourceNames: type: array items: type: string nonResourceURLs: type: array items: type: string configMaps: type: array items: type: object minProperties: 2 properties: name: type: string allowEmptyValue: false minLength: 1 mountPath: type: string allowEmptyValue: false minLength: 1 secrets: type: array items: type: object minProperties: 2 properties: name: type: string allowEmptyValue: false minLength: 1 mountPath: type: string allowEmptyValue: false minLength: 1 hostFileVolumes: type: array items: type: object minProperties: 3 properties: name: type: string allowEmptyValue: false minLength: 1 mountPath: type: string allowEmptyValue: false minLength: 1 nodePath: type: string allowEmptyValue: false minLength: 1 securityContext: type: object hostPID: type: boolean served: true storage: true subresources: {} conversion: strategy: None --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: name: chaosresults.litmuschaos.io spec: group: litmuschaos.io names: kind: ChaosResult listKind: ChaosResultList plural: chaosresults singular: chaosresult 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 status: x-kubernetes-preserve-unknown-fields: true type: object served: true storage: true subresources: {} conversion: strategy: None