diff --git a/charts/pravega-operator/templates/crd.yaml b/charts/pravega-operator/templates/crd.yaml deleted file mode 100644 index 1e50e21e2..000000000 --- a/charts/pravega-operator/templates/crd.yaml +++ /dev/null @@ -1,811 +0,0 @@ -{{- if .Values.crd.create }} -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: pravegaclusters.pravega.pravega.io -spec: - group: pravega.pravega.io - names: - kind: PravegaCluster - listKind: PravegaClusterList - plural: pravegaclusters - singular: pravegacluster - shortNames: - - pk - additionalPrinterColumns: - - name: Version - type: string - description: The current pravega version - JSONPath: .status.currentVersion - - name: Desired Version - type: string - description: The desired pravega version - JSONPath: .spec.version - - name: Desired Members - type: integer - description: The number of desired pravega members - JSONPath: .status.replicas - - name: Ready Members - type: integer - description: The number pravega members ready - JSONPath: .status.readyReplicas - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - scope: Namespaced - preserveUnknownFields: false - conversion: - conversionReviewVersions: ["v1beta1", "v1alpha1"] - strategy: Webhook - webhookClientConfig: - caBundle: {{ .Values.webhookCert.crt }} - service: - name: pravega-webhook-svc - namespace: {{ .Release.Namespace }} - path: /convert - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster - properties: - zookeeperUri: - type: string - externalAccess: - type: object - properties: - enabled: - type: boolean - type: - type: string - domainName: - type: string - tls: - type: object - properties: - static: - type: object - properties: - caBundle: - type: string - controllerSecret: - type: string - segmentStoreSecret: - type: string - authentication: - type: object - properties: - enabled: - type: boolean - passwordAuthSecret: - type: string - version: - type: string - bookkeeperUri: - type: string - pravega: - type: object - properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: - type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string - cacheVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - longtermStorage: - type: object - properties: - filesystem: - type: object - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: - type: object - properties: - configUri: - type: string - bucket: - type: string - prefix: - type: string - credentials: - type: string - hdfs: - type: object - properties: - uri: - type: string - root: - type: string - replicationFactor: - format: int32 - type: integer - controllerServiceAccountName: - type: string - segmentStoreServiceAccountName: - type: string - controllerResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreEnvVars: - type: string - segmentStoreSecret: - type: object - properties: - secret: - type: string - mountPath: - type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreExtServiceType: - type: string - segmentStoreSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreLoadBalancerIP: - type: string - segmentStoreExternalTrafficPolicy: - type: string - status: - type: object - description: PravegaCluster Status defines the observed state of PravegaCluster - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - status: - type: string - reason: - type: string - message: - type: string - lastUpdateTime: - type: string - lastTransitionTime: - type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: - type: array - items: - type: string - replicas: - format: int32 - type: integer - currentReplicas: - format: int32 - type: integer - readyReplicas: - format: int32 - type: integer - - name: v1alpha1 - {{- if .Release.IsUpgrade }} - served: true - {{- else }} - served: false - {{- end }} - storage: false - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster - properties: - zookeeperUri: - type: string - externalAccess: - type: object - properties: - enabled: - type: boolean - type: - type: string - domainName: - type: string - tls: - type: object - properties: - static: - type: object - properties: - controllerSecret: - type: string - segmentStoreSecret: - type: string - authentication: - type: object - properties: - enabled: - type: boolean - passwordAuthSecret: - type: string - version: - type: string - bookkeeper: - type: object - properties: - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - replicas: - format: int32 - type: integer - storage: - type: object - properties: - ledgerVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - journalVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - indexVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - autoRecovery: - type: boolean - serviceAccountName: - type: string - resources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - options: - type: object - additionalProperties: - type: string - bookkeeperJVMOptions: - type: object - properties: - memoryOpts: - type: array - items: - type: string - gcOpts: - type: array - items: - type: string - gcLoggingOpts: - type: array - items: - type: string - extraOpts: - type: array - items: - type: string - pravega: - type: object - properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: - type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string - cacheVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - tier2: - type: object - properties: - filesystem: - type: object - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: - type: object - properties: - configUri: - type: string - bucket: - type: string - prefix: - type: string - credentials: - type: string - hdfs: - type: object - properties: - uri: - type: string - root: - type: string - replicationFactor: - format: int32 - type: integer - controllerServiceAccountName: - type: string - segmentStoreServiceAccountName: - type: string - controllerResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreEnvVars: - type: string - segmentStoreSecret: - type: object - properties: - secret: - type: string - mountPath: - type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreExtServiceType: - type: string - segmentStoreSvcAnnotations: - additionalProperties: - type: string - type: object - status: - type: object - description: PravegaCluster Status defines the observed state of PravegaCluster - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - status: - type: string - reason: - type: string - message: - type: string - lastUpdateTime: - type: string - lastTransitionTime: - type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: - type: array - items: - type: string - replicas: - format: int32 - type: integer - currentReplicas: - format: int32 - type: integer - readyReplicas: - format: int32 - type: integer - subresources: - status: {} -{{- end }} diff --git a/charts/pravega-operator/templates/pravega.pravega.io_pravegaclusters_crd.yaml b/charts/pravega-operator/templates/pravega.pravega.io_pravegaclusters_crd.yaml new file mode 100644 index 000000000..74f08c189 --- /dev/null +++ b/charts/pravega-operator/templates/pravega.pravega.io_pravegaclusters_crd.yaml @@ -0,0 +1,1580 @@ +{{- if .Values.crd.create }} +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: pravegaclusters.pravega.pravega.io +spec: + additionalPrinterColumns: + - JSONPath: .status.currentVersion + description: The current pravega version + name: Version + type: string + - JSONPath: .spec.version + description: The desired pravega version + name: Desired Version + type: string + - JSONPath: .status.replicas + description: The number of desired pravega members + name: Desired Members + type: integer + - JSONPath: .status.readyReplicas + description: The number of ready pravega members + name: Ready Members + type: integer + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: pravega.pravega.io + names: + kind: PravegaCluster + listKind: PravegaClusterList + plural: pravegaclusters + shortNames: + - pk + singular: pravegacluster + scope: Namespaced + preserveUnknownFields: false + subresources: + status: {} + conversion: + conversionReviewVersions: ["v1beta1", "v1alpha1"] + strategy: Webhook + webhookClientConfig: + caBundle: {{ .Values.webhookCert.crt }} + service: + name: pravega-webhook-svc + namespace: {{ .Release.Namespace }} + path: /convert + version: v1beta1 + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: PravegaCluster is the Schema for the pravegaclusters 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: ClusterSpec defines the desired state of PravegaCluster + properties: + authentication: + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled + type: boolean + passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication + type: string + type: object + bookkeeperUri: + description: BookkeeperUri specifies the hostname/IP address and port + in the format "hostname:port". comma delimited list of BK server + URLs bookkeeper-bookie-0.bookkeeper-bookie-headless.default:3181, + bookkeeper-bookie-1.bookkeeper-bookie-headless.default:3181, bookkeeper-bookie-2.bookkeeper-bookie-headless.default:3181 + type: string + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled + properties: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string + enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled + type: boolean + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + enum: + - ClusterIP + - NodePort + - LoadBalancer + - ExternalName + type: string + type: object + pravega: + description: Pravega configuration + properties: + cacheVolumeClaimTemplate: + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + enum: + - ReadWriteOnce + - ReadOnlyMany + - ReadWriteMany + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. + properties: + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + enum: + - In + - NotIn + - Exists + - DoesNotExist + type: string + values: + description: values is 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. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. + type: string + type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when to + pull a container image + enum: + - Always + - Never + - IfNotPresent + type: string + repository: + type: string + type: object + longtermStorage: + description: LongTermStorage is the configuration of Pravega's + tier 2 storage. If no configuration is provided, it will assume + that a PersistentVolumeClaim called "pravega-longterm" is present + and it will use it as Tier 2 + properties: + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend + properties: + bucket: + type: string + configUri: + type: string + credentials: + type: string + prefix: + type: string + type: object + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend + properties: + replicationFactor: + format: int32 + type: integer + root: + type: string + uri: + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreEnvVars: + description: Provides the name of the configmap created by the + user to provide additional key-value pairs that need to be configured + into the ss pod as environmental variables + type: string + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + segmentStoreExternalTrafficPolicy: + description: SegmentStoreExternalTrafficPolicy defines the ExternalTrafficPolicy + it can have cluster or local + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreLoadBalancerIP: + description: Specifying this IP would ensure we use same IP address + for all the ss services + type: string + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer + segmentStoreResources: + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources + 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 + segmentStoreSecret: + description: SegmentStoreSecret specifies whether or not any secret + needs to be configured into the ss pod either as an environment + variable or by mounting it to a volume + properties: + mountPath: + description: Path to the volume where the secret will be mounted + This value is considered only when the secret is provided + If this value is provided, the secret is mounted to a Volume + else the secret is exposed as an Environment Variable + type: string + secret: + description: Secret specifies the name of Secret which needs + to be configured + type: string + type: object + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + segmentStoreSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. + properties: + caBundle: + type: string + controllerSecret: + type: string + segmentStoreSecret: + type: string + type: object + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string + type: object + status: + description: ClusterStatus defines the observed state of PravegaCluster + properties: + conditions: + description: Conditions list all the applied conditions + items: + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + type: string + lastUpdateTime: + description: The last time this condition was updated. + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Pravega cluster condition. + type: string + type: object + type: array + currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster + format: int32 + type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object + readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster + format: int32 + type: integer + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + served: true + storage: true + - name: v1alpha1 + schema: + openAPIV3Schema: + description: PravegaCluster is the Schema for the pravegaclusters 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: ClusterSpec defines the desired state of PravegaCluster + properties: + authentication: + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled + type: boolean + passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication + type: string + type: object + bookkeeper: + description: Bookkeeper configuration + properties: + autoRecovery: + description: AutoRecovery indicates whether or not BookKeeper + auto recovery is enabled. Defaults to true. + type: boolean + bookkeeperJVMOptions: + description: JVM is the JVM options for bookkeeper. It will be + passed to the JVM for performance tuning. If this field is not + specified, the operator will use a set of default options that + is good enough for general deployment. + properties: + extraOpts: + items: + type: string + type: array + gcLoggingOpts: + items: + type: string + type: array + gcOpts: + items: + type: string + type: array + memoryOpts: + items: + type: string + type: array + type: object + image: + description: Image defines the BookKeeper Docker image to use. + By default, "pravega/bookkeeper" will be used. + properties: + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image + type: string + repository: + type: string + tag: + description: 'Deprecated: Use `spec.Version` instead' + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: Options is the Bookkeeper configuration that is to + override the bk_server.conf in bookkeeper. Some examples can + be found here https://github.com/apache/bookkeeper/blob/master/docker/README.md + type: object + replicas: + description: Replicas defines the number of BookKeeper replicas. + Minimum is 3. Defaults to 3. + format: int32 + type: integer + resources: + description: BookieResources specifies the request and limit of + resources that bookie can have. BookieResources includes CPU + and memory resources + 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 + serviceAccountName: + description: ServiceAccountName configures the service account + used on BookKeeper instances + type: string + storage: + description: Storage configures the storage for BookKeeper + properties: + indexVolumeClaimTemplate: + description: IndexVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper index This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for + binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is 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. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + journalVolumeClaimTemplate: + description: JournalVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper journal This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for + binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is 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. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + ledgerVolumeClaimTemplate: + description: LedgerVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper ledger This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for + binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is 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. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + type: object + type: object + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled + properties: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string + enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled + type: boolean + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + type: object + pravega: + description: Pravega configuration + properties: + cacheVolumeClaimTemplate: + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. + properties: + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is 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. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. + type: string + type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 1. + format: int32 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image + type: string + repository: + type: string + tag: + description: 'Deprecated: Use `spec.Version` instead' + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 1. + format: int32 + type: integer + segmentStoreResources: + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources + 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 + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + segmentStoreSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + tier2: + description: Tier2 is the configuration of Pravega's tier 2 storage. + If no configuration is provided, it will assume that a PersistentVolumeClaim + called "pravega-tier2" is present and it will use it as Tier + 2 + properties: + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend + properties: + bucket: + type: string + configUri: + type: string + credentials: + type: string + prefix: + type: string + type: object + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend + properties: + replicationFactor: + format: int32 + type: integer + root: + type: string + uri: + type: string + type: object + type: object + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. + properties: + caBundle: + type: string + controllerSecret: + type: string + segmentStoreSecret: + type: string + type: object + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string + type: object + status: + description: ClusterStatus defines the observed state of PravegaCluster + properties: + conditions: + description: Conditions list all the applied conditions + items: + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + type: string + lastUpdateTime: + description: The last time this condition was updated. + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Pravega cluster condition. + type: string + type: object + type: array + currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster + format: int32 + type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object + readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster + format: int32 + type: integer + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + {{- if .Release.IsUpgrade }} + served: true + {{- else }} + served: false + {{- end }} + storage: false +{{- end }} diff --git a/deploy/crds/crd.yaml b/deploy/crds/crd.yaml deleted file mode 100644 index 92e54ae14..000000000 --- a/deploy/crds/crd.yaml +++ /dev/null @@ -1,803 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: pravegaclusters.pravega.pravega.io -spec: - group: pravega.pravega.io - names: - kind: PravegaCluster - listKind: PravegaClusterList - plural: pravegaclusters - singular: pravegacluster - shortNames: - - pk - additionalPrinterColumns: - - name: Version - type: string - description: The current pravega version - JSONPath: .status.currentVersion - - name: Desired Version - type: string - description: The desired pravega version - JSONPath: .spec.version - - name: Desired Members - type: integer - description: The number of desired pravega members - JSONPath: .status.replicas - - name: Ready Members - type: integer - description: The number pravega members ready - JSONPath: .status.readyReplicas - - name: Age - type: date - JSONPath: .metadata.creationTimestamp - scope: Namespaced - preserveUnknownFields: false - conversion: - conversionReviewVersions: ["v1beta1", "v1alpha1"] - strategy: Webhook - webhookClientConfig: - service: - name: pravega-webhook-svc - namespace: default - path: /convert - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster - properties: - zookeeperUri: - type: string - externalAccess: - type: object - properties: - enabled: - type: boolean - type: - type: string - domainName: - type: string - tls: - type: object - properties: - static: - type: object - properties: - caBundle: - type: string - controllerSecret: - type: string - segmentStoreSecret: - type: string - authentication: - type: object - properties: - enabled: - type: boolean - passwordAuthSecret: - type: string - version: - type: string - bookkeeperUri: - type: string - pravega: - type: object - properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: - type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string - cacheVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - type: array - items: - type: object - properties: - key: - type: string - operator: - type: string - values: - type: array - items: - type: string - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - longtermStorage: - type: object - properties: - filesystem: - type: object - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: - type: object - properties: - configUri: - type: string - bucket: - type: string - prefix: - type: string - credentials: - type: string - hdfs: - type: object - properties: - uri: - type: string - root: - type: string - replicationFactor: - format: int32 - type: integer - controllerServiceAccountName: - type: string - segmentStoreServiceAccountName: - type: string - controllerResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreEnvVars: - type: string - segmentStoreSecret: - type: object - properties: - secret: - type: string - mountPath: - type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreExtServiceType: - type: string - segmentStoreSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreLoadBalancerIP: - type: string - segmentStoreExternalTrafficPolicy: - type: string - status: - type: object - description: PravegaCluster Status defines the observed state of PravegaCluster - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - status: - type: string - reason: - type: string - message: - type: string - lastUpdateTime: - type: string - lastTransitionTime: - type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: - type: array - items: - type: string - replicas: - format: int32 - type: integer - currentReplicas: - format: int32 - type: integer - readyReplicas: - format: int32 - type: integer - - name: v1alpha1 - served: false - storage: false - schema: - openAPIV3Schema: - type: object - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster - properties: - zookeeperUri: - type: string - externalAccess: - type: object - properties: - enabled: - type: boolean - type: - type: string - domainName: - type: string - tls: - type: object - properties: - static: - type: object - properties: - controllerSecret: - type: string - segmentStoreSecret: - type: string - authentication: - type: object - properties: - enabled: - type: boolean - passwordAuthSecret: - type: string - version: - type: string - bookkeeper: - type: object - properties: - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - replicas: - format: int32 - type: integer - storage: - type: object - properties: - ledgerVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - journalVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - indexVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - autoRecovery: - type: boolean - serviceAccountName: - type: string - resources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - options: - type: object - additionalProperties: - type: string - bookkeeperJVMOptions: - type: object - properties: - memoryOpts: - type: array - items: - type: string - gcOpts: - type: array - items: - type: string - gcLoggingOpts: - type: array - items: - type: string - extraOpts: - type: array - items: - type: string - pravega: - type: object - properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: - type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string - cacheVolumeClaimTemplate: - type: object - properties: - accessModes: - type: array - items: - type: string - dataSource: - type: object - nullable: true - properties: - apiGroup: - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - resources: - type: object - properties: - limits: - type: object - additionalProperties: - type: string - requests: - type: object - additionalProperties: - type: string - selector: - type: object - description: A label query over volumes to consider for binding. - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - type: object - type: array - matchLabels: - type: object - additionalProperties: - type: string - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - tier2: - type: object - properties: - filesystem: - type: object - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: - type: object - properties: - configUri: - type: string - bucket: - type: string - prefix: - type: string - credentials: - type: string - hdfs: - type: object - properties: - uri: - type: string - root: - type: string - replicationFactor: - format: int32 - type: integer - controllerServiceAccountName: - type: string - segmentStoreServiceAccountName: - type: string - controllerResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - segmentStoreEnvVars: - type: string - segmentStoreSecret: - type: object - properties: - secret: - type: string - mountPath: - type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreExtServiceType: - type: string - segmentStoreSvcAnnotations: - additionalProperties: - type: string - type: object - status: - type: object - description: PravegaCluster Status defines the observed state of PravegaCluster - properties: - conditions: - type: array - items: - type: object - properties: - type: - type: string - status: - type: string - reason: - type: string - message: - type: string - lastUpdateTime: - type: string - lastTransitionTime: - type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: - type: array - items: - type: string - replicas: - format: int32 - type: integer - currentReplicas: - format: int32 - type: integer - readyReplicas: - format: int32 - type: integer - subresources: - status: {} diff --git a/deploy/crds/pravega.pravega.io_pravegaclusters_crd.yaml b/deploy/crds/pravega.pravega.io_pravegaclusters_crd.yaml new file mode 100644 index 000000000..87e77bf98 --- /dev/null +++ b/deploy/crds/pravega.pravega.io_pravegaclusters_crd.yaml @@ -0,0 +1,1573 @@ +apiVersion: apiextensions.k8s.io/v1beta1 +kind: CustomResourceDefinition +metadata: + name: pravegaclusters.pravega.pravega.io +spec: + additionalPrinterColumns: + - JSONPath: .status.currentVersion + description: The current pravega version + name: Version + type: string + - JSONPath: .spec.version + description: The desired pravega version + name: Desired Version + type: string + - JSONPath: .status.replicas + description: The number of desired pravega members + name: Desired Members + type: integer + - JSONPath: .status.readyReplicas + description: The number of ready pravega members + name: Ready Members + type: integer + - JSONPath: .metadata.creationTimestamp + name: Age + type: date + group: pravega.pravega.io + names: + kind: PravegaCluster + listKind: PravegaClusterList + plural: pravegaclusters + shortNames: + - pk + singular: pravegacluster + scope: Namespaced + preserveUnknownFields: false + subresources: + status: {} + conversion: + conversionReviewVersions: ["v1beta1", "v1alpha1"] + strategy: Webhook + webhookClientConfig: + service: + name: pravega-webhook-svc + namespace: default + path: /convert + version: v1beta1 + versions: + - name: v1beta1 + schema: + openAPIV3Schema: + description: PravegaCluster is the Schema for the pravegaclusters 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: ClusterSpec defines the desired state of PravegaCluster + properties: + authentication: + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled + type: boolean + passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication + type: string + type: object + bookkeeperUri: + description: BookkeeperUri specifies the hostname/IP address and port + in the format "hostname:port". comma delimited list of BK server + URLs bookkeeper-bookie-0.bookkeeper-bookie-headless.default:3181, + bookkeeper-bookie-1.bookkeeper-bookie-headless.default:3181, bookkeeper-bookie-2.bookkeeper-bookie-headless.default:3181 + type: string + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled + properties: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string + enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled + type: boolean + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + enum: + - ClusterIP + - NodePort + - LoadBalancer + - ExternalName + type: string + type: object + pravega: + description: Pravega configuration + properties: + cacheVolumeClaimTemplate: + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + enum: + - ReadWriteOnce + - ReadOnlyMany + - ReadWriteMany + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. + properties: + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + enum: + - In + - NotIn + - Exists + - DoesNotExist + type: string + values: + description: values is 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. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. + type: string + type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when to + pull a container image + enum: + - Always + - Never + - IfNotPresent + type: string + repository: + type: string + type: object + longtermStorage: + description: LongTermStorage is the configuration of Pravega's + tier 2 storage. If no configuration is provided, it will assume + that a PersistentVolumeClaim called "pravega-longterm" is present + and it will use it as Tier 2 + properties: + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend + properties: + bucket: + type: string + configUri: + type: string + credentials: + type: string + prefix: + type: string + type: object + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend + properties: + replicationFactor: + format: int32 + type: integer + root: + type: string + uri: + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreEnvVars: + description: Provides the name of the configmap created by the + user to provide additional key-value pairs that need to be configured + into the ss pod as environmental variables + type: string + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + segmentStoreExternalTrafficPolicy: + description: SegmentStoreExternalTrafficPolicy defines the ExternalTrafficPolicy + it can have cluster or local + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreLoadBalancerIP: + description: Specifying this IP would ensure we use same IP address + for all the ss services + type: string + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer + segmentStoreResources: + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources + 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 + segmentStoreSecret: + description: SegmentStoreSecret specifies whether or not any secret + needs to be configured into the ss pod either as an environment + variable or by mounting it to a volume + properties: + mountPath: + description: Path to the volume where the secret will be mounted + This value is considered only when the secret is provided + If this value is provided, the secret is mounted to a Volume + else the secret is exposed as an Environment Variable + type: string + secret: + description: Secret specifies the name of Secret which needs + to be configured + type: string + type: object + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + segmentStoreSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. + properties: + caBundle: + type: string + controllerSecret: + type: string + segmentStoreSecret: + type: string + type: object + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string + type: object + status: + description: ClusterStatus defines the observed state of PravegaCluster + properties: + conditions: + description: Conditions list all the applied conditions + items: + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + type: string + lastUpdateTime: + description: The last time this condition was updated. + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Pravega cluster condition. + type: string + type: object + type: array + currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster + format: int32 + type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object + readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster + format: int32 + type: integer + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + served: true + storage: true + - name: v1alpha1 + schema: + openAPIV3Schema: + description: PravegaCluster is the Schema for the pravegaclusters 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: ClusterSpec defines the desired state of PravegaCluster + properties: + authentication: + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled + type: boolean + passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication + type: string + type: object + bookkeeper: + description: Bookkeeper configuration + properties: + autoRecovery: + description: AutoRecovery indicates whether or not BookKeeper + auto recovery is enabled. Defaults to true. + type: boolean + bookkeeperJVMOptions: + description: JVM is the JVM options for bookkeeper. It will be + passed to the JVM for performance tuning. If this field is not + specified, the operator will use a set of default options that + is good enough for general deployment. + properties: + extraOpts: + items: + type: string + type: array + gcLoggingOpts: + items: + type: string + type: array + gcOpts: + items: + type: string + type: array + memoryOpts: + items: + type: string + type: array + type: object + image: + description: Image defines the BookKeeper Docker image to use. + By default, "pravega/bookkeeper" will be used. + properties: + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image + type: string + repository: + type: string + tag: + description: 'Deprecated: Use `spec.Version` instead' + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: Options is the Bookkeeper configuration that is to + override the bk_server.conf in bookkeeper. Some examples can + be found here https://github.com/apache/bookkeeper/blob/master/docker/README.md + type: object + replicas: + description: Replicas defines the number of BookKeeper replicas. + Minimum is 3. Defaults to 3. + format: int32 + type: integer + resources: + description: BookieResources specifies the request and limit of + resources that bookie can have. BookieResources includes CPU + and memory resources + 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 + serviceAccountName: + description: ServiceAccountName configures the service account + used on BookKeeper instances + type: string + storage: + description: Storage configures the storage for BookKeeper + properties: + indexVolumeClaimTemplate: + description: IndexVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper index This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for + binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is 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. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + journalVolumeClaimTemplate: + description: JournalVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper journal This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for + binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is 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. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + ledgerVolumeClaimTemplate: + description: LedgerVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper ledger This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. + properties: + apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for + binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. + type: string + values: + description: values is 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. This array is replaced during a + strategic merge patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. + type: string + type: object + type: object + type: object + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled + properties: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string + enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled + type: boolean + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + type: object + pravega: + description: Pravega configuration + properties: + cacheVolumeClaimTemplate: + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume + properties: + accessModes: + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' + items: + type: string + type: array + dataSource: + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. + properties: + apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. + type: string + kind: + description: Kind is the type of resource being referenced + type: string + name: + description: Name is the name of resource being referenced + type: string + required: + - kind + - name + type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' + 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 + selector: + description: A label query over volumes to consider for binding. + properties: + matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. + items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. + properties: + key: + description: key is the label key that the selector + applies to. + type: string + operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + type: string + values: + description: values is 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. + This array is replaced during a strategic merge + patch. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object + storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string + volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem + type: string + volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. + type: string + type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 1. + format: int32 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image + type: string + repository: + type: string + tag: + description: 'Deprecated: Use `spec.Version` instead' + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 1. + format: int32 + type: integer + segmentStoreResources: + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources + 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 + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + segmentStoreSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + tier2: + description: Tier2 is the configuration of Pravega's tier 2 storage. + If no configuration is provided, it will assume that a PersistentVolumeClaim + called "pravega-tier2" is present and it will use it as Tier + 2 + properties: + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend + properties: + bucket: + type: string + configUri: + type: string + credentials: + type: string + prefix: + type: string + type: object + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend + properties: + replicationFactor: + format: int32 + type: integer + root: + type: string + uri: + type: string + type: object + type: object + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. + properties: + caBundle: + type: string + controllerSecret: + type: string + segmentStoreSecret: + type: string + type: object + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string + type: object + status: + description: ClusterStatus defines the observed state of PravegaCluster + properties: + conditions: + description: Conditions list all the applied conditions + items: + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + type: string + lastUpdateTime: + description: The last time this condition was updated. + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type of Pravega cluster condition. + type: string + type: object + type: array + currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster + format: int32 + type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object + readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster + format: int32 + type: integer + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + served: false + storage: false diff --git a/doc/manual-installation.md b/doc/manual-installation.md index 42eb90c35..3f44c1096 100644 --- a/doc/manual-installation.md +++ b/doc/manual-installation.md @@ -28,7 +28,7 @@ $ kubectl create -f deploy/version_map.yaml ``` Register the Pravega cluster custom resource definition (CRD). ``` -$ kubectl create -f deploy/crds/crd.yaml +$ kubectl create -f deploy/crds/pravega.pravega.io_pravegaclusters_crd.yaml ``` Create the operator role, role binding and service account. ``` diff --git a/go.mod b/go.mod index a37b75472..4938c36b5 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,9 @@ require ( github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da github.com/securego/gosec v0.0.0-20200401082031-e946c8c39989 // indirect github.com/sirupsen/logrus v1.5.0 + github.com/stripe/safesql v0.2.0 // indirect github.com/tsenart/deadcode v0.0.0-20160724212837-210d2dc333e9 // indirect + github.com/walle/lll v1.0.1 // indirect golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b // indirect k8s.io/api v0.17.5 k8s.io/apimachinery v0.17.5 diff --git a/go.sum b/go.sum index fb9d9780e..af5eba086 100644 --- a/go.sum +++ b/go.sum @@ -91,6 +91,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alexflint/go-arg v0.0.0-20160306200701-e71d6514f40a h1:Bc+P30eTWphhueyACA/fjiHJXRDq/kGiqO38nGxvml0= +github.com/alexflint/go-arg v0.0.0-20160306200701-e71d6514f40a/go.mod h1:PHxo6ZWOLVMZZgWSAqBynb/KhIqoGO6WKwOVX7rM9dg= github.com/aliyun/aliyun-oss-go-sdk v2.0.4+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= @@ -952,6 +954,8 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stripe/safesql v0.2.0 h1:xiefmCDd8c35PVSGrL2FhBiaKxviXnGziBDOpOejeBE= +github.com/stripe/safesql v0.2.0/go.mod h1:q7b2n0JmzM1mVGfcYpanfVb2j23cXZeWFxcILPn3JV4= github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= @@ -962,6 +966,7 @@ github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhV github.com/timakin/bodyclose v0.0.0-20190721030226-87058b9bfcec/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tsenart/deadcode v0.0.0-20160724212837-210d2dc333e9 h1:vY5WqiEon0ZSTGM3ayVVi+twaHKHDFUVloaQ/wug9/c= github.com/tsenart/deadcode v0.0.0-20160724212837-210d2dc333e9/go.mod h1:q+QjxYvZ+fpjMXqs+XEriussHjSYqeXVnAdSV1tkMYk= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/uber/jaeger-client-go v2.20.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= diff --git a/pkg/apis/pravega/v1alpha1/bookkeeper.go b/pkg/apis/pravega/v1alpha1/bookkeeper.go index b92627d1c..a03a251ff 100644 --- a/pkg/apis/pravega/v1alpha1/bookkeeper.go +++ b/pkg/apis/pravega/v1alpha1/bookkeeper.go @@ -12,7 +12,7 @@ package v1alpha1 import ( "github.com/pravega/pravega-operator/pkg/controller/config" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" ) @@ -58,17 +58,21 @@ const ( type BookkeeperSpec struct { // Image defines the BookKeeper Docker image to use. // By default, "pravega/bookkeeper" will be used. + // +optional Image *BookkeeperImageSpec `json:"image"` // Replicas defines the number of BookKeeper replicas. // Minimum is 3. Defaults to 3. + // +optional Replicas int32 `json:"replicas"` // Storage configures the storage for BookKeeper + // +optional Storage *BookkeeperStorageSpec `json:"storage"` // AutoRecovery indicates whether or not BookKeeper auto recovery is enabled. // Defaults to true. + // +optional AutoRecovery *bool `json:"autoRecovery"` // ServiceAccountName configures the service account used on BookKeeper instances @@ -81,11 +85,13 @@ type BookkeeperSpec struct { // Options is the Bookkeeper configuration that is to override the bk_server.conf // in bookkeeper. Some examples can be found here // https://github.com/apache/bookkeeper/blob/master/docker/README.md + // +optional Options map[string]string `json:"options"` // JVM is the JVM options for bookkeeper. It will be passed to the JVM for performance tuning. // If this field is not specified, the operator will use a set of default // options that is good enough for general deployment. + // +optional BookkeeperJVMOptions *BookkeeperJVMOptions `json:"bookkeeperJVMOptions"` } @@ -149,7 +155,7 @@ func (s *BookkeeperSpec) withDefaults() (changed bool) { // BookkeeperImageSpec defines the fields needed for a BookKeeper Docker image type BookkeeperImageSpec struct { - ImageSpec + ImageSpec `json:"imageSpec,omitempty"` } func (s *BookkeeperImageSpec) withDefaults() (changed bool) { @@ -169,10 +175,14 @@ func (s *BookkeeperImageSpec) withDefaults() (changed bool) { } type BookkeeperJVMOptions struct { - MemoryOpts []string `json:"memoryOpts"` - GcOpts []string `json:"gcOpts"` + // +optional + MemoryOpts []string `json:"memoryOpts"` + // +optional + GcOpts []string `json:"gcOpts"` + // +optional GcLoggingOpts []string `json:"gcLoggingOpts"` - ExtraOpts []string `json:"extraOpts"` + // +optional + ExtraOpts []string `json:"extraOpts"` } func (s *BookkeeperJVMOptions) withDefaults() (changed bool) { @@ -204,16 +214,19 @@ type BookkeeperStorageSpec struct { // LedgerVolumeClaimTemplate is the spec to describe PVC for the BookKeeper ledger // This field is optional. If no PVC spec and there is no default storage class, // stateful containers will use emptyDir as volume + // +optional LedgerVolumeClaimTemplate *v1.PersistentVolumeClaimSpec `json:"ledgerVolumeClaimTemplate"` // JournalVolumeClaimTemplate is the spec to describe PVC for the BookKeeper journal // This field is optional. If no PVC spec and there is no default storage class, // stateful containers will use emptyDir as volume + // +optional JournalVolumeClaimTemplate *v1.PersistentVolumeClaimSpec `json:"journalVolumeClaimTemplate"` // IndexVolumeClaimTemplate is the spec to describe PVC for the BookKeeper index // This field is optional. If no PVC spec and there is no default storage class, // stateful containers will use emptyDir as volume + // +optional IndexVolumeClaimTemplate *v1.PersistentVolumeClaimSpec `json:"indexVolumeClaimTemplate"` } diff --git a/pkg/apis/pravega/v1alpha1/pravega.go b/pkg/apis/pravega/v1alpha1/pravega.go index 0002e0260..716ff6c66 100644 --- a/pkg/apis/pravega/v1alpha1/pravega.go +++ b/pkg/apis/pravega/v1alpha1/pravega.go @@ -12,7 +12,7 @@ package v1alpha1 import ( "github.com/pravega/pravega-operator/pkg/controller/config" - "k8s.io/api/core/v1" + v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" ) @@ -69,43 +69,52 @@ const ( type PravegaSpec struct { // ControllerReplicas defines the number of Controller replicas. // Defaults to 1. + // +optional ControllerReplicas int32 `json:"controllerReplicas"` // SegmentStoreReplicas defines the number of Segment Store replicas. // Defaults to 1. + // +optional SegmentStoreReplicas int32 `json:"segmentStoreReplicas"` // DebugLogging indicates whether or not debug level logging is enabled. // Defaults to false. + // +optional DebugLogging bool `json:"debugLogging"` // Image defines the Pravega Docker image to use. // By default, "pravega/pravega" will be used. + // +optional Image *PravegaImageSpec `json:"image"` // Options is the Pravega configuration that is passed to the Pravega processes // as JAVA_OPTS. See the following file for a complete list of options: // https://github.com/pravega/pravega/blob/master/config/config.properties + // +optional Options map[string]string `json:"options"` // ControllerJvmOptions is the JVM options for controller. It will be passed to the JVM // for performance tuning. If this field is not specified, the operator will use a set of default // options that is good enough for general deployment. + // +optional ControllerJvmOptions []string `json:"controllerjvmOptions"` // SegmentStoreJVMOptions is the JVM options for Segmentstore. It will be passed to the JVM // for performance tuning. If this field is not specified, the operator will use a set of default // options that is good enough for general deployment. + // +optional SegmentStoreJVMOptions []string `json:"segmentStoreJVMOptions"` // CacheVolumeClaimTemplate is the spec to describe PVC for the Pravega cache. // This field is optional. If no PVC spec, stateful containers will use // emptyDir as volume + // +optional CacheVolumeClaimTemplate *v1.PersistentVolumeClaimSpec `json:"cacheVolumeClaimTemplate"` // Tier2 is the configuration of Pravega's tier 2 storage. If no configuration // is provided, it will assume that a PersistentVolumeClaim called "pravega-tier2" // is present and it will use it as Tier 2 + // +optional Tier2 *Tier2Spec `json:"tier2"` // ControllerServiceAccountName configures the service account used on controller instances. @@ -130,6 +139,7 @@ type PravegaSpec struct { ControllerExternalServiceType v1.ServiceType `json:"controllerExtServiceType,omitempty"` // Annotations to be added to the external service + // +optional ControllerServiceAnnotations map[string]string `json:"controllerSvcAnnotations"` // Type specifies the service type to achieve external access. @@ -138,6 +148,7 @@ type PravegaSpec struct { SegmentStoreExternalServiceType v1.ServiceType `json:"segmentStoreExtServiceType,omitempty"` // Annotations to be added to the external service + // +optional SegmentStoreServiceAnnotations map[string]string `json:"segmentStoreSvcAnnotations"` } @@ -239,7 +250,7 @@ func (s *PravegaSpec) withDefaults() (changed bool) { // PravegaImageSpec defines the fields needed for a Pravega Docker image type PravegaImageSpec struct { - ImageSpec + ImageSpec `json:"imageSpec,omitempty"` } func (s *PravegaImageSpec) withDefaults() (changed bool) { @@ -290,20 +301,28 @@ func (s *Tier2Spec) withDefaults() (changed bool) { // FileSystemSpec contains the reference to a PVC. type FileSystemSpec struct { + // +optional PersistentVolumeClaim *v1.PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim"` } // ECSSpec contains the connection details to a Dell EMC ECS system type ECSSpec struct { - ConfigUri string `json:"configUri"` - Bucket string `json:"bucket"` - Prefix string `json:"prefix"` + // +optional + ConfigUri string `json:"configUri"` + // +optional + Bucket string `json:"bucket"` + // +optional + Prefix string `json:"prefix"` + // +optional Credentials string `json:"credentials"` } // HDFSSpec contains the connection details to an HDFS system type HDFSSpec struct { - Uri string `json:"uri"` - Root string `json:"root"` - ReplicationFactor int32 `json:"replicationFactor"` + // +optional + Uri string `json:"uri"` + // +optional + Root string `json:"root"` + // +optional + ReplicationFactor int32 `json:"replicationFactor"` } diff --git a/pkg/apis/pravega/v1alpha1/pravegacluster_types.go b/pkg/apis/pravega/v1alpha1/pravegacluster_types.go index ad8eb2c1b..15dc39de7 100644 --- a/pkg/apis/pravega/v1alpha1/pravegacluster_types.go +++ b/pkg/apis/pravega/v1alpha1/pravegacluster_types.go @@ -53,9 +53,19 @@ type PravegaClusterList struct { } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true + +// Generate CRD using kubebuilder +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:resource:shortName=pk +// +kubebuilder:printcolumn:name="Version",type=string,JSONPath=`.status.currentVersion`,description="The current pravega version" +// +kubebuilder:printcolumn:name="Desired Version",type=string,JSONPath=`.spec.version`,description="The desired pravega version" +// +kubebuilder:printcolumn:name="Desired Members",type=integer,JSONPath=`.status.replicas`,description="The number of desired pravega members" +// +kubebuilder:printcolumn:name="Ready Members",type=integer,JSONPath=`.status.readyReplicas`,description="The number of ready pravega members" +// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp` // PravegaCluster is the Schema for the pravegaclusters API -// +k8s:openapi-gen=true type PravegaCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -77,11 +87,13 @@ type ClusterSpec struct { // By default, the value "zookeeper-client:2181" is used, that corresponds to the // default Zookeeper service created by the Pravega Zookkeeper operator // available at: https://github.com/pravega/zookeeper-operator + // +optional ZookeeperUri string `json:"zookeeperUri"` // ExternalAccess specifies whether or not to allow external access // to clients and the service type to use to achieve it // By default, external access is not enabled + // +optional ExternalAccess *ExternalAccess `json:"externalAccess"` // TLS is the Pravega security configuration that is passed to the Pravega processes. @@ -102,12 +114,15 @@ type ClusterSpec struct { // Only Pravega released versions are supported: https://github.com/pravega/pravega/releases // // If version is not set, default is "0.4.0". + // +optional Version string `json:"version"` // Bookkeeper configuration + // +optional Bookkeeper *BookkeeperSpec `json:"bookkeeper"` // Pravega configuration + // +optional Pravega *PravegaSpec `json:"pravega"` } @@ -167,6 +182,7 @@ func (s *ClusterSpec) withDefaults() (changed bool) { type ExternalAccess struct { // Enabled specifies whether or not external access is enabled // By default, external access is not enabled + // +optional Enabled bool `json:"enabled"` // Type specifies the service type to achieve external access. @@ -223,6 +239,7 @@ func (tp *TLSPolicy) IsCaBundlePresent() bool { type AuthenticationParameters struct { // Enabled specifies whether or not authentication is enabled // By default, authentication is not enabled + // +optional Enabled bool `json:"enabled"` // name of Secret containing Password based Authentication Parameters like username, password and acl @@ -239,10 +256,12 @@ func (ap *AuthenticationParameters) IsEnabled() bool { // ImageSpec defines the fields needed for a Docker repository image type ImageSpec struct { + // +optional Repository string `json:"repository"` // Deprecated: Use `spec.Version` instead Tag string `json:"tag,omitempty"` + // +optional PullPolicy v1.PullPolicy `json:"pullPolicy"` } diff --git a/pkg/apis/pravega/v1alpha1/status.go b/pkg/apis/pravega/v1alpha1/status.go index 188bd1e11..651af2d38 100644 --- a/pkg/apis/pravega/v1alpha1/status.go +++ b/pkg/apis/pravega/v1alpha1/status.go @@ -48,22 +48,30 @@ type ClusterStatus struct { VersionHistory []string `json:"versionHistory,omitempty"` // Replicas is the number of desired replicas in the cluster + // +optional Replicas int32 `json:"replicas"` // CurrentReplicas is the number of current replicas in the cluster + // +optional CurrentReplicas int32 `json:"currentReplicas"` // ReadyReplicas is the number of ready replicas in the cluster + // +optional ReadyReplicas int32 `json:"readyReplicas"` // Members is the Pravega members in the cluster + // +optional Members MembersStatus `json:"members"` } // MembersStatus is the status of the members of the cluster with both // ready and unready node membership lists type MembersStatus struct { - Ready []string `json:"ready"` + // +optional + // +nullable + Ready []string `json:"ready"` + // +optional + // +nullable Unready []string `json:"unready"` } @@ -71,9 +79,11 @@ type MembersStatus struct { // Comply with k8s API conventions type ClusterCondition struct { // Type of Pravega cluster condition. + // +optional Type ClusterConditionType `json:"type"` // Status of the condition, one of True, False, Unknown. + // +optional Status corev1.ConditionStatus `json:"status"` // The reason for the condition's last transition. diff --git a/pkg/apis/pravega/v1beta1/pravega.go b/pkg/apis/pravega/v1beta1/pravega.go index 5315242d0..338efe597 100644 --- a/pkg/apis/pravega/v1beta1/pravega.go +++ b/pkg/apis/pravega/v1beta1/pravega.go @@ -69,43 +69,54 @@ const ( type PravegaSpec struct { // ControllerReplicas defines the number of Controller replicas. // Defaults to 1. + // +kubebuilder:validation:Minimum=0 + // +optional ControllerReplicas int32 `json:"controllerReplicas"` // SegmentStoreReplicas defines the number of Segment Store replicas. // Defaults to 1. + // +kubebuilder:validation:Minimum=0 + // +optional SegmentStoreReplicas int32 `json:"segmentStoreReplicas"` // DebugLogging indicates whether or not debug level logging is enabled. // Defaults to false. + // +optional DebugLogging bool `json:"debugLogging"` // Image defines the Pravega Docker image to use. // By default, "pravega/pravega" will be used. + // +optional Image *ImageSpec `json:"image"` // Options is the Pravega configuration that is passed to the Pravega processes // as JAVA_OPTS. See the following file for a complete list of options: // https://github.com/pravega/pravega/blob/master/config/config.properties + // +optional Options map[string]string `json:"options"` // ControllerJvmOptions is the JVM options for controller. It will be passed to the JVM // for performance tuning. If this field is not specified, the operator will use a set of default // options that is good enough for general deployment. + // +optional ControllerJvmOptions []string `json:"controllerjvmOptions"` // SegmentStoreJVMOptions is the JVM options for Segmentstore. It will be passed to the JVM // for performance tuning. If this field is not specified, the operator will use a set of default // options that is good enough for general deployment. + // +optional SegmentStoreJVMOptions []string `json:"segmentStoreJVMOptions"` // CacheVolumeClaimTemplate is the spec to describe PVC for the Pravega cache. // This field is optional. If no PVC spec, stateful containers will use // emptyDir as volume + // +optional CacheVolumeClaimTemplate *v1.PersistentVolumeClaimSpec `json:"cacheVolumeClaimTemplate,omitempty"` // LongTermStorage is the configuration of Pravega's tier 2 storage. If no configuration // is provided, it will assume that a PersistentVolumeClaim called "pravega-longterm" // is present and it will use it as Tier 2 + // +optional LongTermStorage *LongTermStorageSpec `json:"longtermStorage"` // ControllerServiceAccountName configures the service account used on controller instances. @@ -130,6 +141,7 @@ type PravegaSpec struct { // SegmentStoreSecret specifies whether or not any secret needs to be configured into the ss pod // either as an environment variable or by mounting it to a volume + // +optional SegmentStoreSecret *SegmentStoreSecret `json:"segmentStoreSecret"` // Type specifies the service type to achieve external access. @@ -138,6 +150,7 @@ type PravegaSpec struct { ControllerExternalServiceType v1.ServiceType `json:"controllerExtServiceType,omitempty"` // Annotations to be added to the external service + // +optional ControllerServiceAnnotations map[string]string `json:"controllerSvcAnnotations"` // Type specifies the service type to achieve external access. @@ -146,6 +159,7 @@ type PravegaSpec struct { SegmentStoreExternalServiceType v1.ServiceType `json:"segmentStoreExtServiceType,omitempty"` // Annotations to be added to the external service + // +optional SegmentStoreServiceAnnotations map[string]string `json:"segmentStoreSvcAnnotations"` // Specifying this IP would ensure we use same IP address for all the ss services @@ -251,12 +265,14 @@ func (s *PravegaSpec) withDefaults() (changed bool) { // SegmentStoreSecret defines the configuration of the secret for the Segment Store type SegmentStoreSecret struct { // Secret specifies the name of Secret which needs to be configured + // +optional Secret string `json:"secret"` // Path to the volume where the secret will be mounted // This value is considered only when the secret is provided // If this value is provided, the secret is mounted to a Volume // else the secret is exposed as an Environment Variable + // +optional MountPath string `json:"mountPath"` } @@ -314,20 +330,28 @@ func (s *LongTermStorageSpec) withDefaults() (changed bool) { // FileSystemSpec contains the reference to a PVC. type FileSystemSpec struct { + // +optional PersistentVolumeClaim *v1.PersistentVolumeClaimVolumeSource `json:"persistentVolumeClaim"` } // ECSSpec contains the connection details to a Dell EMC ECS system type ECSSpec struct { - ConfigUri string `json:"configUri"` - Bucket string `json:"bucket"` - Prefix string `json:"prefix"` + // +optional + ConfigUri string `json:"configUri"` + // +optional + Bucket string `json:"bucket"` + // +optional + Prefix string `json:"prefix"` + // +optional Credentials string `json:"credentials"` } // HDFSSpec contains the connection details to an HDFS system type HDFSSpec struct { - Uri string `json:"uri"` - Root string `json:"root"` - ReplicationFactor int32 `json:"replicationFactor"` + // +optional + Uri string `json:"uri"` + // +optional + Root string `json:"root"` + // +optional + ReplicationFactor int32 `json:"replicationFactor"` } diff --git a/pkg/apis/pravega/v1beta1/pravegacluster_types.go b/pkg/apis/pravega/v1beta1/pravegacluster_types.go index da7c105b3..02204a5af 100644 --- a/pkg/apis/pravega/v1beta1/pravegacluster_types.go +++ b/pkg/apis/pravega/v1beta1/pravegacluster_types.go @@ -73,9 +73,20 @@ type PravegaClusterList struct { } // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +// +k8s:openapi-gen=true +// Generate CRD using kubebuilder + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:resource:shortName=pk +// +kubebuilder:printcolumn:name="Version",type=string,JSONPath=`.status.currentVersion`,description="The current pravega version" +// +kubebuilder:printcolumn:name="Desired Version",type=string,JSONPath=`.spec.version`,description="The desired pravega version" +// +kubebuilder:printcolumn:name="Desired Members",type=integer,JSONPath=`.status.replicas`,description="The number of desired pravega members" +// +kubebuilder:printcolumn:name="Ready Members",type=integer,JSONPath=`.status.readyReplicas`,description="The number of ready pravega members" +// +kubebuilder:printcolumn:name="Age",type=date,JSONPath=`.metadata.creationTimestamp` // PravegaCluster is the Schema for the pravegaclusters API -// +k8s:openapi-gen=true type PravegaCluster struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` @@ -97,16 +108,19 @@ type ClusterSpec struct { // By default, the value "zookeeper-client:2181" is used, that corresponds to the // default Zookeeper service created by the Pravega Zookkeeper operator // available at: https://github.com/pravega/zookeeper-operator + // +optional ZookeeperUri string `json:"zookeeperUri"` // ExternalAccess specifies whether or not to allow external access // to clients and the service type to use to achieve it // By default, external access is not enabled + // +optional ExternalAccess *ExternalAccess `json:"externalAccess"` // TLS is the Pravega security configuration that is passed to the Pravega processes. // See the following file for a complete list of options: // https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md + // +optional TLS *TLSPolicy `json:"tls,omitempty"` // Authentication can be enabled for authorizing all communication from clients to controller and segment store @@ -122,6 +136,7 @@ type ClusterSpec struct { // Only Pravega released versions are supported: https://github.com/pravega/pravega/releases // // If version is not set, default is "0.4.0". + // +optional Version string `json:"version"` // BookkeeperUri specifies the hostname/IP address and port in the format @@ -130,9 +145,11 @@ type ClusterSpec struct { // bookkeeper-bookie-0.bookkeeper-bookie-headless.default:3181, // bookkeeper-bookie-1.bookkeeper-bookie-headless.default:3181, // bookkeeper-bookie-2.bookkeeper-bookie-headless.default:3181 + // +optional BookkeeperUri string `json:"bookkeeperUri"` // Pravega configuration + // +optional Pravega *PravegaSpec `json:"pravega"` } @@ -201,6 +218,7 @@ func (s *ClusterSpec) withDefaults() (changed bool) { type ExternalAccess struct { // Enabled specifies whether or not external access is enabled // By default, external access is not enabled + // +optional Enabled bool `json:"enabled"` // Type specifies the service type to achieve external access. @@ -257,6 +275,7 @@ func (tp *TLSPolicy) IsCaBundlePresent() bool { type AuthenticationParameters struct { // Enabled specifies whether or not authentication is enabled // By default, authentication is not enabled + // +optional Enabled bool `json:"enabled"` // name of Secret containing Password based Authentication Parameters like username, password and acl @@ -273,7 +292,9 @@ func (ap *AuthenticationParameters) IsEnabled() bool { // ImageSpec defines the fields needed for a Docker repository image type ImageSpec struct { - Repository string `json:"repository"` + // +optional + Repository string `json:"repository"` + // +optional PullPolicy corev1.PullPolicy `json:"pullPolicy"` } diff --git a/pkg/apis/pravega/v1beta1/status.go b/pkg/apis/pravega/v1beta1/status.go index a96af4471..34ea6db77 100644 --- a/pkg/apis/pravega/v1beta1/status.go +++ b/pkg/apis/pravega/v1beta1/status.go @@ -48,22 +48,30 @@ type ClusterStatus struct { VersionHistory []string `json:"versionHistory,omitempty"` // Replicas is the number of desired replicas in the cluster + // +optional Replicas int32 `json:"replicas"` // CurrentReplicas is the number of current replicas in the cluster + // +optional CurrentReplicas int32 `json:"currentReplicas"` // ReadyReplicas is the number of ready replicas in the cluster + // +optional ReadyReplicas int32 `json:"readyReplicas"` // Members is the Pravega members in the cluster + // +optional Members MembersStatus `json:"members"` } // MembersStatus is the status of the members of the cluster with both // ready and unready node membership lists type MembersStatus struct { - Ready []string `json:"ready"` + // +optional + // +nullable + Ready []string `json:"ready"` + // +optional + // +nullable Unready []string `json:"unready"` } @@ -71,9 +79,11 @@ type MembersStatus struct { // Comply with k8s API conventions type ClusterCondition struct { // Type of Pravega cluster condition. + // +optional Type ClusterConditionType `json:"type"` // Status of the condition, one of True, False, Unknown. + // +optional Status corev1.ConditionStatus `json:"status"` // The reason for the condition's last transition. diff --git a/test/e2e/resources/crd.yaml b/test/e2e/resources/crd.yaml index fb92cf6a6..87e77bf98 100644 --- a/test/e2e/resources/crd.yaml +++ b/test/e2e/resources/crd.yaml @@ -3,138 +3,148 @@ kind: CustomResourceDefinition metadata: name: pravegaclusters.pravega.pravega.io spec: - group: pravega.pravega.io - names: - kind: PravegaCluster - listKind: PravegaClusterList - plural: pravegaclusters - singular: pravegacluster - shortNames: - - pk additionalPrinterColumns: - - name: Version - type: string + - JSONPath: .status.currentVersion description: The current pravega version - JSONPath: .status.currentVersion - - name: Desired Version + name: Version type: string + - JSONPath: .spec.version description: The desired pravega version - JSONPath: .spec.version - - name: Desired Members - type: integer + name: Desired Version + type: string + - JSONPath: .status.replicas description: The number of desired pravega members - JSONPath: .status.replicas - - name: Ready Members + name: Desired Members + type: integer + - JSONPath: .status.readyReplicas + description: The number of ready pravega members + name: Ready Members type: integer - description: The number pravega members ready - JSONPath: .status.readyReplicas - - name: Age + - JSONPath: .metadata.creationTimestamp + name: Age type: date - JSONPath: .metadata.creationTimestamp + group: pravega.pravega.io + names: + kind: PravegaCluster + listKind: PravegaClusterList + plural: pravegaclusters + shortNames: + - pk + singular: pravegacluster scope: Namespaced preserveUnknownFields: false + subresources: + status: {} conversion: conversionReviewVersions: ["v1beta1", "v1alpha1"] strategy: Webhook webhookClientConfig: - service: - name: pravega-webhook-svc - namespace: default - path: /convert + service: + name: pravega-webhook-svc + namespace: default + path: /convert + version: v1beta1 versions: - name: v1beta1 - served: true - storage: true schema: openAPIV3Schema: - type: object + description: PravegaCluster is the Schema for the pravegaclusters 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: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster + description: ClusterSpec defines the desired state of PravegaCluster properties: - zookeeperUri: - type: string - externalAccess: - type: object + authentication: + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' properties: enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled type: boolean - type: - type: string - domainName: + passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication type: string - tls: - type: object - properties: - static: - type: object - properties: - controllerSecret: - type: string - segmentStoreSecret: - type: string - authentication: type: object + bookkeeperUri: + description: BookkeeperUri specifies the hostname/IP address and port + in the format "hostname:port". comma delimited list of BK server + URLs bookkeeper-bookie-0.bookkeeper-bookie-headless.default:3181, + bookkeeper-bookie-1.bookkeeper-bookie-headless.default:3181, bookkeeper-bookie-2.bookkeeper-bookie-headless.default:3181 + type: string + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled properties: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled type: boolean - passwordAuthSecret: + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + enum: + - ClusterIP + - NodePort + - LoadBalancer + - ExternalName type: string - version: - type: string - bookkeeperUri: - type: string - pravega: type: object + pravega: + description: Pravega configuration properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: - type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string cacheVolumeClaimTemplate: - type: object + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: + enum: + - ReadWriteOnce + - ReadOnlyMany + - ReadWriteMany type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -143,242 +153,599 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 + selector: description: A label query over volumes to consider for binding. properties: matchExpressions: - type: array + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: - type: object + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + enum: + - In + - NotIn + - Exists + - DoesNotExist type: string values: - type: array + description: values is 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. + This array is replaced during a strategic merge + patch. items: type: string + type: array + required: + - key + - operator + type: object + type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object storageClassName: - type: string + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string - longtermStorage: type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources properties: - filesystem: + 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 - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when to + pull a container image + enum: + - Always + - Never + - IfNotPresent + type: string + repository: + type: string + type: object + longtermStorage: + description: LongTermStorage is the configuration of Pravega's + tier 2 storage. If no configuration is provided, it will assume + that a PersistentVolumeClaim called "pravega-longterm" is present + and it will use it as Tier 2 + properties: + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend properties: - configUri: - type: string bucket: type: string - prefix: + configUri: type: string credentials: type: string - hdfs: + prefix: + type: string type: object + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend properties: - uri: - type: string - root: - type: string replicationFactor: format: int32 type: integer - controllerServiceAccountName: + root: + type: string + uri: + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreEnvVars: + description: Provides the name of the configmap created by the + user to provide additional key-value pairs that need to be configured + into the ss pod as environmental variables type: string - segmentStoreServiceAccountName: + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" type: string - controllerResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object + segmentStoreExternalTrafficPolicy: + description: SegmentStoreExternalTrafficPolicy defines the ExternalTrafficPolicy + it can have cluster or local + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreLoadBalancerIP: + description: Specifying this IP would ensure we use same IP address + for all the ss services + type: string + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer segmentStoreResources: - type: object + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources properties: limits: additionalProperties: - type: string + 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: - type: string + 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 - segmentStoreEnvVars: - type: string - segmentStoreSecret: type: object + segmentStoreSecret: + description: SegmentStoreSecret specifies whether or not any secret + needs to be configured into the ss pod either as an environment + variable or by mounting it to a volume properties: - secret: - type: string mountPath: + description: Path to the volume where the secret will be mounted + This value is considered only when the secret is provided + If this value is provided, the secret is mounted to a Volume + else the secret is exposed as an Environment Variable + type: string + secret: + description: Secret specifies the name of Secret which needs + to be configured type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string type: object - segmentStoreExtServiceType: + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default type: string segmentStoreSvcAnnotations: additionalProperties: type: string + description: Annotations to be added to the external service type: object - status: + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. + properties: + caBundle: + type: string + controllerSecret: + type: string + segmentStoreSecret: + type: string + type: object + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string type: object - description: PravegaCluster Status defines the observed state of PravegaCluster + status: + description: ClusterStatus defines the observed state of PravegaCluster properties: conditions: - type: array + description: Conditions list all the applied conditions items: - type: object + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions properties: - type: - type: string - status: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. type: string - reason: + lastUpdateTime: + description: The last time this condition was updated. type: string message: + description: A human readable message indicating details about + the transition. type: string - lastUpdateTime: + reason: + description: The reason for the condition's last transition. type: string - lastTransitionTime: + status: + description: Status of the condition, one of True, False, Unknown. type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: + type: + description: Type of Pravega cluster condition. + type: string + type: object type: array - items: - type: string - replicas: - format: int32 - type: integer currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster format: int32 type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster + format: int32 + type: integer + replicas: + description: Replicas is the number of desired replicas in the cluster format: int32 type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + served: true + storage: true - name: v1alpha1 - served: false - storage: false schema: openAPIV3Schema: - type: object + description: PravegaCluster is the Schema for the pravegaclusters 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: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster + description: ClusterSpec defines the desired state of PravegaCluster properties: - zookeeperUri: - type: string - externalAccess: - type: object - properties: - enabled: - type: boolean - type: - type: string - domainName: - type: string - tls: - type: object - properties: - static: - type: object - properties: - controllerSecret: - type: string - segmentStoreSecret: - type: string authentication: - type: object + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' properties: enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled type: boolean passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication type: string - version: - type: string - bookkeeper: type: object + bookkeeper: + description: Bookkeeper configuration properties: - image: + autoRecovery: + description: AutoRecovery indicates whether or not BookKeeper + auto recovery is enabled. Defaults to true. + type: boolean + bookkeeperJVMOptions: + description: JVM is the JVM options for bookkeeper. It will be + passed to the JVM for performance tuning. If this field is not + specified, the operator will use a set of default options that + is good enough for general deployment. + properties: + extraOpts: + items: + type: string + type: array + gcLoggingOpts: + items: + type: string + type: array + gcOpts: + items: + type: string + type: array + memoryOpts: + items: + type: string + type: array type: object + image: + description: Image defines the BookKeeper Docker image to use. + By default, "pravega/bookkeeper" will be used. properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image + type: string + repository: + type: string + tag: + description: 'Deprecated: Use `spec.Version` instead' + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: Options is the Bookkeeper configuration that is to + override the bk_server.conf in bookkeeper. Some examples can + be found here https://github.com/apache/bookkeeper/blob/master/docker/README.md + type: object replicas: + description: Replicas defines the number of BookKeeper replicas. + Minimum is 3. Defaults to 3. format: int32 type: integer - storage: - type: object + resources: + description: BookieResources specifies the request and limit of + resources that bookie can have. BookieResources includes CPU + and memory resources properties: - ledgerVolumeClaimTemplate: + 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 + serviceAccountName: + description: ServiceAccountName configures the service account + used on BookKeeper instances + type: string + storage: + description: Storage configures the storage for BookKeeper + properties: + indexVolumeClaimTemplate: + description: IndexVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper index This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -387,58 +754,129 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 - description: A label query over volumes to consider for binding. + selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is 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. This array is replaced during a + strategic merge patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string - journalVolumeClaimTemplate: type: object + journalVolumeClaimTemplate: + description: JournalVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper journal This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -447,58 +885,129 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 - description: A label query over volumes to consider for binding. + selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is 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. This array is replaced during a + strategic merge patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string - indexVolumeClaimTemplate: type: object + ledgerVolumeClaimTemplate: + description: LedgerVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper ledger This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -507,128 +1016,152 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 - description: A label query over volumes to consider for binding. + selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is 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. This array is replaced during a + strategic merge patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string - autoRecovery: - type: boolean - serviceAccountName: - type: string - resources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string type: object - options: type: object - additionalProperties: - type: string - bookkeeperJVMOptions: - type: object - properties: - memoryOpts: - type: array - items: - type: string - gcOpts: - type: array - items: - type: string - gcLoggingOpts: - type: array - items: - type: string - extraOpts: - type: array - items: - type: string - pravega: type: object + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string + enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + type: object + pravega: + description: Pravega configuration + properties: cacheVolumeClaimTemplate: - type: object + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -636,162 +1169,405 @@ spec: name: description: Name is the name of resource being referenced type: string - resources: + required: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 + selector: description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is 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. + This array is replaced during a strategic merge + patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string - tier2: type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 1. + format: int32 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources properties: - filesystem: + 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 - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image properties: - configUri: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image type: string - bucket: + repository: type: string - prefix: - type: string - credentials: + tag: + description: 'Deprecated: Use `spec.Version` instead' type: string - hdfs: type: object - properties: - uri: - type: string - root: - type: string - replicationFactor: - format: int32 - type: integer - controllerServiceAccountName: - type: string - segmentStoreServiceAccountName: - type: string - controllerResources: type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 1. + format: int32 + type: integer + segmentStoreResources: + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources properties: limits: additionalProperties: - type: string + 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: - type: string + 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 - segmentStoreResources: type: object + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + segmentStoreSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + tier2: + description: Tier2 is the configuration of Pravega's tier 2 storage. + If no configuration is provided, it will assume that a PersistentVolumeClaim + called "pravega-tier2" is present and it will use it as Tier + 2 properties: - limits: - additionalProperties: - type: string + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend + properties: + bucket: + type: string + configUri: + type: string + credentials: + type: string + prefix: + type: string type: object - requests: - additionalProperties: - type: string + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend + properties: + replicationFactor: + format: int32 + type: integer + root: + type: string + uri: + type: string type: object - segmentStoreEnvVars: - type: string - segmentStoreSecret: type: object + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. properties: - secret: + caBundle: type: string - mountPath: + controllerSecret: + type: string + segmentStoreSecret: type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreExtServiceType: - type: string - segmentStoreSvcAnnotations: - additionalProperties: - type: string type: object - status: + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string type: object - description: PravegaCluster Status defines the observed state of PravegaCluster + status: + description: ClusterStatus defines the observed state of PravegaCluster properties: conditions: - type: array + description: Conditions list all the applied conditions items: - type: object + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions properties: - type: - type: string - status: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. type: string - reason: + lastUpdateTime: + description: The last time this condition was updated. type: string message: + description: A human readable message indicating details about + the transition. type: string - lastUpdateTime: + reason: + description: The reason for the condition's last transition. type: string - lastTransitionTime: + status: + description: Status of the condition, one of True, False, Unknown. type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: + type: + description: Type of Pravega cluster condition. + type: string + type: object type: array - items: - type: string - replicas: - format: int32 - type: integer currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster format: int32 type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster format: int32 type: integer - subresources: - status: {} + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + served: false + storage: false diff --git a/tools/manifest_files/crd.yaml b/tools/manifest_files/crd.yaml index c12893f2a..04647395e 100644 --- a/tools/manifest_files/crd.yaml +++ b/tools/manifest_files/crd.yaml @@ -3,140 +3,149 @@ kind: CustomResourceDefinition metadata: name: pravegaclusters.pravega.pravega.io spec: - group: pravega.pravega.io - names: - kind: PravegaCluster - listKind: PravegaClusterList - plural: pravegaclusters - singular: pravegacluster - shortNames: - - pk additionalPrinterColumns: - - name: Version - type: string + - JSONPath: .status.currentVersion description: The current pravega version - JSONPath: .status.currentVersion - - name: Desired Version + name: Version type: string + - JSONPath: .spec.version description: The desired pravega version - JSONPath: .spec.version - - name: Desired Members - type: integer + name: Desired Version + type: string + - JSONPath: .status.replicas description: The number of desired pravega members - JSONPath: .status.replicas - - name: Ready Members + name: Desired Members + type: integer + - JSONPath: .status.readyReplicas + description: The number of ready pravega members + name: Ready Members type: integer - description: The number pravega members ready - JSONPath: .status.readyReplicas - - name: Age + - JSONPath: .metadata.creationTimestamp + name: Age type: date - JSONPath: .metadata.creationTimestamp + group: pravega.pravega.io + names: + kind: PravegaCluster + listKind: PravegaClusterList + plural: pravegaclusters + shortNames: + - pk + singular: pravegacluster scope: Namespaced preserveUnknownFields: false + subresources: + status: {} conversion: conversionReviewVersions: ["v1beta1", "v1alpha1"] strategy: Webhook webhookClientConfig: - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQwRENDQXJpZ0F3SUJBZ0lSQU1Udm10bmFXNE5yODRoZkEwVDhUNDR3RFFZSktvWklodmNOQVFFTEJRQXcKVHpFVk1CTUdBMVVFQ2hNTVkyVnlkQzF0WVc1aFoyVnlNVFl3TkFZRFZRUURFeTF3Y21GMlpXZGhMWGRsWW1odgpiMnN0YzNaakxtUmxabUYxYkhRdWMzWmpMbU5zZFhOMFpYSXViRzlqWVd3d0hoY05NakF3TkRFM01UY3lOVFV3CldoY05NakF3TnpFMk1UY3lOVFV3V2pCUE1SVXdFd1lEVlFRS0V3eGpaWEowTFcxaGJtRm5aWEl4TmpBMEJnTlYKQkFNVExYQnlZWFpsWjJFdGQyVmlhRzl2YXkxemRtTXVaR1ZtWVhWc2RDNXpkbU11WTJ4MWMzUmxjaTVzYjJOaApiRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFNUzh6WGptZGpnamo1L0lnazZJCkFEUmIxY3VKVVdMZ0VqNWVOc0JHNlFIMklKNS95MXFWSEFSY0JrME1DR3p3NjFqdlZKczNCMUM1V1BwTGt4UXQKcVo2WG4wSml0NmpNSmowVWlLNjEvWTd6YmpwUlQ3OUdHYUJGUUg0Z05JdGdEZUxWMUxMV2FxSGdMeC9Ib25PZAo1RmdFQ2NyM3FDWjBOS2dWS1p3cFRtUkNoTlQzSDZGM3gwNWdyRTF6bjlKTURIbDJ3Qys0WnM1Q3VtaEtoSGpFCkJnak5oWmVQTDVVd083T3R4eWNnOGpuSVFPU2RXWlNWQ2dKYWN0YUd2TnZqSjZJNDR5V2pZVUROdXhSVHFYUVcKTy9OK0hyRWhObEdDTzZyeXppSWlTemkrRmsrUENqRFVwNUhMT25HakJEMld5MDlDMjFZUE1LSWtGT2lwQTZLRApBNlVDQXdFQUFhT0JwakNCb3pBT0JnTlZIUThCQWY4RUJBTUNCYUF3RXdZRFZSMGxCQXd3Q2dZSUt3WUJCUVVICkF3RXdEQVlEVlIwVEFRSC9CQUl3QURCdUJnTlZIUkVFWnpCbGdoTndjbUYyWldkaExYZGxZbWh2YjJzdGMzWmoKZ2kxd2NtRjJaV2RoTFhkbFltaHZiMnN0YzNaakxtUmxabUYxYkhRdWMzWmpMbU5zZFhOMFpYSXViRzlqWVd5QwpIM0J5WVhabFoyRXRkMlZpYUc5dmF5MXpkbU11WkdWbVlYVnNkQzV6ZG1Nd0RRWUpLb1pJaHZjTkFRRUxCUUFECmdnRUJBRjdJc2NRZHo2YlFHa1dZZTJIS2p1aHBqdFBzOHloT0U1K0s1VW4xdm9aZDIwbld4YzJ0eDN0V2Jlb1AKd3JRVi9hOFIvejdhZHpaamtYSzQxbzV5T0NNYS80d3VuQWpuZ3RzNnhYWEtHa0pYS1ZXUFZzYnl1Nnp4Z3N2KwpEWGY3OCtVZ0Y1QjlqNWt2eWhVYWdsSkFRN0F3ZTJFUWlVejlwYVdrQkVTMnYrTmlrT09IdXkzTk5BcmtQcTl3CkFHWm9GbFJQRWEySnA2RHF2L3R1SVpYWkhqWFRGVkgzdGhDOHplZjNJSzBwVzEzMnpWYnY3VGNmNEtidlNQRUcKUnhWYjRtSTUzTmpBV3NiK3FDaTEyOFpaTFNYVkVQdFl2V0kwR29EV3k0aEtmUHFIWTg4MEpjWStKMVhEUHNOMQpzREVKb01LNll0VFNpdklMaFpZY3pILzJ3ZU09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - service: - name: pravega-webhook-svc - namespace: default - path: /convert - version: v1beta1 + caBundle: pXVGw5VER0d2lPawpMd3VVVEFiME1SRXJaTmZZMCtYOVoyKzluSE5JaEE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== + service: + name: pravega-webhook-svc + namespace: default + path: /convert + version: v1beta1 versions: - name: v1beta1 - served: true - storage: true schema: openAPIV3Schema: - type: object + description: PravegaCluster is the Schema for the pravegaclusters 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: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster + description: ClusterSpec defines the desired state of PravegaCluster properties: - zookeeperUri: - type: string - externalAccess: - type: object + authentication: + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' properties: enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled type: boolean - type: - type: string - domainName: + passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication type: string - tls: - type: object - properties: - static: - type: object - properties: - controllerSecret: - type: string - segmentStoreSecret: - type: string - authentication: type: object + bookkeeperUri: + description: BookkeeperUri specifies the hostname/IP address and port + in the format "hostname:port". comma delimited list of BK server + URLs bookkeeper-bookie-0.bookkeeper-bookie-headless.default:3181, + bookkeeper-bookie-1.bookkeeper-bookie-headless.default:3181, bookkeeper-bookie-2.bookkeeper-bookie-headless.default:3181 + type: string + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled properties: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled type: boolean - passwordAuthSecret: + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + enum: + - ClusterIP + - NodePort + - LoadBalancer + - ExternalName type: string - version: - type: string - bookkeeperUri: - type: string - pravega: type: object + pravega: + description: Pravega configuration properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: - type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string cacheVolumeClaimTemplate: - type: object + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: + enum: + - ReadWriteOnce + - ReadOnlyMany + - ReadWriteMany type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -145,242 +154,599 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 + selector: description: A label query over volumes to consider for binding. properties: matchExpressions: - type: array + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: - type: object + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. + enum: + - In + - NotIn + - Exists + - DoesNotExist type: string values: - type: array + description: values is 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. + This array is replaced during a strategic merge + patch. items: type: string + type: array + required: + - key + - operator + type: object + type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object storageClassName: - type: string + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' + type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string - longtermStorage: type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources properties: - filesystem: + 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 - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when to + pull a container image + enum: + - Always + - Never + - IfNotPresent + type: string + repository: + type: string + type: object + longtermStorage: + description: LongTermStorage is the configuration of Pravega's + tier 2 storage. If no configuration is provided, it will assume + that a PersistentVolumeClaim called "pravega-longterm" is present + and it will use it as Tier 2 + properties: + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend properties: - configUri: - type: string bucket: type: string - prefix: + configUri: type: string credentials: type: string - hdfs: + prefix: + type: string type: object + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend properties: - uri: - type: string - root: - type: string replicationFactor: format: int32 type: integer - controllerServiceAccountName: + root: + type: string + uri: + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreEnvVars: + description: Provides the name of the configmap created by the + user to provide additional key-value pairs that need to be configured + into the ss pod as environmental variables type: string - segmentStoreServiceAccountName: + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" type: string - controllerResources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object + segmentStoreExternalTrafficPolicy: + description: SegmentStoreExternalTrafficPolicy defines the ExternalTrafficPolicy + it can have cluster or local + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreLoadBalancerIP: + description: Specifying this IP would ensure we use same IP address + for all the ss services + type: string + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 0. + format: int32 + minimum: 0 + type: integer segmentStoreResources: - type: object + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources properties: limits: additionalProperties: - type: string + 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: - type: string + 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 - segmentStoreEnvVars: - type: string - segmentStoreSecret: type: object + segmentStoreSecret: + description: SegmentStoreSecret specifies whether or not any secret + needs to be configured into the ss pod either as an environment + variable or by mounting it to a volume properties: - secret: - type: string mountPath: + description: Path to the volume where the secret will be mounted + This value is considered only when the secret is provided + If this value is provided, the secret is mounted to a Volume + else the secret is exposed as an Environment Variable + type: string + secret: + description: Secret specifies the name of Secret which needs + to be configured type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string type: object - segmentStoreExtServiceType: + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default type: string segmentStoreSvcAnnotations: additionalProperties: type: string + description: Annotations to be added to the external service type: object - status: + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. + properties: + caBundle: + type: string + controllerSecret: + type: string + segmentStoreSecret: + type: string + type: object + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string type: object - description: PravegaCluster Status defines the observed state of PravegaCluster + status: + description: ClusterStatus defines the observed state of PravegaCluster properties: conditions: - type: array + description: Conditions list all the applied conditions items: - type: object + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions properties: - type: - type: string - status: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. type: string - reason: + lastUpdateTime: + description: The last time this condition was updated. type: string message: + description: A human readable message indicating details about + the transition. type: string - lastUpdateTime: + reason: + description: The reason for the condition's last transition. type: string - lastTransitionTime: + status: + description: Status of the condition, one of True, False, Unknown. type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: + type: + description: Type of Pravega cluster condition. + type: string + type: object type: array - items: - type: string - replicas: - format: int32 - type: integer currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster format: int32 type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster format: int32 type: integer - - name: v1alpha1 + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object served: true - storage: false + storage: true + - name: v1alpha1 schema: openAPIV3Schema: - type: object + description: PravegaCluster is the Schema for the pravegaclusters 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: - type: object - description: PravegaClusterSpec defines the desired state of PravegaCluster + description: ClusterSpec defines the desired state of PravegaCluster properties: - zookeeperUri: - type: string - externalAccess: - type: object - properties: - enabled: - type: boolean - type: - type: string - domainName: - type: string - tls: - type: object - properties: - static: - type: object - properties: - controllerSecret: - type: string - segmentStoreSecret: - type: string authentication: - type: object + description: 'Authentication can be enabled for authorizing all communication + from clients to controller and segment store See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' properties: enabled: + description: Enabled specifies whether or not authentication is + enabled By default, authentication is not enabled type: boolean passwordAuthSecret: + description: name of Secret containing Password based Authentication + Parameters like username, password and acl optional - used only + by PasswordAuthHandler for authentication type: string - version: - type: string - bookkeeper: type: object + bookkeeper: + description: Bookkeeper configuration properties: - image: + autoRecovery: + description: AutoRecovery indicates whether or not BookKeeper + auto recovery is enabled. Defaults to true. + type: boolean + bookkeeperJVMOptions: + description: JVM is the JVM options for bookkeeper. It will be + passed to the JVM for performance tuning. If this field is not + specified, the operator will use a set of default options that + is good enough for general deployment. + properties: + extraOpts: + items: + type: string + type: array + gcLoggingOpts: + items: + type: string + type: array + gcOpts: + items: + type: string + type: array + memoryOpts: + items: + type: string + type: array type: object + image: + description: Image defines the BookKeeper Docker image to use. + By default, "pravega/bookkeeper" will be used. properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image + properties: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image + type: string + repository: + type: string + tag: + description: 'Deprecated: Use `spec.Version` instead' + type: string + type: object + type: object + options: + additionalProperties: + type: string + description: Options is the Bookkeeper configuration that is to + override the bk_server.conf in bookkeeper. Some examples can + be found here https://github.com/apache/bookkeeper/blob/master/docker/README.md + type: object replicas: + description: Replicas defines the number of BookKeeper replicas. + Minimum is 3. Defaults to 3. format: int32 type: integer - storage: - type: object + resources: + description: BookieResources specifies the request and limit of + resources that bookie can have. BookieResources includes CPU + and memory resources properties: - ledgerVolumeClaimTemplate: + 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 + serviceAccountName: + description: ServiceAccountName configures the service account + used on BookKeeper instances + type: string + storage: + description: Storage configures the storage for BookKeeper + properties: + indexVolumeClaimTemplate: + description: IndexVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper index This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -389,58 +755,129 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 - description: A label query over volumes to consider for binding. + selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is 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. This array is replaced during a + strategic merge patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string - journalVolumeClaimTemplate: type: object + journalVolumeClaimTemplate: + description: JournalVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper journal This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -449,58 +886,129 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 - description: A label query over volumes to consider for binding. + selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is 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. This array is replaced during a + strategic merge patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string - indexVolumeClaimTemplate: type: object + ledgerVolumeClaimTemplate: + description: LedgerVolumeClaimTemplate is the spec to describe + PVC for the BookKeeper ledger This field is optional. If + no PVC spec and there is no default storage class, stateful + containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access + modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner + can support VolumeSnapshot data source, it will create + a new volume and data will be restored to the volume + at the same time. If the provisioner does not support + VolumeSnapshot data source, volume will not be created + and the failure will be reported as an event. In the + future, we plan to support more data source types and + the behavior of the provisioner may change. properties: apiGroup: + description: APIGroup is the group for the resource + being referenced. If APIGroup is not specified, + the specified Kind must be in the core API group. + For any other third-party types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -509,128 +1017,152 @@ spec: description: Name is the name of resource being referenced type: string required: - - kind - - name - resources: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 - description: A label query over volumes to consider for binding. + selector: + description: A label query over volumes to consider for + binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, + NotIn, Exists and DoesNotExist. type: string values: + description: values is 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. This array is replaced during a + strategic merge patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field + is "key", the operator is "In", and the values array + contains only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the + claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is + required by the claim. Value of Filesystem is implied + when not included in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the + PersistentVolume backing this claim. type: string - autoRecovery: - type: boolean - serviceAccountName: - type: string - resources: - type: object - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string type: object - options: type: object - additionalProperties: - type: string - bookkeeperJVMOptions: - type: object - properties: - memoryOpts: - type: array - items: - type: string - gcOpts: - type: array - items: - type: string - gcLoggingOpts: - type: array - items: - type: string - extraOpts: - type: array - items: - type: string - pravega: type: object + externalAccess: + description: ExternalAccess specifies whether or not to allow external + access to clients and the service type to use to achieve it By default, + external access is not enabled properties: - controllerReplicas: - format: int32 - type: integer - segmentStoreReplicas: - format: int32 - type: integer - debugLogging: + domainName: + description: Domain Name to be used for External Access This value + is ignored if External Access is disabled + type: string + enabled: + description: Enabled specifies whether or not external access + is enabled By default, external access is not enabled type: boolean - image: - type: object - properties: - repository: - type: string - tag: - type: string - pullPolicy: - type: string - options: - type: object - additionalProperties: - type: string - controllerjvmOptions: - type: array - items: - type: string - segmentStoreJVMOptions: - type: array - items: - type: string + type: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + type: object + pravega: + description: Pravega configuration + properties: cacheVolumeClaimTemplate: - type: object + description: CacheVolumeClaimTemplate is the spec to describe + PVC for the Pravega cache. This field is optional. If no PVC + spec, stateful containers will use emptyDir as volume properties: accessModes: - type: array + description: 'AccessModes contains the desired access modes + the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' items: type: string + type: array dataSource: - type: object - nullable: true + description: This field requires the VolumeSnapshotDataSource + alpha feature gate to be enabled and currently VolumeSnapshot + is the only supported data source. If the provisioner can + support VolumeSnapshot data source, it will create a new + volume and data will be restored to the volume at the same + time. If the provisioner does not support VolumeSnapshot + data source, volume will not be created and the failure + will be reported as an event. In the future, we plan to + support more data source types and the behavior of the provisioner + may change. properties: apiGroup: + description: APIGroup is the group for the resource being + referenced. If APIGroup is not specified, the specified + Kind must be in the core API group. For any other third-party + types, APIGroup is required. type: string kind: description: Kind is the type of resource being referenced @@ -638,162 +1170,405 @@ spec: name: description: Name is the name of resource being referenced type: string - resources: + required: + - kind + - name type: object + resources: + description: 'Resources represents the minimum resources the + volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' properties: limits: - type: object additionalProperties: - type: string - requests: + 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: - type: string - selector: + 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 + selector: description: A label query over volumes to consider for binding. properties: matchExpressions: + description: matchExpressions is a list of label selector + requirements. The requirements are ANDed. items: + description: A label selector requirement is a selector + that contains values, a key, and an operator that + relates the key and values. properties: key: + description: key is the label key that the selector + applies to. type: string operator: + description: operator represents a key's relationship + to a set of values. Valid operators are In, NotIn, + Exists and DoesNotExist. type: string values: + description: values is 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. + This array is replaced during a strategic merge + patch. items: type: string type: array + required: + - key + - operator type: object type: array matchLabels: - type: object additionalProperties: type: string + description: matchLabels is a map of {key,value} pairs. + A single {key,value} in the matchLabels map is equivalent + to an element of matchExpressions, whose key field is + "key", the operator is "In", and the values array contains + only "value". The requirements are ANDed. + type: object + type: object storageClassName: + description: 'Name of the StorageClass required by the claim. + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' type: string volumeMode: + description: volumeMode defines what type of volume is required + by the claim. Value of Filesystem is implied when not included + in claim spec. This is a beta feature. + enum: + - Block + - Filesystem type: string volumeName: + description: VolumeName is the binding reference to the PersistentVolume + backing this claim. type: string - tier2: type: object + controllerExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + controllerReplicas: + description: ControllerReplicas defines the number of Controller + replicas. Defaults to 1. + format: int32 + type: integer + controllerResources: + description: ControllerResources specifies the request and limit + of resources that controller can have. ControllerResources includes + CPU and memory resources properties: - filesystem: + 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 - properties: - persistentVolumeClaim: - type: object - properties: - claimName: - type: string - readOnly: - type: string - ecs: + 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 + controllerServiceAccountName: + description: ControllerServiceAccountName configures the service + account used on controller instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + controllerSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + controllerjvmOptions: + description: ControllerJvmOptions is the JVM options for controller. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + debugLogging: + description: DebugLogging indicates whether or not debug level + logging is enabled. Defaults to false. + type: boolean + image: + description: Image defines the Pravega Docker image to use. By + default, "pravega/pravega" will be used. + properties: + imageSpec: + description: ImageSpec defines the fields needed for a Docker + repository image properties: - configUri: + pullPolicy: + description: PullPolicy describes a policy for if/when + to pull a container image type: string - bucket: + repository: type: string - prefix: - type: string - credentials: + tag: + description: 'Deprecated: Use `spec.Version` instead' type: string - hdfs: type: object - properties: - uri: - type: string - root: - type: string - replicationFactor: - format: int32 - type: integer - controllerServiceAccountName: - type: string - segmentStoreServiceAccountName: - type: string - controllerResources: type: object + options: + additionalProperties: + type: string + description: 'Options is the Pravega configuration that is passed + to the Pravega processes as JAVA_OPTS. See the following file + for a complete list of options: https://github.com/pravega/pravega/blob/master/config/config.properties' + type: object + segmentStoreExtServiceType: + description: Type specifies the service type to achieve external + access. Options are "LoadBalancer" and "NodePort". By default, + if external access is enabled, it will use "LoadBalancer" + type: string + segmentStoreJVMOptions: + description: SegmentStoreJVMOptions is the JVM options for Segmentstore. + It will be passed to the JVM for performance tuning. If this + field is not specified, the operator will use a set of default + options that is good enough for general deployment. + items: + type: string + type: array + segmentStoreReplicas: + description: SegmentStoreReplicas defines the number of Segment + Store replicas. Defaults to 1. + format: int32 + type: integer + segmentStoreResources: + description: SegmentStoreResources specifies the request and limit + of resources that segmentStore can have. SegmentStoreResources + includes CPU and memory resources properties: limits: additionalProperties: - type: string + 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: - type: string + 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 - segmentStoreResources: type: object + segmentStoreServiceAccountName: + description: SegmentStoreServiceAccountName configures the service + account used on segment store instances. If not specified, Kubernetes + will automatically assign the default service account in the + namespace default + type: string + segmentStoreSvcAnnotations: + additionalProperties: + type: string + description: Annotations to be added to the external service + type: object + tier2: + description: Tier2 is the configuration of Pravega's tier 2 storage. + If no configuration is provided, it will assume that a PersistentVolumeClaim + called "pravega-tier2" is present and it will use it as Tier + 2 properties: - limits: - additionalProperties: - type: string + ecs: + description: Ecs is used to configure a Dell EMC ECS system + as a Tier 2 backend + properties: + bucket: + type: string + configUri: + type: string + credentials: + type: string + prefix: + type: string type: object - requests: - additionalProperties: - type: string + filesystem: + description: FileSystem is used to configure a pre-created + Persistent Volume Claim as Tier 2 backend. It is default + Tier 2 mode. + properties: + persistentVolumeClaim: + description: PersistentVolumeClaimVolumeSource references + the user's PVC in the same namespace default + the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource + is, essentially, a wrapper around another type of volume + that is owned by someone else (the system). + properties: + claimName: + description: 'ClaimName is the name of a PersistentVolumeClaim + in the same namespace default + More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' + type: string + readOnly: + description: Will force the ReadOnly setting in VolumeMounts. + Default false. + type: boolean + required: + - claimName + type: object + type: object + hdfs: + description: Hdfs is used to configure an HDFS system as a + Tier 2 backend + properties: + replicationFactor: + format: int32 + type: integer + root: + type: string + uri: + type: string type: object - segmentStoreEnvVars: - type: string - segmentStoreSecret: type: object + type: object + tls: + description: 'TLS is the Pravega security configuration that is passed + to the Pravega processes. See the following file for a complete + list of options: https://github.com/pravega/pravega/blob/master/documentation/src/docs/security/pravega-security-configurations.md' + properties: + static: + description: Static TLS means keys/certs are generated by the + user and passed to an operator. properties: - secret: + caBundle: type: string - mountPath: + controllerSecret: + type: string + segmentStoreSecret: type: string - controllerExtServiceType: - type: string - controllerSvcAnnotations: - additionalProperties: - type: string - type: object - segmentStoreExtServiceType: - type: string - segmentStoreSvcAnnotations: - additionalProperties: - type: string type: object - status: + type: object + version: + description: "Version is the expected version of the Pravega cluster. + The pravega-operator will eventually make the Pravega cluster version + equal to the expected version. \n The version must follow the [semver]( + http://semver.org) format, for example \"3.2.13\". Only Pravega + released versions are supported: https://github.com/pravega/pravega/releases + \n If version is not set, default is \"0.4.0\"." + type: string + zookeeperUri: + description: 'ZookeeperUri specifies the hostname/IP address and port + in the format "hostname:port". By default, the value "zookeeper-client:2181" + is used, that corresponds to the default Zookeeper service created + by the Pravega Zookkeeper operator available at: https://github.com/pravega/zookeeper-operator' + type: string type: object - description: PravegaCluster Status defines the observed state of PravegaCluster + status: + description: ClusterStatus defines the observed state of PravegaCluster properties: conditions: - type: array + description: Conditions list all the applied conditions items: - type: object + description: ClusterCondition shows the current condition of a Pravega + cluster. Comply with k8s API conventions properties: - type: - type: string - status: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. type: string - reason: + lastUpdateTime: + description: The last time this condition was updated. type: string message: + description: A human readable message indicating details about + the transition. type: string - lastUpdateTime: + reason: + description: The reason for the condition's last transition. type: string - lastTransitionTime: + status: + description: Status of the condition, one of True, False, Unknown. type: string - currentVersion: - type: string - targetVersion: - type: string - versionHistory: + type: + description: Type of Pravega cluster condition. + type: string + type: object type: array - items: - type: string - replicas: - format: int32 - type: integer currentReplicas: + description: CurrentReplicas is the number of current replicas in + the cluster format: int32 type: integer + currentVersion: + description: CurrentVersion is the current cluster version + type: string + members: + description: Members is the Pravega members in the cluster + properties: + ready: + items: + type: string + nullable: true + type: array + unready: + items: + type: string + nullable: true + type: array + type: object readyReplicas: + description: ReadyReplicas is the number of ready replicas in the + cluster format: int32 type: integer - subresources: - status: {} + replicas: + description: Replicas is the number of desired replicas in the cluster + format: int32 + type: integer + targetVersion: + description: TargetVersion is the version the cluster upgrading to. + If the cluster is not upgrading, TargetVersion is empty. + type: string + versionHistory: + items: + type: string + type: array + type: object + type: object + served: true + storage: false diff --git a/tools/operatorUpgrade.sh b/tools/operatorUpgrade.sh index b45d72ce0..f052c7662 100755 --- a/tools/operatorUpgrade.sh +++ b/tools/operatorUpgrade.sh @@ -5,7 +5,7 @@ echo "Running pre-upgrade script for upgrading pravega operator from version 0.4 if [ "$#" -ne 3 ]; then echo "Error : Invalid number of arguments" - Usage: "./operatorUpgrade.sh " + Usage: "./operatorUpgrade.sh " exit 1 fi @@ -45,9 +45,9 @@ kubectl apply -f ./manifest_files/version_map.yaml cabundle=`kubectl get ValidatingWebhookConfiguration pravega-webhook-config --namespace ${namespace} --output yaml | grep caBundle: | awk '{print $2}'` -sed -i "s/caBundle.*/caBundle: $cabundle "/ ./manifest_files/crd.yaml +sed -i "/webhookClientConfig:.*/{n;s/caBundle.*/caBundle: $cabundle/}" ./manifest_files/crd.yaml -sed -i "s/namespace.*/namespace: $namespace "/ ./manifest_files/crd.yaml +sed -i "s/namespace:.*/namespace: $namespace "/ ./manifest_files/crd.yaml #updating the crd for pravega-operator kubectl apply -f ./manifest_files/crd.yaml