From 961bce6b2e86979e1d8cb97e4dbd9190513963bf Mon Sep 17 00:00:00 2001 From: Roi Vazquez Date: Mon, 16 Oct 2023 10:58:29 +0200 Subject: [PATCH] Prepare for release v0.20.0 --- Makefile | 2 +- bundle.Dockerfile | 3 +- .../saas-operator.clusterserviceversion.yaml | 134 +++++++++++- .../saas.3scale.net_redisshards.yaml | 3 + .../manifests/saas.3scale.net_sentinels.yaml | 4 + .../saas.3scale.net_shardedredisbackups.yaml | 186 +++++++++++++++++ .../saas.3scale.net_twemproxyconfigs.yaml | 3 +- bundle/metadata/annotations.yaml | 3 +- .../crd/bases/saas.3scale.net_sentinels.yaml | 4 + config/manager/kustomization.yaml | 2 +- .../saas-operator.clusterserviceversion.yaml | 70 ++++++- docs/api-reference/reference.asciidoc | 195 +++++++++++++++++- pkg/assets/bindata.go | 12 +- pkg/version/version.go | 2 +- 14 files changed, 595 insertions(+), 28 deletions(-) create mode 100644 bundle/manifests/saas.3scale.net_shardedredisbackups.yaml diff --git a/Makefile b/Makefile index 8abe2cf2..7cf598db 100644 --- a/Makefile +++ b/Makefile @@ -3,7 +3,7 @@ # To re-generate a bundle for another specific version without changing the standard setup, you can: # - use the VERSION as arg of the bundle target (e.g make bundle VERSION=0.0.2) # - use environment variables to overwrite this value (e.g export VERSION=0.0.2) -VERSION ?= 0.20.0-alpha.18 +VERSION ?= 0.20.0 # CHANNELS define the bundle channels used in the bundle. # Add a new line here if you would like to change its default config. (E.g CHANNELS = "candidate,fast,stable") diff --git a/bundle.Dockerfile b/bundle.Dockerfile index b80837a0..e44312a4 100644 --- a/bundle.Dockerfile +++ b/bundle.Dockerfile @@ -5,7 +5,8 @@ LABEL operators.operatorframework.io.bundle.mediatype.v1=registry+v1 LABEL operators.operatorframework.io.bundle.manifests.v1=manifests/ LABEL operators.operatorframework.io.bundle.metadata.v1=metadata/ LABEL operators.operatorframework.io.bundle.package.v1=saas-operator -LABEL operators.operatorframework.io.bundle.channels.v1=alpha +LABEL operators.operatorframework.io.bundle.channels.v1=alpha,stable +LABEL operators.operatorframework.io.bundle.channel.default.v1=alpha LABEL operators.operatorframework.io.metrics.builder=operator-sdk-v1.27.0 LABEL operators.operatorframework.io.metrics.mediatype.v1=metrics+v1 LABEL operators.operatorframework.io.metrics.project_layout=go.kubebuilder.io/v3 diff --git a/bundle/manifests/saas-operator.clusterserviceversion.yaml b/bundle/manifests/saas-operator.clusterserviceversion.yaml index 3881dd6b..1edf54f9 100644 --- a/bundle/manifests/saas-operator.clusterserviceversion.yaml +++ b/bundle/manifests/saas-operator.clusterserviceversion.yaml @@ -341,6 +341,36 @@ metadata: } } }, + { + "apiVersion": "saas.3scale.net/v1alpha1", + "kind": "ShardedRedisBackup", + "metadata": { + "name": "backup", + "namespace": "default" + }, + "spec": { + "dbFile": "/data/dump.rdb", + "historyLimit": 10, + "pollInterval": "10s", + "s3Options": { + "bucket": "my-bucket", + "credentialsSecretRef": { + "name": "aws-credentials" + }, + "path": "backups", + "region": "us-east-1" + }, + "schedule": "*/30 * * * *", + "sentinelRef": "sentinel", + "sshOptions": { + "privateKeySecretRef": { + "name": "redis-ssh-private-key" + }, + "user": "root" + }, + "timeout": "5m" + } + }, { "apiVersion": "saas.3scale.net/v1alpha1", "kind": "System", @@ -627,7 +657,7 @@ metadata: capabilities: Basic Install categories: Integration & Delivery containerImage: quay.io/3scale/saas-operator - createdAt: "2023-09-13T11:59:21Z" + createdAt: "2023-10-16T08:57:47Z" description: |- The 3scale SaaS Operator creates and maintains a SaaS-ready deployment of the Red Hat 3scale API Management on OpenShift. @@ -635,7 +665,7 @@ metadata: operators.operatorframework.io/project_layout: go.kubebuilder.io/v3 repository: https://github.com/3scale/saas-operator support: Red Hat - name: saas-operator.v0.20.0-alpha.10 + name: saas-operator.v0.20.0 namespace: placeholder spec: apiservicedefinitions: {} @@ -2460,6 +2490,9 @@ spec: kind: RedisShard name: redisshards.saas.3scale.net specDescriptors: + - description: Command overrides the redis container command + displayName: Command + path: command - description: Image specification for the component displayName: Image path: image @@ -2626,6 +2659,69 @@ spec: displayName: Sentinels path: sentinels version: v1alpha1 + - description: ShardedRedisBackup is the Schema for the shardedredisbackups API + displayName: Sharded Redis Backup + kind: ShardedRedisBackup + name: shardedredisbackups.saas.3scale.net + specDescriptors: + - description: Name of the dbfile in the redis instances + displayName: DBFile + path: dbFile + - description: Max number of backup history to keep + displayName: History Limit + path: historyLimit + - description: If true, backup execution is stopped + displayName: Pause + path: pause + - description: How frequently redis is polled for the BGSave status + displayName: Poll Interval + path: pollInterval + - description: S3 storage options + displayName: S3 Options + path: s3Options + - description: S3 bucket name + displayName: Bucket + path: s3Options.bucket + - description: 'Reference to a Secret tha contains credentials to access S3 + API. The credentials must have the following permissions: s3:GetObject, + s3:PutObject, and s3:ListBucket, s3:ListObjects, s3:PutObjectTagging.' + displayName: Credentials Secret Ref + path: s3Options.credentialsSecretRef + - description: S3 path where backups should be uploaded + displayName: Path + path: s3Options.path + - description: AWS region + displayName: Region + path: s3Options.region + - description: Optionally use a custom s3 service endpoint. Useful for testing + with Minio. + displayName: Service Endpoint + path: s3Options.serviceEndpoint + - description: Cron-like schedule specification + displayName: Schedule + path: schedule + - description: Reference to a sentinel instance + displayName: Sentinel Ref + path: sentinelRef + - description: SSH connection options + displayName: SSHOptions + path: sshOptions + - description: SSH port (default is 22) + displayName: Port + path: sshOptions.port + - description: Reference to a Secret that contains the SSH private key + displayName: Private Key Secret Ref + path: sshOptions.privateKeySecretRef + - description: Use sudo to execute commands agains the remote host + displayName: Sudo + path: sshOptions.sudo + - description: SSH user + displayName: User + path: sshOptions.user + - description: Max allowed time for a backup to complete + displayName: Timeout + path: timeout + version: v1alpha1 - description: System is the Schema for the systems API displayName: System kind: System @@ -3971,8 +4067,8 @@ spec: - description: Label value used by grafana-operator for dashboard discovery displayName: Selector Value path: grafanaDashboard.selectorValue - - description: SentinelURI is the redis URI of sentinel. If not set, the controller - will try to autodiscover Sentinel within the namespace. + - description: 'SentinelURI is the redis URI of sentinel. If not set, the controller + will try to autodiscover Sentinel within the namespace. TODO: remove, unused' displayName: Sentinel URIs path: sentinelURIs - description: 'ServerPools is the list of Twemproxy server pools WARNING: only @@ -4444,7 +4540,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - image: quay.io/3scale/saas-operator:v0.20.0-alpha.10 + image: quay.io/3scale/saas-operator:v0.20.0 livenessProbe: httpGet: path: /healthz @@ -4853,6 +4949,32 @@ spec: - get - patch - update + - apiGroups: + - saas.3scale.net + resources: + - shardedredisbackups + verbs: + - create + - delete + - get + - list + - patch + - update + - watch + - apiGroups: + - saas.3scale.net + resources: + - shardedredisbackups/finalizers + verbs: + - update + - apiGroups: + - saas.3scale.net + resources: + - shardedredisbackups/status + verbs: + - get + - patch + - update - apiGroups: - saas.3scale.net resources: @@ -4982,4 +5104,4 @@ spec: provider: name: Red Hat url: https://www.3scale.net/ - version: 0.20.0-alpha.10 + version: 0.20.0 diff --git a/bundle/manifests/saas.3scale.net_redisshards.yaml b/bundle/manifests/saas.3scale.net_redisshards.yaml index a84b7fa9..aaa3dfbf 100644 --- a/bundle/manifests/saas.3scale.net_redisshards.yaml +++ b/bundle/manifests/saas.3scale.net_redisshards.yaml @@ -41,6 +41,9 @@ spec: spec: description: RedisShardSpec defines the desired state of RedisShard properties: + command: + description: Command overrides the redis container command + type: string image: description: Image specification for the component properties: diff --git a/bundle/manifests/saas.3scale.net_sentinels.yaml b/bundle/manifests/saas.3scale.net_sentinels.yaml index 474fea72..57712577 100644 --- a/bundle/manifests/saas.3scale.net_sentinels.yaml +++ b/bundle/manifests/saas.3scale.net_sentinels.yaml @@ -499,6 +499,10 @@ spec: additionalProperties: type: string type: object + info: + additionalProperties: + type: string + type: object role: description: Role represents the role of a redis server within a shard diff --git a/bundle/manifests/saas.3scale.net_shardedredisbackups.yaml b/bundle/manifests/saas.3scale.net_shardedredisbackups.yaml new file mode 100644 index 00000000..1d660ff4 --- /dev/null +++ b/bundle/manifests/saas.3scale.net_shardedredisbackups.yaml @@ -0,0 +1,186 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.11.0 + creationTimestamp: null + name: shardedredisbackups.saas.3scale.net +spec: + group: saas.3scale.net + names: + kind: ShardedRedisBackup + listKind: ShardedRedisBackupList + plural: shardedredisbackups + singular: shardedredisbackup + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: ShardedRedisBackup is the Schema for the shardedredisbackups + 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: ShardedRedisBackupSpec defines the desired state of ShardedRedisBackup + properties: + dbFile: + description: Name of the dbfile in the redis instances + type: string + historyLimit: + description: Max number of backup history to keep + format: int32 + type: integer + pause: + description: If true, backup execution is stopped + type: boolean + pollInterval: + description: How frequently redis is polled for the BGSave status + type: string + s3Options: + description: S3 storage options + properties: + bucket: + description: S3 bucket name + type: string + credentialsSecretRef: + description: 'Reference to a Secret tha contains credentials to + access S3 API. The credentials must have the following permissions: + s3:GetObject, s3:PutObject, and s3:ListBucket, s3:ListObjects, + s3:PutObjectTagging.' + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + path: + description: S3 path where backups should be uploaded + type: string + region: + description: AWS region + type: string + serviceEndpoint: + description: Optionally use a custom s3 service endpoint. Useful + for testing with Minio. + type: string + required: + - bucket + - credentialsSecretRef + - path + - region + type: object + schedule: + description: Cron-like schedule specification + type: string + sentinelRef: + description: Reference to a sentinel instance + type: string + sshOptions: + description: SSH connection options + properties: + port: + description: SSH port (default is 22) + format: int32 + type: integer + privateKeySecretRef: + description: Reference to a Secret that contains the SSH private + key + properties: + name: + description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + TODO: Add other useful fields. apiVersion, kind, uid?' + type: string + type: object + x-kubernetes-map-type: atomic + sudo: + description: Use sudo to execute commands agains the remote host + type: boolean + user: + description: SSH user + type: string + required: + - privateKeySecretRef + - user + type: object + timeout: + description: Max allowed time for a backup to complete + type: string + required: + - dbFile + - s3Options + - schedule + - sentinelRef + - sshOptions + type: object + status: + description: ShardedRedisBackupStatus defines the observed state of ShardedRedisBackup + properties: + backups: + items: + properties: + backupFile: + description: Final storage location of the backup + type: string + backupSize: + description: Stored size of the backup in bytes + format: int64 + type: integer + finishedAt: + description: when the backup was completed + format: date-time + type: string + message: + description: Descriptive message of the backup status + type: string + scheduledFor: + description: Scheduled time for the backup to start + format: date-time + type: string + serverAlias: + description: Redis server alias + type: string + serverID: + description: Server host:port + type: string + shard: + description: Name of the shard + type: string + startedAt: + description: Actual time the backup starts + format: date-time + type: string + state: + description: Backup status + type: string + required: + - message + - scheduledFor + - shard + - state + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/bundle/manifests/saas.3scale.net_twemproxyconfigs.yaml b/bundle/manifests/saas.3scale.net_twemproxyconfigs.yaml index 83c9b648..20d8f250 100644 --- a/bundle/manifests/saas.3scale.net_twemproxyconfigs.yaml +++ b/bundle/manifests/saas.3scale.net_twemproxyconfigs.yaml @@ -58,8 +58,9 @@ spec: even if they are manually changed. This switch defaults to "true". type: boolean sentinelURIs: - description: SentinelURI is the redis URI of sentinel. If not set, + description: 'SentinelURI is the redis URI of sentinel. If not set, the controller will try to autodiscover Sentinel within the namespace. + TODO: remove, unused' items: type: string type: array diff --git a/bundle/metadata/annotations.yaml b/bundle/metadata/annotations.yaml index 77fadbff..5d8597be 100644 --- a/bundle/metadata/annotations.yaml +++ b/bundle/metadata/annotations.yaml @@ -4,7 +4,8 @@ annotations: operators.operatorframework.io.bundle.manifests.v1: manifests/ operators.operatorframework.io.bundle.metadata.v1: metadata/ operators.operatorframework.io.bundle.package.v1: saas-operator - operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.bundle.channels.v1: alpha,stable + operators.operatorframework.io.bundle.channel.default.v1: alpha operators.operatorframework.io.metrics.builder: operator-sdk-v1.27.0 operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 operators.operatorframework.io.metrics.project_layout: go.kubebuilder.io/v3 diff --git a/config/crd/bases/saas.3scale.net_sentinels.yaml b/config/crd/bases/saas.3scale.net_sentinels.yaml index 6702cc31..80093f6d 100644 --- a/config/crd/bases/saas.3scale.net_sentinels.yaml +++ b/config/crd/bases/saas.3scale.net_sentinels.yaml @@ -500,6 +500,10 @@ spec: additionalProperties: type: string type: object + info: + additionalProperties: + type: string + type: object role: description: Role represents the role of a redis server within a shard diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index fff0909c..314bbc65 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -13,4 +13,4 @@ kind: Kustomization images: - name: controller newName: quay.io/3scale/saas-operator - newTag: v0.20.0-alpha.10 + newTag: v0.20.0 diff --git a/config/manifests/bases/saas-operator.clusterserviceversion.yaml b/config/manifests/bases/saas-operator.clusterserviceversion.yaml index 554828f3..2c23c03b 100644 --- a/config/manifests/bases/saas-operator.clusterserviceversion.yaml +++ b/config/manifests/bases/saas-operator.clusterserviceversion.yaml @@ -1972,6 +1972,9 @@ spec: kind: RedisShard name: redisshards.saas.3scale.net specDescriptors: + - description: Command overrides the redis container command + displayName: Command + path: command - description: Image specification for the component displayName: Image path: image @@ -2138,6 +2141,69 @@ spec: displayName: Sentinels path: sentinels version: v1alpha1 + - description: ShardedRedisBackup is the Schema for the shardedredisbackups API + displayName: Sharded Redis Backup + kind: ShardedRedisBackup + name: shardedredisbackups.saas.3scale.net + specDescriptors: + - description: Name of the dbfile in the redis instances + displayName: DBFile + path: dbFile + - description: Max number of backup history to keep + displayName: History Limit + path: historyLimit + - description: If true, backup execution is stopped + displayName: Pause + path: pause + - description: How frequently redis is polled for the BGSave status + displayName: Poll Interval + path: pollInterval + - description: S3 storage options + displayName: S3 Options + path: s3Options + - description: S3 bucket name + displayName: Bucket + path: s3Options.bucket + - description: 'Reference to a Secret tha contains credentials to access S3 + API. The credentials must have the following permissions: s3:GetObject, + s3:PutObject, and s3:ListBucket, s3:ListObjects, s3:PutObjectTagging.' + displayName: Credentials Secret Ref + path: s3Options.credentialsSecretRef + - description: S3 path where backups should be uploaded + displayName: Path + path: s3Options.path + - description: AWS region + displayName: Region + path: s3Options.region + - description: Optionally use a custom s3 service endpoint. Useful for testing + with Minio. + displayName: Service Endpoint + path: s3Options.serviceEndpoint + - description: Cron-like schedule specification + displayName: Schedule + path: schedule + - description: Reference to a sentinel instance + displayName: Sentinel Ref + path: sentinelRef + - description: SSH connection options + displayName: SSHOptions + path: sshOptions + - description: SSH port (default is 22) + displayName: Port + path: sshOptions.port + - description: Reference to a Secret that contains the SSH private key + displayName: Private Key Secret Ref + path: sshOptions.privateKeySecretRef + - description: Use sudo to execute commands agains the remote host + displayName: Sudo + path: sshOptions.sudo + - description: SSH user + displayName: User + path: sshOptions.user + - description: Max allowed time for a backup to complete + displayName: Timeout + path: timeout + version: v1alpha1 - description: System is the Schema for the systems API displayName: System kind: System @@ -3483,8 +3549,8 @@ spec: - description: Label value used by grafana-operator for dashboard discovery displayName: Selector Value path: grafanaDashboard.selectorValue - - description: SentinelURI is the redis URI of sentinel. If not set, the controller - will try to autodiscover Sentinel within the namespace. + - description: 'SentinelURI is the redis URI of sentinel. If not set, the controller + will try to autodiscover Sentinel within the namespace. TODO: remove, unused' displayName: Sentinel URIs path: sentinelURIs - description: 'ServerPools is the list of Twemproxy server pools WARNING: only diff --git a/docs/api-reference/reference.asciidoc b/docs/api-reference/reference.asciidoc index d1ecb954..a50c8c01 100644 --- a/docs/api-reference/reference.asciidoc +++ b/docs/api-reference/reference.asciidoc @@ -22,6 +22,7 @@ Package v1alpha1 contains API Schema definitions for the saas v1alpha1 API group - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-mappingservice[$$MappingService$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-redisshard[$$RedisShard$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-sentinel[$$Sentinel$$] +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackup[$$ShardedRedisBackup$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-system[$$System$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyconfig[$$TwemproxyConfig$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-zync[$$Zync$$] @@ -328,6 +329,8 @@ BackendSpec defines the desired state of Backend + + [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-bugsnagspec"] ==== BugsnagSpec @@ -721,6 +724,7 @@ ImageSpec defines the image for the component - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemrailsconsolespec[$$SystemRailsConsoleSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemsearchdspec[$$SystemSearchdSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemspec[$$SystemSpec$$] +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskconfig[$$SystemTektonTaskConfig$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyspec[$$TwemproxySpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-zyncrailsconsolespec[$$ZyncRailsConsoleSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-zyncspec[$$ZyncSpec$$] @@ -947,9 +951,6 @@ MonitoredShard contains information of one of the shards monitored by the Sentin |=== | Field | Description | *`name`* __string__ | Name is the name of the redis shard -| *`master`* __string__ | Master is the address of the master redis server of this shard, in the format "127.0.0.1:6379" DEPRECATED - this field will be removed in an upcoming release -| *`slavesRO`* __string array__ | SlavesRO is the list of addresses of the read-only slave servers in this shard, in the format "127.0.0.1:6379" DEPRECATED - this field will be removed in an upcoming release -| *`slavesRW`* __string array__ | SlavesRW is the list of addresses of the read-write slave servers in this shard, in the format "127.0.0.1:6379" DEPRECATED - this field will be removed in an upcoming release | *`servers`* __object (keys:string, values:xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-redisserverdetails[$$RedisServerDetails$$])__ | Server is a map intended to store configuration information of each of the RedisServer instances that belong to the MonitoredShard |=== @@ -1134,7 +1135,9 @@ RedHatCustomerPortalSpec has configuration for integration with Red Hat Customer |=== | Field | Description | *`role`* __Role__ | +| *`address`* __string__ | | *`config`* __object (keys:string, values:string)__ | +| *`info`* __object (keys:string, values:string)__ | |=== @@ -1170,8 +1173,8 @@ RedisShard is the Schema for the redisshards API [cols="25a,75a", options="header"] |=== | Field | Description -| *`master`* __string__ | Master is the node that acts as master role in the redis shard -| *`slaves`* __string array__ | Slaves are the nodes that act as master role in the redis shard +| *`master`* __object (keys:string, values:string)__ | Master is the node that acts as master role in the redis shard +| *`slaves`* __object (keys:string, values:string)__ | Slaves are the nodes that act as master role in the redis shard |=== @@ -1191,6 +1194,7 @@ RedisShardSpec defines the desired state of RedisShard | *`image`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-imagespec[$$ImageSpec$$]__ | Image specification for the component | *`masterIndex`* __integer__ | MasterIndex is the StatefulSet Pod index of the redis server with the master role. The other Pods are slaves of the master one. | *`slaveCount`* __integer__ | SlaveCount is the number of redis slaves +| *`command`* __string__ | Command overrides the redis container command |=== @@ -1250,6 +1254,7 @@ ResourceRequirementsSpec defines the resource requirements for the component - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemrailsconsolespec[$$SystemRailsConsoleSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemsearchdspec[$$SystemSearchdSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemsidekiqspec[$$SystemSidekiqSpec$$] +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskspec[$$SystemTektonTaskSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyspec[$$TwemproxySpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-workerspec[$$WorkerSpec$$] - xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-zyncrailsconsolespec[$$ZyncRailsConsoleSpec$$] @@ -1298,6 +1303,27 @@ Runtime contains options for an Envoy runtime protobuffer message |=== +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-s3options"] +==== S3Options + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackupspec[$$ShardedRedisBackupSpec$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`bucket`* __string__ | S3 bucket name +| *`path`* __string__ | S3 path where backups should be uploaded +| *`region`* __string__ | AWS region +| *`credentialsSecretRef`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#localobjectreference-v1-core[$$LocalObjectReference$$]__ | Reference to a Secret tha contains credentials to access S3 API. The credentials must have the following permissions: s3:GetObject, s3:PutObject, and s3:ListBucket, s3:ListObjects, s3:PutObjectTagging. +| *`serviceEndpoint`* __string__ | Optionally use a custom s3 service endpoint. Useful for testing with Minio. +|=== + + [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-smtpspec"] ==== SMTPSpec @@ -1322,6 +1348,26 @@ SMTPSpec has options to configure system's SMTP |=== +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-sshoptions"] +==== SSHOptions + + + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackupspec[$$ShardedRedisBackupSpec$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`user`* __string__ | SSH user +| *`privateKeySecretRef`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#localobjectreference-v1-core[$$LocalObjectReference$$]__ | Reference to a Secret that contains the SSH private key +| *`port`* __integer__ | SSH port (default is 22) +| *`sudo`* __boolean__ | Use sudo to execute commands agains the remote host +|=== + + [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-searchserverspec"] ==== SearchServerSpec @@ -1444,6 +1490,7 @@ SentinelConfig defines configuration options for the component |=== | Field | Description | *`monitoredShards`* __object (keys:string, values:string array)__ | Monitored shards indicates the redis servers that form part of each shard monitored by sentinel +| *`clusterTopology`* __object (keys:string, values:object)__ | ClusterTopology indicates the redis servers that form part of each shard monitored by sentinel | *`storageClass`* __string__ | StorageClass is the storage class to be used for the persistent sentinel config file where the shards state is stored | *`storageSize`* __Quantity__ | StorageSize is the storage size to provision for the persistent sentinel config file where the shards state is stored | *`metricsRefreshInterval`* __Duration__ | MetricsRefreshInterval determines the refresh interval for gahtering metrics from sentinel @@ -1494,6 +1541,62 @@ SentinelStatus defines the observed state of Sentinel |=== +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackup"] +==== ShardedRedisBackup + +ShardedRedisBackup is the Schema for the shardedredisbackups API + + + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`apiVersion`* __string__ | `saas.3scale.net/v1alpha1` +| *`kind`* __string__ | `ShardedRedisBackup` +| *`metadata`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#objectmeta-v1-meta[$$ObjectMeta$$]__ | Refer to Kubernetes API documentation for fields of `metadata`. + +| *`spec`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackupspec[$$ShardedRedisBackupSpec$$]__ | +| *`status`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackupstatus[$$ShardedRedisBackupStatus$$]__ | +|=== + + +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackupspec"] +==== ShardedRedisBackupSpec + +ShardedRedisBackupSpec defines the desired state of ShardedRedisBackup + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackup[$$ShardedRedisBackup$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`sentinelRef`* __string__ | Reference to a sentinel instance +| *`schedule`* __string__ | Cron-like schedule specification +| *`dbFile`* __string__ | Name of the dbfile in the redis instances +| *`sshOptions`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-sshoptions[$$SSHOptions$$]__ | SSH connection options +| *`s3Options`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-s3options[$$S3Options$$]__ | S3 storage options +| *`timeout`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#duration-v1-meta[$$Duration$$]__ | Max allowed time for a backup to complete +| *`historyLimit`* __integer__ | Max number of backup history to keep +| *`pollInterval`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#duration-v1-meta[$$Duration$$]__ | How frequently redis is polled for the BGSave status +| *`pause`* __boolean__ | If true, backup execution is stopped +|=== + + +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackupstatus"] +==== ShardedRedisBackupStatus + +ShardedRedisBackupStatus defines the observed state of ShardedRedisBackup + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredisbackup[$$ShardedRedisBackup$$] +**** + + + [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-shardedredistopology"] ==== ShardedRedisTopology @@ -1789,6 +1892,7 @@ SystemSpec defines the desired state of System | *`sidekiqLow`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemsidekiqspec[$$SystemSidekiqSpec$$]__ | Sidekiq Low specific configuration options | *`searchd`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemsearchdspec[$$SystemSearchdSpec$$]__ | Searchd specific configuration options | *`console`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemrailsconsolespec[$$SystemRailsConsoleSpec$$]__ | Console specific configuration options +| *`tasks`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskspec[$$SystemTektonTaskSpec$$] array__ | Configures the Tekton Tasks for the component | *`grafanaDashboard`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-grafanadashboardspec[$$GrafanaDashboardSpec$$]__ | Configures the Grafana Dashboard for the component | *`twemproxy`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyspec[$$TwemproxySpec$$]__ | Configures twemproxy |=== @@ -1796,6 +1900,50 @@ SystemSpec defines the desired state of System +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskconfig"] +==== SystemTektonTaskConfig + +SystemTektonTaskConfig configures app behavior for System SystemTektonTask + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskspec[$$SystemTektonTaskSpec$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`image`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-imagespec[$$ImageSpec$$]__ | Image specification for the Console component. Defaults to system image if not defined. +| *`command`* __string array__ | List of commands to be consumed by the task. +| *`args`* __string array__ | List of args to be consumed by the task. +| *`extraEnv`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#envvar-v1-core[$$EnvVar$$] array__ | List of extra evironment variables to be consumed by the task. +|=== + + +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskspec"] +==== SystemTektonTaskSpec + +SystemTektonTaskSpec configures the Sidekiq component of System + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemspec[$$SystemSpec$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`enabled`* __boolean__ | Deploy task instance +| *`name`* __string__ | Name for the Tekton task and pipeline +| *`description`* __string__ | Description for the Tekton task and pipeline +| *`config`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemtektontaskconfig[$$SystemTektonTaskConfig$$]__ | System Tekton Task specific configuration options for the component element +| *`resources`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-resourcerequirementsspec[$$ResourceRequirementsSpec$$]__ | Pod Disruption Budget for the component +| *`nodeAffinity`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#nodeaffinity-v1-core[$$NodeAffinity$$]__ | Describes node affinity scheduling rules for the pod. +| *`tolerations`* __link:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#toleration-v1-core[$$Toleration$$] array__ | If specified, the pod's tolerations. +| *`terminationGracePeriodSeconds`* __integer__ | Configures the TerminationGracePeriodSeconds +|=== + + [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-systemzyncspec"] ==== SystemZyncSpec @@ -1826,6 +1974,24 @@ SystemZyncSpec has configuration options for zync +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-targetserver"] +==== TargetServer + +Defines a server targeted by one of the TwemproxyConfig server pools + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyconfigstatus[$$TwemproxyConfigStatus$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`serverAlias`* __string__ | +| *`serverAddress`* __string__ | +|=== + + [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyconfig"] ==== TwemproxyConfig @@ -1858,13 +2024,28 @@ TwemproxyConfigSpec defines the desired state of TwemproxyConfig [cols="25a,75a", options="header"] |=== | Field | Description -| *`sentinelURIs`* __string array__ | SentinelURI is the redis URI of sentinel. If not set, the controller will try to autodiscover Sentinel within the namespace. -| *`serverPools`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyserverpool[$$TwemproxyServerPool$$] array__ | ServerPools is the list of Twemproxy server pools +| *`sentinelURIs`* __string array__ | SentinelURI is the redis URI of sentinel. If not set, the controller will try to autodiscover Sentinel within the namespace. TODO: remove, unused +| *`serverPools`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyserverpool[$$TwemproxyServerPool$$] array__ | ServerPools is the list of Twemproxy server pools WARNING: only 1 pool is supported at this time | *`reconcileServerPools`* __boolean__ | ReconcileServerPools is a flag that allows to deactivate the reconcile of the contents of the managed ConfigMap. This is useful in an emergency, to fix something manually. The re-sync logic will still work whenever the contents of the ConfigMap are changed, even if they are manually changed. This switch defaults to "true". | *`grafanaDashboard`* __xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-grafanadashboardspec[$$GrafanaDashboardSpec$$]__ | Configures the Grafana Dashboard for the component |=== +[id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyconfigstatus"] +==== TwemproxyConfigStatus + +TwemproxyConfigStatus defines the observed state of TwemproxyConfig + +.Appears In: +**** +- xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyconfig[$$TwemproxyConfig$$] +**** + +[cols="25a,75a", options="header"] +|=== +| Field | Description +| *`targets`* __object (keys:string, values:xref:{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-targetserver[$$TargetServer$$])__ | The list of serves currently targeted by this TwemproxyConfig +|=== [id="{anchor_prefix}-github-com-3scale-saas-operator-api-v1alpha1-twemproxyoptions"] diff --git a/pkg/assets/bindata.go b/pkg/assets/bindata.go index c64b4955..5bc7172d 100644 --- a/pkg/assets/bindata.go +++ b/pkg/assets/bindata.go @@ -354,13 +354,11 @@ var _bindata = map[string]func() (*asset, error){ // directory embedded in the file by go-bindata. // For example if you run go-bindata on data/... and data contains the // following hierarchy: -// -// data/ -// foo.txt -// img/ -// a.png -// b.png -// +// data/ +// foo.txt +// img/ +// a.png +// b.png // then AssetDir("data") would return []string{"foo.txt", "img"} // AssetDir("data/img") would return []string{"a.png", "b.png"} // AssetDir("foo.txt") and AssetDir("notexist") would return an error diff --git a/pkg/version/version.go b/pkg/version/version.go index c984b056..eb912bf9 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -1,7 +1,7 @@ package version const ( - version string = "v0.20.0-alpha.10" + version string = "v0.20.0" ) // Current returns the current marin3r operator version