finish PR1544
This commit is contained in:
parent
cc10c3ea27
commit
d78ccea3a8
|
|
@ -464,6 +464,13 @@ spec:
|
|||
type: string
|
||||
standby_port:
|
||||
type: string
|
||||
oneOf:
|
||||
- required:
|
||||
- s3_wal_path
|
||||
- required:
|
||||
- gs_wal_path
|
||||
- required:
|
||||
- standby_host
|
||||
streams:
|
||||
type: array
|
||||
nullable: true
|
||||
|
|
|
|||
|
|
@ -1088,11 +1088,15 @@ data:
|
|||
### Standby clusters
|
||||
|
||||
The setup for [standby clusters](user.md#setting-up-a-standby-cluster) is very
|
||||
similar to cloning. At the moment, the operator only allows for streaming from
|
||||
the S3 WAL archive of the master specified in the manifest. Like with cloning,
|
||||
if you are using [additional environment variables](#custom-pod-environment-variables)
|
||||
to access your backup location you have to copy those variables and prepend the
|
||||
`STANDBY_` prefix for Spilo to find the backups and WAL files to stream.
|
||||
similar to cloning. They can stream from a WAL archive (S3, GCS). Like with
|
||||
cloning, if you are using [additional environment variables](#custom-pod-environment-variables)
|
||||
to access your backup location you have to copy those variables and prepend
|
||||
the `STANDBY_` prefix for Spilo to find the backups and WAL files to stream.
|
||||
|
||||
Alternatively, standby clusters can also stream from a remote primary cluster.
|
||||
You have to specify the host address. Port is optional and defaults to 5432.
|
||||
Note, that only one of the options (`s3_wal_path`, `gs_wal_path`,
|
||||
`standby_host`) can be present under the `standby` top-level key.
|
||||
|
||||
## Logical backups
|
||||
|
||||
|
|
|
|||
|
|
@ -395,24 +395,22 @@ under the `clone` top-level key and do not affect the already running cluster.
|
|||
## Standby cluster
|
||||
|
||||
On startup, an existing `standby` top-level key creates a standby Postgres
|
||||
cluster streaming from a remote location. Either from a S3 or GCS WAL
|
||||
archive or a remote primary. When both of them are set, `standby_host`
|
||||
takes precedence.
|
||||
cluster streaming from a remote location - either from a S3 or GCS WAL
|
||||
archive or a remote primary. Only one of options is allowed and required
|
||||
if the `standby` key is present.
|
||||
|
||||
* **s3_wal_path**
|
||||
the url to S3 bucket containing the WAL archive of the remote primary.
|
||||
Required when the `standby` section is present even when `standby_host` is set.
|
||||
|
||||
* **gs_wal_path**
|
||||
the url to GS bucket containing the WAL archive of the remote primary.
|
||||
Optional, but `s3_wal_path` or `gs_wal_path` is required.
|
||||
|
||||
* **standby_host**
|
||||
hostname or IP address of the primary to stream from.
|
||||
When set, `s3_wal_path` is ignored.
|
||||
|
||||
* **standby_port**
|
||||
TCP port on which the primary is listening for connections.
|
||||
TCP port on which the primary is listening for connections. Patroni will
|
||||
use `"5432"` if not set.
|
||||
|
||||
## Volume properties
|
||||
|
||||
|
|
|
|||
|
|
@ -462,6 +462,13 @@ spec:
|
|||
type: string
|
||||
standby_port:
|
||||
type: string
|
||||
oneOf:
|
||||
- required:
|
||||
- s3_wal_path
|
||||
- required:
|
||||
- gs_wal_path
|
||||
- required:
|
||||
- standby_host
|
||||
streams:
|
||||
type: array
|
||||
nullable: true
|
||||
|
|
|
|||
|
|
@ -12,6 +12,6 @@ spec:
|
|||
version: "14"
|
||||
# Make this a standby cluster and provide either the s3 bucket path of source cluster or the remote primary host for continuous streaming.
|
||||
standby:
|
||||
s3_wal_path: "s3://path/to/bucket/containing/wal/of/source/cluster/"
|
||||
# standby_host: ""
|
||||
# standby_port: ""
|
||||
s3_wal_path: " s3://mybucket/spilo/acid-minimal-cluster/abcd1234-2a4b-4b2a-8c9c-c1234defg567/wal/14/"
|
||||
# standby_host: "acid-minimal-cluster.default"
|
||||
# standby_port: "5432"
|
||||
|
|
|
|||
|
|
@ -721,6 +721,11 @@ var PostgresCRDResourceValidation = apiextv1.CustomResourceValidation{
|
|||
Type: "string",
|
||||
},
|
||||
},
|
||||
OneOf: []apiextv1.JSONSchemaProps{
|
||||
apiextv1.JSONSchemaProps{Required: []string{"s3_wal_path"}},
|
||||
apiextv1.JSONSchemaProps{Required: []string{"gs_wal_path"}},
|
||||
apiextv1.JSONSchemaProps{Required: []string{"standby_host"}},
|
||||
},
|
||||
},
|
||||
"streams": {
|
||||
Type: "array",
|
||||
|
|
|
|||
|
|
@ -762,7 +762,12 @@ func (c *Cluster) generatePodTemplate(
|
|||
}
|
||||
|
||||
// generatePodEnvVars generates environment variables for the Spilo Pod
|
||||
func (c *Cluster) generateSpiloPodEnvVars(uid types.UID, spiloConfiguration string, cloneDescription *acidv1.CloneDescription, standbyDescription *acidv1.StandbyDescription, customPodEnvVarsList []v1.EnvVar) []v1.EnvVar {
|
||||
func (c *Cluster) generateSpiloPodEnvVars(
|
||||
uid types.UID,
|
||||
spiloConfiguration string,
|
||||
cloneDescription *acidv1.CloneDescription,
|
||||
standbyDescription *acidv1.StandbyDescription,
|
||||
customPodEnvVarsList []v1.EnvVar) []v1.EnvVar {
|
||||
envVars := []v1.EnvVar{
|
||||
{
|
||||
Name: "SCOPE",
|
||||
|
|
@ -1111,12 +1116,6 @@ func (c *Cluster) generateStatefulSet(spec *acidv1.PostgresSpec) (*appsv1.Statef
|
|||
sort.Slice(customPodEnvVarsList,
|
||||
func(i, j int) bool { return customPodEnvVarsList[i].Name < customPodEnvVarsList[j].Name })
|
||||
|
||||
if spec.StandbyCluster != nil {
|
||||
if spec.StandbyCluster.S3WalPath == "" && spec.StandbyCluster.GSWalPath == "" && spec.StandbyCluster.StandbyHost == "" {
|
||||
return nil, fmt.Errorf("s3_wal_path, gs_wal_path and standby_host are empty for standby cluster")
|
||||
}
|
||||
}
|
||||
|
||||
// backward compatible check for InitContainers
|
||||
if spec.InitContainersOld != nil {
|
||||
msg := "manifest parameter init_containers is deprecated."
|
||||
|
|
|
|||
Loading…
Reference in New Issue