411 lines
24 KiB
YAML
411 lines
24 KiB
YAML
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.4.1
|
|
creationTimestamp: null
|
|
labels:
|
|
app: storageos
|
|
app.kubernetes.io/component: operator
|
|
name: storageosclusters.storageos.com
|
|
spec:
|
|
group: storageos.com
|
|
names:
|
|
kind: StorageOSCluster
|
|
listKind: StorageOSClusterList
|
|
plural: storageosclusters
|
|
shortNames:
|
|
- stos
|
|
singular: storageoscluster
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- description: Ready status of the storageos nodes.
|
|
jsonPath: .status.ready
|
|
name: ready
|
|
type: string
|
|
- description: Status of the whole cluster.
|
|
jsonPath: .status.phase
|
|
name: status
|
|
type: string
|
|
- jsonPath: .metadata.creationTimestamp
|
|
name: age
|
|
type: date
|
|
name: v1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: StorageOSCluster is the Schema for the storageosclusters 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: StorageOSClusterSpec defines the desired state of StorageOSCluster
|
|
properties:
|
|
csi:
|
|
description: CSI defines the configurations for CSI.
|
|
properties:
|
|
deploymentStrategy:
|
|
type: string
|
|
deviceDir:
|
|
type: string
|
|
driverRegisterationMode:
|
|
type: string
|
|
driverRequiresAttachment:
|
|
type: string
|
|
enable:
|
|
type: boolean
|
|
enableControllerExpandCreds:
|
|
type: boolean
|
|
enableControllerPublishCreds:
|
|
type: boolean
|
|
enableNodePublishCreds:
|
|
type: boolean
|
|
enableProvisionCreds:
|
|
type: boolean
|
|
endpoint:
|
|
type: string
|
|
kubeletDir:
|
|
type: string
|
|
kubeletRegistrationPath:
|
|
type: string
|
|
pluginDir:
|
|
type: string
|
|
registrarSocketDir:
|
|
type: string
|
|
registrationDir:
|
|
type: string
|
|
version:
|
|
type: string
|
|
type: object
|
|
debug:
|
|
description: Debug is to set debug mode of the cluster.
|
|
type: boolean
|
|
disableFencing:
|
|
description: "Disable Pod Fencing. With StatefulSets, Pods are only re-scheduled if the Pod has been marked as killed. In practice this means that failover of a StatefulSet pod is a manual operation. \n By enabling Pod Fencing and setting the `storageos.com/fenced=true` label on a Pod, StorageOS will enable automated Pod failover (by killing the application Pod on the failed node) if the following conditions exist: \n - Pod fencing has not been explicitly disabled. - StorageOS has determined that the node the Pod is running on is offline. StorageOS uses Gossip and TCP checks and will retry for 30 seconds. At this point all volumes on the failed node are marked offline (irrespective of whether fencing is enabled) and volume failover starts. - The Pod has the label `storageos.com/fenced=true` set. - The Pod has at least one StorageOS volume attached. - Each StorageOS volume has at least 1 healthy replica. \n When Pod Fencing is disabled, StorageOS will not perform any interaction with Kubernetes when it detects that a node has gone offline. Additionally, the Kubernetes permissions required for Fencing will not be added to the StorageOS role. Deprecated: Not used any more, fencing is enabled/disabled by storageos.com/fenced label on pod."
|
|
type: boolean
|
|
disableScheduler:
|
|
description: 'Disable StorageOS scheduler extender. Deprecated: Not used any more, scheduler is always enabled on Kubernetes.'
|
|
type: boolean
|
|
disableTCMU:
|
|
description: "Disable TCMU can be set to true to disable the TCMU storage driver. This is required when there are multiple storage systems running on the same node and you wish to avoid conflicts. Only one TCMU-based storage system can run on a node at a time. \n Disabling TCMU will degrade performance. Deprecated: Not used any more."
|
|
type: boolean
|
|
disableTelemetry:
|
|
description: Disable Telemetry.
|
|
type: boolean
|
|
environment:
|
|
additionalProperties:
|
|
type: string
|
|
description: Environment contains environment variables that are passed to StorageOS.
|
|
type: object
|
|
forceTCMU:
|
|
description: "Force TCMU can be set to true to ensure that TCMU is enabled or cause StorageOS to abort startup. \n At startup, StorageOS will automatically fallback to non-TCMU mode if another TCMU-based storage system is running on the node. Since non-TCMU will degrade performance, this may not always be desired. Deprecated: Not used any more."
|
|
type: boolean
|
|
images:
|
|
description: Images defines the various container images used in the cluster.
|
|
properties:
|
|
apiManagerContainer:
|
|
type: string
|
|
csiClusterDriverRegistrarContainer:
|
|
type: string
|
|
csiExternalAttacherContainer:
|
|
type: string
|
|
csiExternalProvisionerContainer:
|
|
type: string
|
|
csiExternalResizerContainer:
|
|
type: string
|
|
csiLivenessProbeContainer:
|
|
type: string
|
|
csiNodeDriverRegistrarContainer:
|
|
type: string
|
|
hyperkubeContainer:
|
|
type: string
|
|
initContainer:
|
|
type: string
|
|
kubeSchedulerContainer:
|
|
type: string
|
|
nfsContainer:
|
|
type: string
|
|
nodeContainer:
|
|
type: string
|
|
type: object
|
|
ingress:
|
|
description: 'Ingress defines the ingress configurations used in the cluster. Deprecated: Not used any more, please create your ingress for dashboard on your own.'
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
enable:
|
|
type: boolean
|
|
hostname:
|
|
type: string
|
|
tls:
|
|
type: boolean
|
|
type: object
|
|
join:
|
|
description: 'Join is the join token used for service discovery. Deprecated: Not used any more.'
|
|
type: string
|
|
k8sDistro:
|
|
description: "K8sDistro is the name of the Kubernetes distribution where the operator is being deployed. It should be in the format: `name[-1.0]`, where the version is optional and should only be appended if known. Suitable names include: `openshift`, `rancher`, `aks`, `gke`, `eks`, or the deployment method if using upstream directly, e.g `minishift` or `kubeadm`. \n Setting k8sDistro is optional, and will be used to simplify cluster configuration by setting appropriate defaults for the distribution. The distribution information will also be included in the product telemetry (if enabled), to help focus development efforts."
|
|
type: string
|
|
kvBackend:
|
|
description: KVBackend defines the key-value store backend used in the cluster.
|
|
properties:
|
|
address:
|
|
type: string
|
|
backend:
|
|
type: string
|
|
required:
|
|
- address
|
|
type: object
|
|
namespace:
|
|
description: 'Namespace is the kubernetes Namespace where storageos resources are provisioned. Deprecated: StorageOS uses namespace of storageosclusters.storageos.com resource.'
|
|
type: string
|
|
nodeSelectorTerms:
|
|
description: NodeSelectorTerms is to set the placement of storageos pods using node affinity requiredDuringSchedulingIgnoredDuringExecution.
|
|
items:
|
|
description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm.
|
|
properties:
|
|
matchExpressions:
|
|
description: A list of node selector requirements by node's labels.
|
|
items:
|
|
description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
|
properties:
|
|
key:
|
|
description: The label key that the selector applies to.
|
|
type: string
|
|
operator:
|
|
description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
|
|
type: string
|
|
values:
|
|
description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchFields:
|
|
description: A list of node selector requirements by node's fields.
|
|
items:
|
|
description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
|
|
properties:
|
|
key:
|
|
description: The label key that the selector applies to.
|
|
type: string
|
|
operator:
|
|
description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
|
|
type: string
|
|
values:
|
|
description: An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: array
|
|
pause:
|
|
description: 'Pause is to pause the operator for the cluster. Deprecated: Not used any more, operator is always running.'
|
|
type: boolean
|
|
resources:
|
|
description: Resources is to set the resource requirements of the storageos containers.
|
|
properties:
|
|
limits:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
|
|
type: object
|
|
requests:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/'
|
|
type: object
|
|
type: object
|
|
secretRefName:
|
|
description: SecretRefName is the name of the secret object that contains all the sensitive cluster configurations.
|
|
type: string
|
|
secretRefNamespace:
|
|
description: 'SecretRefNamespace is the namespace of the secret reference. Deprecated: StorageOS uses namespace of storageosclusters.storageos.com resource.'
|
|
type: string
|
|
service:
|
|
description: Service is the Service configuration for the cluster nodes.
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
externalPort:
|
|
type: integer
|
|
internalPort:
|
|
type: integer
|
|
name:
|
|
type: string
|
|
type:
|
|
type: string
|
|
required:
|
|
- name
|
|
- type
|
|
type: object
|
|
sharedDir:
|
|
description: 'SharedDir is the shared directory to be used when the kubelet is running in a container. Typically: "/var/lib/kubelet/plugins/kubernetes.io~storageos". If not set, defaults will be used.'
|
|
type: string
|
|
storageClassName:
|
|
description: StorageClassName is the name of default StorageClass created for StorageOS volumes.
|
|
type: string
|
|
tlsEtcdSecretRefName:
|
|
description: TLSEtcdSecretRefName is the name of the secret object that contains the etcd TLS certs. This secret is shared with etcd, therefore it's not part of the main storageos secret.
|
|
type: string
|
|
tlsEtcdSecretRefNamespace:
|
|
description: 'TLSEtcdSecretRefNamespace is the namespace of the etcd TLS secret object. Deprecated: StorageOS uses namespace of storageosclusters.storageos.com resource.'
|
|
type: string
|
|
tolerations:
|
|
description: Tolerations is to set the placement of storageos pods using pod toleration.
|
|
items:
|
|
description: The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.
|
|
properties:
|
|
effect:
|
|
description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.
|
|
type: string
|
|
key:
|
|
description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys.
|
|
type: string
|
|
operator:
|
|
description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.
|
|
type: string
|
|
tolerationSeconds:
|
|
description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system.
|
|
format: int64
|
|
type: integer
|
|
value:
|
|
description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
required:
|
|
- kvBackend
|
|
- secretRefName
|
|
type: object
|
|
status:
|
|
description: StorageOSClusterStatus defines the observed state of StorageOSCluster
|
|
properties:
|
|
conditions:
|
|
description: Conditions is a list of status of all the components of StorageOS.
|
|
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
|
|
type: array
|
|
members:
|
|
description: Members is the list of StorageOS nodes in the cluster.
|
|
properties:
|
|
ready:
|
|
description: Ready are the storageos cluster members that are ready to serve requests. The member names are the same as the node IPs.
|
|
items:
|
|
type: string
|
|
type: array
|
|
unready:
|
|
description: Unready are the storageos cluster nodes not ready to serve requests.
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
nodeHealthStatus:
|
|
additionalProperties:
|
|
description: NodeHealth contains health status of a node.
|
|
properties:
|
|
directfsInitiator:
|
|
type: string
|
|
director:
|
|
type: string
|
|
kv:
|
|
type: string
|
|
kvWrite:
|
|
type: string
|
|
nats:
|
|
type: string
|
|
presentation:
|
|
type: string
|
|
rdb:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
nodes:
|
|
items:
|
|
type: string
|
|
type: array
|
|
phase:
|
|
description: Phase is the phase of the StorageOS cluster.
|
|
type: string
|
|
ready:
|
|
description: Ready is the ready status of the StorageOS control-plane pods.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
status:
|
|
acceptedNames:
|
|
kind: ""
|
|
plural: ""
|
|
conditions: []
|
|
storedVersions: []
|