From a2fd8735e2bbfbc4918f9695ce1aac0c93a78fc4 Mon Sep 17 00:00:00 2001 From: Felix Kunde Date: Fri, 28 May 2021 11:46:33 +0200 Subject: [PATCH] bump operator to v1.6.3 --- .../postgres-operator-issue-template.md | 2 +- README.md | 2 +- charts/postgres-operator-ui/Chart.yaml | 4 +-- charts/postgres-operator-ui/index.yaml | 32 +++++++++++++++--- .../postgres-operator-ui-1.6.3.tgz | Bin 0 -> 4050 bytes charts/postgres-operator-ui/values.yaml | 2 +- charts/postgres-operator/Chart.yaml | 4 +-- .../crds/operatorconfigurations.yaml | 4 +-- .../postgres-operator/crds/postgresqls.yaml | 2 +- charts/postgres-operator/index.yaml | 31 ++++++++++++++--- .../postgres-operator-1.6.3.tgz | Bin 0 -> 20124 bytes charts/postgres-operator/values-crd.yaml | 6 ++-- charts/postgres-operator/values.yaml | 6 ++-- docs/administrator.md | 2 +- docs/reference/operator_parameters.md | 2 +- e2e/tests/test_e2e.py | 6 ++-- manifests/complete-postgres-manifest.yaml | 2 +- manifests/configmap.yaml | 4 +-- manifests/operatorconfiguration.crd.yaml | 4 +-- manifests/postgres-operator.yaml | 2 +- ...gresql-operator-default-configuration.yaml | 4 +-- manifests/postgresql.crd.yaml | 2 +- pkg/controller/operator_config.go | 4 +-- pkg/util/config/config.go | 8 ++--- 24 files changed, 89 insertions(+), 46 deletions(-) create mode 100644 charts/postgres-operator-ui/postgres-operator-ui-1.6.3.tgz create mode 100644 charts/postgres-operator/postgres-operator-1.6.3.tgz diff --git a/.github/ISSUE_TEMPLATE/postgres-operator-issue-template.md b/.github/ISSUE_TEMPLATE/postgres-operator-issue-template.md index f53be1319..93392a68e 100644 --- a/.github/ISSUE_TEMPLATE/postgres-operator-issue-template.md +++ b/.github/ISSUE_TEMPLATE/postgres-operator-issue-template.md @@ -9,7 +9,7 @@ assignees: '' Please, answer some short questions which should help us to understand your problem / question better? -- **Which image of the operator are you using?** e.g. registry.opensource.zalan.do/acid/postgres-operator:v1.6.2 +- **Which image of the operator are you using?** e.g. registry.opensource.zalan.do/acid/postgres-operator:v1.6.3 - **Where do you run it - cloud or metal? Kubernetes or OpenShift?** [AWS K8s | GCP ... | Bare Metal K8s] - **Are you running Postgres Operator in production?** [yes | no] - **Type of issue?** [Bug report, question, feature request, etc.] diff --git a/README.md b/README.md index fd7e731db..ebe84bf5f 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ We introduce the major version into the backup path to smoothen the [major versi The new operator configuration can set a compatibility flag *enable_spilo_wal_path_compat* to make Spilo look for wal segments in the current path but also old format paths. This comes at potential performance costs and should be disabled after a few days. -The newest Spilo 13 image is: `registry.opensource.zalan.do/acid/spilo-13:2.0-p6` +The newest Spilo 13 image is: `registry.opensource.zalan.do/acid/spilo-13:2.0-p7` The last Spilo 12 image is: `registry.opensource.zalan.do/acid/spilo-12:1.6-p5` diff --git a/charts/postgres-operator-ui/Chart.yaml b/charts/postgres-operator-ui/Chart.yaml index 4ad4de5e6..e9c10868c 100644 --- a/charts/postgres-operator-ui/Chart.yaml +++ b/charts/postgres-operator-ui/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: postgres-operator-ui -version: 1.6.2 -appVersion: 1.6.2 +version: 1.6.3 +appVersion: 1.6.3 home: https://github.com/zalando/postgres-operator description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience keywords: diff --git a/charts/postgres-operator-ui/index.yaml b/charts/postgres-operator-ui/index.yaml index 19db0b74f..f76bfcbb4 100644 --- a/charts/postgres-operator-ui/index.yaml +++ b/charts/postgres-operator-ui/index.yaml @@ -1,9 +1,31 @@ apiVersion: v1 entries: postgres-operator-ui: + - apiVersion: v1 + appVersion: 1.6.3 + created: "2021-05-27T19:04:33.425637932+02:00" + description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience + digest: 08b810aa632dcc719e4785ef184e391267f7c460caa99677f2d00719075aac78 + home: https://github.com/zalando/postgres-operator + keywords: + - postgres + - operator + - ui + - cloud-native + - patroni + - spilo + maintainers: + - email: opensource@zalando.de + name: Zalando + name: postgres-operator-ui + sources: + - https://github.com/zalando/postgres-operator + urls: + - postgres-operator-ui-1.6.3.tgz + version: 1.6.3 - apiVersion: v1 appVersion: 1.6.2 - created: "2021-04-06T16:47:40.993908218+02:00" + created: "2021-05-27T19:04:33.422124263+02:00" description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience digest: 14d1559bb0bd1e1e828f2daaaa6f6ac9ffc268d79824592c3589b55dd39241f6 home: https://github.com/zalando/postgres-operator @@ -25,7 +47,7 @@ entries: version: 1.6.2 - apiVersion: v1 appVersion: 1.6.1 - created: "2021-04-06T16:47:40.993378451+02:00" + created: "2021-05-27T19:04:33.419640902+02:00" description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience digest: 3d321352f2f1e7bb7450aa8876e3d818aa9f9da9bd4250507386f0490f2c1969 home: https://github.com/zalando/postgres-operator @@ -47,7 +69,7 @@ entries: version: 1.6.1 - apiVersion: v1 appVersion: 1.6.0 - created: "2021-04-06T16:47:40.992871656+02:00" + created: "2021-05-27T19:04:33.41788193+02:00" description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience digest: 1e0aa1e7db3c1daa96927ffbf6fdbcdb434562f961833cb5241ddbe132220ee4 home: https://github.com/zalando/postgres-operator @@ -69,7 +91,7 @@ entries: version: 1.6.0 - apiVersion: v1 appVersion: 1.5.0 - created: "2021-04-06T16:47:40.992346484+02:00" + created: "2021-05-27T19:04:33.416056821+02:00" description: Postgres Operator UI provides a graphical interface for a convenient database-as-a-service user experience digest: c91ea39e6d51d57f4048fb1b6ec53b40823f2690eb88e4e4f1a036367b9fdd61 home: https://github.com/zalando/postgres-operator @@ -89,4 +111,4 @@ entries: urls: - postgres-operator-ui-1.5.0.tgz version: 1.5.0 -generated: "2021-04-06T16:47:40.991668273+02:00" +generated: "2021-05-27T19:04:33.41380858+02:00" diff --git a/charts/postgres-operator-ui/postgres-operator-ui-1.6.3.tgz b/charts/postgres-operator-ui/postgres-operator-ui-1.6.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..45e3d00b2cc022508d5560eec44d630897b98d4b GIT binary patch literal 4050 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 E0Gd|!Gynhq literal 0 HcmV?d00001 diff --git a/charts/postgres-operator-ui/values.yaml b/charts/postgres-operator-ui/values.yaml index db44ce375..c9f521464 100644 --- a/charts/postgres-operator-ui/values.yaml +++ b/charts/postgres-operator-ui/values.yaml @@ -8,7 +8,7 @@ replicaCount: 1 image: registry: registry.opensource.zalan.do repository: acid/postgres-operator-ui - tag: v1.6.2 + tag: v1.6.3 pullPolicy: "IfNotPresent" # Optionally specify an array of imagePullSecrets. diff --git a/charts/postgres-operator/Chart.yaml b/charts/postgres-operator/Chart.yaml index 94dea3a15..28d0f811d 100644 --- a/charts/postgres-operator/Chart.yaml +++ b/charts/postgres-operator/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 name: postgres-operator -version: 1.6.2 -appVersion: 1.6.2 +version: 1.6.3 +appVersion: 1.6.3 home: https://github.com/zalando/postgres-operator description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes keywords: diff --git a/charts/postgres-operator/crds/operatorconfigurations.yaml b/charts/postgres-operator/crds/operatorconfigurations.yaml index 0f036c299..82a737ae6 100644 --- a/charts/postgres-operator/crds/operatorconfigurations.yaml +++ b/charts/postgres-operator/crds/operatorconfigurations.yaml @@ -65,7 +65,7 @@ spec: properties: docker_image: type: string - default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p6" + default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p7" enable_crd_validation: type: boolean default: true @@ -397,7 +397,7 @@ spec: properties: logical_backup_docker_image: type: string - default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" logical_backup_google_application_credentials: type: string logical_backup_job_prefix: diff --git a/charts/postgres-operator/crds/postgresqls.yaml b/charts/postgres-operator/crds/postgresqls.yaml index ad11f6407..aead7fe69 100644 --- a/charts/postgres-operator/crds/postgresqls.yaml +++ b/charts/postgres-operator/crds/postgresqls.yaml @@ -27,7 +27,7 @@ spec: additionalPrinterColumns: - name: Team type: string - description: Team responsible for Postgres CLuster + description: Team responsible for Postgres cluster jsonPath: .spec.teamId - name: Version type: string diff --git a/charts/postgres-operator/index.yaml b/charts/postgres-operator/index.yaml index e59cc7629..bbd762104 100644 --- a/charts/postgres-operator/index.yaml +++ b/charts/postgres-operator/index.yaml @@ -1,9 +1,30 @@ apiVersion: v1 entries: postgres-operator: + - apiVersion: v1 + appVersion: 1.6.3 + created: "2021-05-27T19:04:25.199523943+02:00" + description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes + digest: ea08f991bf23c9ad114bca98ebcbe3e2fa15beab163061399394905eaee89b35 + home: https://github.com/zalando/postgres-operator + keywords: + - postgres + - operator + - cloud-native + - patroni + - spilo + maintainers: + - email: opensource@zalando.de + name: Zalando + name: postgres-operator + sources: + - https://github.com/zalando/postgres-operator + urls: + - postgres-operator-1.6.3.tgz + version: 1.6.3 - apiVersion: v1 appVersion: 1.6.2 - created: "2021-03-30T17:00:50.171986449+02:00" + created: "2021-05-27T19:04:25.198182197+02:00" description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes digest: d886f8a0879ca07d1e5246ee7bc55710e1c872f3977280fe495db6fc2057a7f4 home: https://github.com/zalando/postgres-operator @@ -24,7 +45,7 @@ entries: version: 1.6.2 - apiVersion: v1 appVersion: 1.6.1 - created: "2021-03-30T17:00:50.170294515+02:00" + created: "2021-05-27T19:04:25.19687586+02:00" description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes digest: 4ba5972cd486dcaa2d11c5613a6f97f6b7b831822e610fe9e10a57ea1db23556 home: https://github.com/zalando/postgres-operator @@ -45,7 +66,7 @@ entries: version: 1.6.1 - apiVersion: v1 appVersion: 1.6.0 - created: "2021-03-30T17:00:50.168493689+02:00" + created: "2021-05-27T19:04:25.195600766+02:00" description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes digest: f52149718ea364f46b4b9eec9a65f6253ad182bb78df541d14cd5277b9c8a8c3 home: https://github.com/zalando/postgres-operator @@ -66,7 +87,7 @@ entries: version: 1.6.0 - apiVersion: v1 appVersion: 1.5.0 - created: "2021-03-30T17:00:50.166722286+02:00" + created: "2021-05-27T19:04:25.193985032+02:00" description: Postgres Operator creates and manages PostgreSQL clusters running in Kubernetes digest: 198351d5db52e65cdf383d6f3e1745d91ac1e2a01121f8476f8b1be728b09531 home: https://github.com/zalando/postgres-operator @@ -85,4 +106,4 @@ entries: urls: - postgres-operator-1.5.0.tgz version: 1.5.0 -generated: "2021-03-30T17:00:50.165166707+02:00" +generated: "2021-05-27T19:04:25.191897769+02:00" diff --git a/charts/postgres-operator/postgres-operator-1.6.3.tgz b/charts/postgres-operator/postgres-operator-1.6.3.tgz new file mode 100644 index 0000000000000000000000000000000000000000..af84bf57bc65b7418564d29b4a7169f72c545f85 GIT binary patch literal 20124 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 literal 0 HcmV?d00001 diff --git a/charts/postgres-operator/values-crd.yaml b/charts/postgres-operator/values-crd.yaml index bd563a636..b1fc43261 100644 --- a/charts/postgres-operator/values-crd.yaml +++ b/charts/postgres-operator/values-crd.yaml @@ -1,7 +1,7 @@ image: registry: registry.opensource.zalan.do repository: acid/postgres-operator - tag: v1.6.2 + tag: v1.6.3 pullPolicy: "IfNotPresent" # Optionally specify an array of imagePullSecrets. @@ -32,7 +32,7 @@ configGeneral: # Select if setup uses endpoints (default), or configmaps to manage leader (DCS=k8s) # kubernetes_use_configmaps: false # Spilo docker image - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p6 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p7 # min number of instances in Postgres cluster. -1 = no limit min_instances: -1 # max number of instances in Postgres cluster. -1 = no limit @@ -263,7 +263,7 @@ configAwsOrGcp: # configure K8s cron job managed by the operator configLogicalBackup: # image for pods of the logical backup job (example runs pg_dumpall) - logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" # path of google cloud service account json file # logical_backup_google_application_credentials: "" diff --git a/charts/postgres-operator/values.yaml b/charts/postgres-operator/values.yaml index 15a53a00d..fde4e203d 100644 --- a/charts/postgres-operator/values.yaml +++ b/charts/postgres-operator/values.yaml @@ -1,7 +1,7 @@ image: registry: registry.opensource.zalan.do repository: acid/postgres-operator - tag: v1.6.2 + tag: v1.6.3 pullPolicy: "IfNotPresent" # Optionally specify an array of imagePullSecrets. @@ -35,7 +35,7 @@ configGeneral: # Select if setup uses endpoints (default), or configmaps to manage leader (DCS=k8s) # kubernetes_use_configmaps: "false" # Spilo docker image - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p6 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p7 # min number of instances in Postgres cluster. -1 = no limit min_instances: "-1" # max number of instances in Postgres cluster. -1 = no limit @@ -253,7 +253,7 @@ configAwsOrGcp: # configure K8s cron job managed by the operator configLogicalBackup: # image for pods of the logical backup job (example runs pg_dumpall) - logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" # path of google cloud service account json file # logical_backup_google_application_credentials: "" diff --git a/docs/administrator.md b/docs/administrator.md index 2b65fe3ea..db3bae6b9 100644 --- a/docs/administrator.md +++ b/docs/administrator.md @@ -950,7 +950,7 @@ make docker # build in image in minikube docker env eval $(minikube docker-env) -docker build -t registry.opensource.zalan.do/acid/postgres-operator-ui:v1.6.2 . +docker build -t registry.opensource.zalan.do/acid/postgres-operator-ui:v1.6.3 . # apply UI manifests next to a running Postgres Operator kubectl apply -f manifests/ diff --git a/docs/reference/operator_parameters.md b/docs/reference/operator_parameters.md index b0d982943..395007c91 100644 --- a/docs/reference/operator_parameters.md +++ b/docs/reference/operator_parameters.md @@ -593,7 +593,7 @@ grouped under the `logical_backup` key. runs `pg_dumpall` on a replica if possible and uploads compressed results to an S3 bucket under the key `/spilo/pg_cluster_name/cluster_k8s_uuid/logical_backups`. The default image is the same image built with the Zalando-internal CI - pipeline. Default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + pipeline. Default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" * **logical_backup_google_application_credentials** Specifies the path of the google cloud service account json file. Default is empty. diff --git a/e2e/tests/test_e2e.py b/e2e/tests/test_e2e.py index bffb12386..2b9e3ad28 100644 --- a/e2e/tests/test_e2e.py +++ b/e2e/tests/test_e2e.py @@ -230,7 +230,7 @@ def test_additional_teams_and_members(self): FROM pg_catalog.pg_roles WHERE rolname IN ('elephant', 'kind'); """ - self.eventuallyEqual(lambda: len(self.query_database(leader.metadata.name, "postgres", user_query)), 2, + self.eventuallyEqual(lambda: len(self.query_database(leader.metadata.name, "postgres", user_query)), 2, "Not all additional users found in database", 10, 5) # replace additional member and check if the removed member's role is renamed @@ -458,7 +458,7 @@ def test_enable_disable_connection_pooler(self): db_list = self.list_databases(leader.metadata.name) for db in db_list: - self.eventuallyNotEqual(lambda: len(self.query_database(leader.metadata.name, db, schemas_query)), 0, + self.eventuallyNotEqual(lambda: len(self.query_database(leader.metadata.name, db, schemas_query)), 0, "Pooler schema not found in database {}".format(db)) # remove config section to make test work next time @@ -789,7 +789,7 @@ def test_min_resource_limits(self): } } k8s.api.custom_objects_api.patch_namespaced_custom_object( - "acid.zalan.do", "v1", "default", "postgresqls", "acid-minimal-cluster", pg_patch_resources) + "acid.zalan.do", "v1", "default", "postgresqls", "acid-minimal-cluster", pg_patch_resources) self.eventuallyEqual(lambda: k8s.get_operator_state(), {"0": "idle"}, "Operator does not get in sync") self.eventuallyEqual(lambda: k8s.count_running_pods(), 2, "No two pods running after lazy rolling upgrade") diff --git a/manifests/complete-postgres-manifest.yaml b/manifests/complete-postgres-manifest.yaml index 75b873321..6e2acbdd3 100644 --- a/manifests/complete-postgres-manifest.yaml +++ b/manifests/complete-postgres-manifest.yaml @@ -9,7 +9,7 @@ metadata: # "delete-date": "2020-08-31" # can only be deleted on that day if "delete-date "key is configured # "delete-clustername": "acid-test-cluster" # can only be deleted when name matches if "delete-clustername" key is configured spec: - dockerImage: registry.opensource.zalan.do/acid/spilo-13:2.0-p6 + dockerImage: registry.opensource.zalan.do/acid/spilo-13:2.0-p7 teamId: "acid" numberOfInstances: 2 users: # Application/Robot users diff --git a/manifests/configmap.yaml b/manifests/configmap.yaml index b379975eb..7a05135ab 100644 --- a/manifests/configmap.yaml +++ b/manifests/configmap.yaml @@ -32,7 +32,7 @@ data: # default_memory_request: 100Mi # delete_annotation_date_key: delete-date # delete_annotation_name_key: delete-clustername - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p6 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p7 # downscaler_annotations: "deployment-time,downscaler/*" # enable_admin_role_for_users: "true" # enable_crd_validation: "true" @@ -64,7 +64,7 @@ data: # inherited_labels: application,environment # kube_iam_role: "" # log_s3_bucket: "" - logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" # logical_backup_google_application_credentials: "" logical_backup_job_prefix: "logical-backup-" logical_backup_provider: "s3" diff --git a/manifests/operatorconfiguration.crd.yaml b/manifests/operatorconfiguration.crd.yaml index fbed0bea1..806acc8da 100644 --- a/manifests/operatorconfiguration.crd.yaml +++ b/manifests/operatorconfiguration.crd.yaml @@ -61,7 +61,7 @@ spec: properties: docker_image: type: string - default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p6" + default: "registry.opensource.zalan.do/acid/spilo-13:2.0-p7" enable_crd_validation: type: boolean default: true @@ -393,7 +393,7 @@ spec: properties: logical_backup_docker_image: type: string - default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + default: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" logical_backup_google_application_credentials: type: string logical_backup_job_prefix: diff --git a/manifests/postgres-operator.yaml b/manifests/postgres-operator.yaml index 5e189c819..3dbe3acb9 100644 --- a/manifests/postgres-operator.yaml +++ b/manifests/postgres-operator.yaml @@ -19,7 +19,7 @@ spec: serviceAccountName: postgres-operator containers: - name: postgres-operator - image: registry.opensource.zalan.do/acid/postgres-operator:v1.6.2 + image: registry.opensource.zalan.do/acid/postgres-operator:v1.6.3 imagePullPolicy: IfNotPresent resources: requests: diff --git a/manifests/postgresql-operator-default-configuration.yaml b/manifests/postgresql-operator-default-configuration.yaml index 65dfd6ce4..bd6f321dd 100644 --- a/manifests/postgresql-operator-default-configuration.yaml +++ b/manifests/postgresql-operator-default-configuration.yaml @@ -3,7 +3,7 @@ kind: OperatorConfiguration metadata: name: postgresql-operator-default-configuration configuration: - docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p6 + docker_image: registry.opensource.zalan.do/acid/spilo-13:2.0-p7 # enable_crd_validation: true # enable_lazy_spilo_upgrade: false enable_pgversion_env_var: true @@ -123,7 +123,7 @@ configuration: # wal_gs_bucket: "" # wal_s3_bucket: "" logical_backup: - logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.2" + logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup:v1.6.3" # logical_backup_google_application_credentials: "" logical_backup_job_prefix: "logical-backup-" logical_backup_provider: "s3" diff --git a/manifests/postgresql.crd.yaml b/manifests/postgresql.crd.yaml index 61a04144c..30b41d392 100644 --- a/manifests/postgresql.crd.yaml +++ b/manifests/postgresql.crd.yaml @@ -23,7 +23,7 @@ spec: additionalPrinterColumns: - name: Team type: string - description: Team responsible for Postgres CLuster + description: Team responsible for Postgres cluster jsonPath: .spec.teamId - name: Version type: string diff --git a/pkg/controller/operator_config.go b/pkg/controller/operator_config.go index fbec7a462..761cf1b60 100644 --- a/pkg/controller/operator_config.go +++ b/pkg/controller/operator_config.go @@ -39,7 +39,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur result.EnableSpiloWalPathCompat = fromCRD.EnableSpiloWalPathCompat result.EtcdHost = fromCRD.EtcdHost result.KubernetesUseConfigMaps = fromCRD.KubernetesUseConfigMaps - result.DockerImage = util.Coalesce(fromCRD.DockerImage, "registry.opensource.zalan.do/acid/spilo-13:2.0-p6") + result.DockerImage = util.Coalesce(fromCRD.DockerImage, "registry.opensource.zalan.do/acid/spilo-13:2.0-p7") result.Workers = util.CoalesceUInt32(fromCRD.Workers, 8) result.MinInstances = fromCRD.MinInstances result.MaxInstances = fromCRD.MaxInstances @@ -152,7 +152,7 @@ func (c *Controller) importConfigurationFromCRD(fromCRD *acidv1.OperatorConfigur // logical backup config result.LogicalBackupSchedule = util.Coalesce(fromCRD.LogicalBackup.Schedule, "30 00 * * *") - result.LogicalBackupDockerImage = util.Coalesce(fromCRD.LogicalBackup.DockerImage, "registry.opensource.zalan.do/acid/logical-backup:v1.6.2") + result.LogicalBackupDockerImage = util.Coalesce(fromCRD.LogicalBackup.DockerImage, "registry.opensource.zalan.do/acid/logical-backup:v1.6.3") result.LogicalBackupProvider = util.Coalesce(fromCRD.LogicalBackup.BackupProvider, "s3") result.LogicalBackupS3Bucket = fromCRD.LogicalBackup.S3Bucket result.LogicalBackupS3Region = fromCRD.LogicalBackup.S3Region diff --git a/pkg/util/config/config.go b/pkg/util/config/config.go index c8430e7a6..52530fb12 100644 --- a/pkg/util/config/config.go +++ b/pkg/util/config/config.go @@ -28,8 +28,8 @@ type Resources struct { PodLabelWaitTimeout time.Duration `name:"pod_label_wait_timeout" default:"10m"` PodDeletionWaitTimeout time.Duration `name:"pod_deletion_wait_timeout" default:"10m"` PodTerminateGracePeriod time.Duration `name:"pod_terminate_grace_period" default:"5m"` - SpiloRunAsUser *int64 `name:"spilo_runasuser,omitempty"` - SpiloRunAsGroup *int64 `name:"spilo_runasgroup,omitempty"` + SpiloRunAsUser *int64 `name:"spilo_runasuser"` + SpiloRunAsGroup *int64 `name:"spilo_runasgroup"` SpiloFSGroup *int64 `name:"spilo_fsgroup"` PodPriorityClassName string `name:"pod_priority_class_name"` ClusterDomain string `name:"cluster_domain" default:"cluster.local"` @@ -114,7 +114,7 @@ type Scalyr struct { // LogicalBackup defines configuration for logical backup type LogicalBackup struct { LogicalBackupSchedule string `name:"logical_backup_schedule" default:"30 00 * * *"` - LogicalBackupDockerImage string `name:"logical_backup_docker_image" default:"registry.opensource.zalan.do/acid/logical-backup:v1.6.2"` + LogicalBackupDockerImage string `name:"logical_backup_docker_image" default:"registry.opensource.zalan.do/acid/logical-backup:v1.6.3"` LogicalBackupProvider string `name:"logical_backup_provider" default:"s3"` LogicalBackupS3Bucket string `name:"logical_backup_s3_bucket" default:""` LogicalBackupS3Region string `name:"logical_backup_s3_region" default:""` @@ -152,7 +152,7 @@ type Config struct { WatchedNamespace string `name:"watched_namespace"` // special values: "*" means 'watch all namespaces', the empty string "" means 'watch a namespace where operator is deployed to' KubernetesUseConfigMaps bool `name:"kubernetes_use_configmaps" default:"false"` EtcdHost string `name:"etcd_host" default:""` // special values: the empty string "" means Patroni will use K8s as a DCS - DockerImage string `name:"docker_image" default:"registry.opensource.zalan.do/acid/spilo-13:2.0-p6"` + DockerImage string `name:"docker_image" default:"registry.opensource.zalan.do/acid/spilo-13:2.0-p7"` SidecarImages map[string]string `name:"sidecar_docker_images"` // deprecated in favour of SidecarContainers SidecarContainers []v1.Container `name:"sidecars"` PodServiceAccountName string `name:"pod_service_account_name" default:"postgres-pod"`