From 80b8649f247ac455fdf510859db99f0341746a7c Mon Sep 17 00:00:00 2001 From: Simone Gotti Date: Mon, 12 Dec 2016 11:31:39 +0100 Subject: [PATCH] Release v0.5.0 --- CHANGELOG.md | 18 +++++++++++++ README.md | 2 -- doc/upgrade.md | 27 +++++++++++++++++-- examples/kubernetes/README.md | 3 +-- examples/kubernetes/rc/stolon-keeper0.yaml | 2 +- examples/kubernetes/rc/stolon-keeper1.yaml | 2 +- examples/kubernetes/rc/stolon-proxy.yaml | 2 +- examples/kubernetes/rc/stolon-sentinel.yaml | 2 +- .../kubernetes/statefulset/stolon-keeper.yaml | 2 +- .../kubernetes/statefulset/stolon-proxy.yaml | 2 +- .../statefulset/stolon-sentinel.yaml | 2 +- 11 files changed, 51 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bc2774dad..2a3e36bfd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,21 @@ +### v0.5.0 + +This version is a big step forward previous releases and provides many new features and a better cluster management. + +* Now the configuration is fully declarative (see [cluster specification](doc/cluster_spec.md) documentation) ([#178](https://github.com/sorintlab/stolon/pull/178)). +* Ability to create a new cluster starting from a previous backup (point in time recovery) ([#183](https://github.com/sorintlab/stolon/pull/183)) + * Wal-e backup/restore example ([#183](https://github.com/sorintlab/stolon/pull/183)) +* Better synchronous replication, the user can define a min and a max number of required synchronous standbys and the master will always block waiting for acknowledge by the required sync standbys. Only synchronous standbys will be elected as new master. ([#219](https://github.com/sorintlab/stolon/pull/219)) +* Production ready kubernetes examples (just change the persistent volume provider) ([#215](https://github.com/sorintlab/stolon/pull/215)) +* To keep an unique managed central configuration, the postgresql parameters can now only be managed only using the cluster specification ([#181](https://github.com/sorintlab/stolon/pull/181)) +* When (re)initializing a new cluster (with an empty db, from an existing instance or from a backup) the postgresql parameters are automatically merged in the cluster spec ([#181](https://github.com/sorintlab/stolon/pull/181)) +* Use only store based communication and discovery (removed all the kubernetes specific options) ([#195](https://github.com/sorintlab/stolon/pull/195)) +* Ability to use TLS communication with the store (for both etcd and consul) ([#208](https://github.com/sorintlab/stolon/pull/208)) +* Better standby monitoring and replacement ([#218](https://github.com/sorintlab/stolon/pull/218)) +* Improved logging ([#187](https://github.com/sorintlab/stolon/pull/187)) + +Many other [improvements and bug fixes](https://github.com/sorintlab/stolon/milestone/4) + ### v0.4.0 Some cleanups and changes in preparation for release v0.5.0 that will receive a big refactor (with different breaking changes) needed to bring a lot of new features. diff --git a/README.md b/README.md index 7b9e6cdf8..0da035422 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,6 @@ stolon is a cloud native PostgreSQL manager for PostgreSQL high availability. It For an introduction to stolon you can also take a look at [this post](https://sgotti.me/post/stolon-introduction/) -**Note: The current master branch that will lead to v0.5.0 is receiving a big refactor needed to implement a lot of new features (see the [v0.5.0 roadmap](https://github.com/sorintlab/stolon/issues?q=is%3Aopen+is%3Aissue+milestone%3Av0.5.0)). So some breakage is expected.** - ## Features * Leverages PostgreSQL streaming replication. diff --git a/doc/upgrade.md b/doc/upgrade.md index cd8a37293..a5a5021a8 100644 --- a/doc/upgrade.md +++ b/doc/upgrade.md @@ -1,13 +1,36 @@ # Upgrading from v0.4.0 to v0.5.0 -Stolon v0.5.0 received a big rework to improve its internal data model and implement new features. To upgrade an existing cluster from v0.4.0 to v0.5.0 you can follow these steps. +## Removed commands options -* Annotate the master keeperUID (previously called keeper id). You can retrieve this using `stolonctl status` +These stolon commands options were removed. You should update your scripts invoking the stolon components removing them. + +### stolon-keeper +`--listen-address` +`--port` +`--pg-conf-dir` +`--id` has been deprecated (but yet available). `--uid` should be used instead. + +### stolon-sentinel +`--listen-address` +`--port` +`--discovery-type` +`--initial-cluster-config` (the equivalent for the new cluster spec format is `--initial-cluster-spec`) +`--keeper-kube-label-selector` +`--keeper-port` +`--kubernetes-namespace` + +### Upgrade for new cluster data + +Stolon v0.5.0 received a big rework to improve its internal data model and implement new features. To upgrade an existing cluster from v0.4.0 to v0.5.0 you can follow the steps below (we suggest to try them in a test environment). + +* Annotate the master keeperUID (previously called keeper id). You can retrieve this using `stolonctl status`. * Stop all the cluster processes (keepers, sentinels and proxies) * Upgrade the binaries to stolon v0.5.0 * Relaunch all the cluster processes. They will loop reporting `unsupported clusterdata format version 0`. * Initialize a new cluster data using the master keeperUID: + ``` stolonctl init '{ "initMode": "existing", "existingConfig": { "keeperUID": "keeper01" } }' ``` +The leader sentinel will choose the other keepers as standbys and they'll resync with the current master (they will do this also if before the upgrade they were already standbys since this is needed to adapt to the new cluster data format). diff --git a/examples/kubernetes/README.md b/examples/kubernetes/README.md index f46e0cb91..f7102b9d4 100644 --- a/examples/kubernetes/README.md +++ b/examples/kubernetes/README.md @@ -11,9 +11,8 @@ There're two examples. The difference between them is how the keepers pods are d Prebuilt images are available on the dockerhub, the images' tags are the stolon release version plus the postgresql version (for example v0.5.0-pg9.6). Additional images are available: -* `latest-pg9.6`: latest released image (after v0.4.0). +* `latest-pg9.6`: latest released image (for stolon versions >= v0.5.0). * `master-pg9.6`: automatically built after every commit to the master branch. -* `latest`: latest released image (until v0.4.0). In the [image](examples/kubernetes/image/docker) directory you'll find a Makefile to build the image used in this example (starting from the official postgreSQL images). The Makefile generates the Dockefile from a template Dockerfile where you have to define the wanted postgres version and image tag (`PGVERSION` adn `TAG` mandatory variables). diff --git a/examples/kubernetes/rc/stolon-keeper0.yaml b/examples/kubernetes/rc/stolon-keeper0.yaml index dc3e3c0f6..52ff3fe90 100644 --- a/examples/kubernetes/rc/stolon-keeper0.yaml +++ b/examples/kubernetes/rc/stolon-keeper0.yaml @@ -18,7 +18,7 @@ spec: terminationGracePeriodSeconds: 10 containers: - name: stolon-keeper - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec" diff --git a/examples/kubernetes/rc/stolon-keeper1.yaml b/examples/kubernetes/rc/stolon-keeper1.yaml index 587d54066..04ea60675 100644 --- a/examples/kubernetes/rc/stolon-keeper1.yaml +++ b/examples/kubernetes/rc/stolon-keeper1.yaml @@ -18,7 +18,7 @@ spec: terminationGracePeriodSeconds: 10 containers: - name: stolon-keeper - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec" diff --git a/examples/kubernetes/rc/stolon-proxy.yaml b/examples/kubernetes/rc/stolon-proxy.yaml index 2c9da7de3..ddf67acb4 100644 --- a/examples/kubernetes/rc/stolon-proxy.yaml +++ b/examples/kubernetes/rc/stolon-proxy.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: stolon-proxy - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec" diff --git a/examples/kubernetes/rc/stolon-sentinel.yaml b/examples/kubernetes/rc/stolon-sentinel.yaml index 6053df999..ac9b0c7fc 100644 --- a/examples/kubernetes/rc/stolon-sentinel.yaml +++ b/examples/kubernetes/rc/stolon-sentinel.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: stolon-sentinel - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec" diff --git a/examples/kubernetes/statefulset/stolon-keeper.yaml b/examples/kubernetes/statefulset/stolon-keeper.yaml index fa8a2fa83..2a01c8e6d 100644 --- a/examples/kubernetes/statefulset/stolon-keeper.yaml +++ b/examples/kubernetes/statefulset/stolon-keeper.yaml @@ -18,7 +18,7 @@ spec: terminationGracePeriodSeconds: 10 containers: - name: stolon-keeper - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec" diff --git a/examples/kubernetes/statefulset/stolon-proxy.yaml b/examples/kubernetes/statefulset/stolon-proxy.yaml index 2c9da7de3..ddf67acb4 100644 --- a/examples/kubernetes/statefulset/stolon-proxy.yaml +++ b/examples/kubernetes/statefulset/stolon-proxy.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: stolon-proxy - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec" diff --git a/examples/kubernetes/statefulset/stolon-sentinel.yaml b/examples/kubernetes/statefulset/stolon-sentinel.yaml index 6053df999..ac9b0c7fc 100644 --- a/examples/kubernetes/statefulset/stolon-sentinel.yaml +++ b/examples/kubernetes/statefulset/stolon-sentinel.yaml @@ -15,7 +15,7 @@ spec: spec: containers: - name: stolon-sentinel - image: sorintlab/stolon:master-pg9.6 + image: sorintlab/stolon:v0.5.0-pg9.6 command: - "/bin/bash" - "-ec"