enhance docs on env vars
This commit is contained in:
parent
602e914028
commit
4b833c2436
|
|
@ -601,15 +601,38 @@ spec:
|
|||
|
||||
## Custom Pod Environment Variables
|
||||
|
||||
It is possible to configure a ConfigMap as well as a Secret which are used by
|
||||
the Postgres pods as an additional provider for environment variables. One use
|
||||
case is a customized Spilo image configured by extra environment variables.
|
||||
Another case could be to provide custom cloud provider or backup settings.
|
||||
The operator will assign a set of environment variables to the database pods
|
||||
that cannot be overridden to guarantee core functionality. Only variables with
|
||||
'WAL_' and 'LOG_' prefixes can be customized, to allow backup and log shipping
|
||||
to be specified differently. There are three ways to specify extra environment
|
||||
variables (or override existing ones) for database pods:
|
||||
|
||||
In general the Operator will give preference to the globally configured
|
||||
variables, to not have the custom ones interfere with core functionality.
|
||||
Variables with the 'WAL_' and 'LOG_' prefix can be overwritten though, to
|
||||
allow backup and log shipping to be specified differently.
|
||||
* [Via ConfigMap](#via-configmap)
|
||||
* [Via Secret](#via-secret)
|
||||
* [Via Postgres Cluster Manifest](#via-postgres-cluster-manifest)
|
||||
|
||||
The first two options must be referenced from the operator configuration
|
||||
making them global settings for all Postgres cluster the operator watches.
|
||||
One use case is a customized Spilo image that must be configured by extra
|
||||
environment variables. Another case could be to provide custom cloud
|
||||
provider or backup settings.
|
||||
|
||||
The last options allows for specifying environment variables individual to
|
||||
every cluster via the `env` section in the manifest. For example, if you use
|
||||
individual backup locations for each of your clusters. Or you want to disable
|
||||
WAL archiving for a certain cluster by setting `WAL_S3_BUCKET`, `WAL_GS_BUCKET`
|
||||
or `AZURE_STORAGE_ACCOUNT` to an empty string.
|
||||
|
||||
The operator will give precendence to environment variables in the following
|
||||
order:
|
||||
|
||||
1. Assigned by the operator
|
||||
2. Clone section (with WAL settings from operator config when `s3_wal_path` is empty)
|
||||
3. Standby section
|
||||
4. `env` section in cluster manifest
|
||||
5. Pod environment secret via operator config
|
||||
6. Pod environment config map via operator config
|
||||
7. WAL and logical backup settings from operator config
|
||||
|
||||
### Via ConfigMap
|
||||
|
||||
|
|
@ -706,7 +729,7 @@ data:
|
|||
The key-value pairs of the Secret are all accessible as environment variables
|
||||
to the Postgres StatefulSet/pods.
|
||||
|
||||
### For individual cluster
|
||||
### Via Postgres Cluster Manifest
|
||||
|
||||
It is possible to define environment variables directly in the Postgres cluster
|
||||
manifest to configure it individually. The variables must be listed under the
|
||||
|
|
@ -951,6 +974,10 @@ When the `AWS_REGION` is set, `AWS_ENDPOINT` and `WALE_S3_ENDPOINT` are
|
|||
generated automatically. `WALG_S3_PREFIX` is identical to `WALE_S3_PREFIX`.
|
||||
`SCOPE` is the Postgres cluster name.
|
||||
|
||||
:warning: If both `AWS_REGION` and `AWS_ENDPOINT` or `WALE_S3_ENDPOINT` are
|
||||
defined, backups with WAL-E will fail. You can fix it by switching to WAL-G
|
||||
with `USE_WALG_BACKUP: "true"`.
|
||||
|
||||
### Google Cloud Platform setup
|
||||
|
||||
To configure the operator on GCP these prerequisites that are needed:
|
||||
|
|
|
|||
|
|
@ -645,7 +645,10 @@ yet officially supported.
|
|||
empty.
|
||||
|
||||
* **aws_region**
|
||||
AWS region used to store EBS volumes. The default is `eu-central-1`.
|
||||
AWS region used to store EBS volumes. The default is `eu-central-1`. Note,
|
||||
this option is not meant for specifying the AWS region for backups and
|
||||
restore, since it can be separate from the EBS region. You have to define
|
||||
AWS_REGION as a [custom environment variable](https://github.com/zalando/postgres-operator/blob/master/docs/administrator.md#custom-pod-environment-variables).
|
||||
|
||||
* **additional_secret_mount**
|
||||
Additional Secret (aws or gcp credentials) to mount in the pod.
|
||||
|
|
|
|||
32
docs/user.md
32
docs/user.md
|
|
@ -766,15 +766,16 @@ spec:
|
|||
uid: "efd12e58-5786-11e8-b5a7-06148230260c"
|
||||
cluster: "acid-minimal-cluster"
|
||||
timestamp: "2017-12-19T12:40:33+01:00"
|
||||
s3_wal_path: "s3://<bucketname>/spilo/<source_db_cluster>/<UID>/wal/<PGVERSION>"
|
||||
```
|
||||
|
||||
Here `cluster` is a name of a source cluster that is going to be cloned. A new
|
||||
cluster will be cloned from S3, using the latest backup before the `timestamp`.
|
||||
Note, that a time zone is required for `timestamp` in the format of +00:00 which
|
||||
is UTC. You can specify the `s3_wal_path` of the source cluster or let the
|
||||
operator try to find it based on the configured `wal_[s3|gs]_bucket` and the
|
||||
specified `uid`. You can find the UID of the source cluster in its metadata:
|
||||
Note, that a time zone is required for `timestamp` in the format of `+00:00`
|
||||
which is UTC.
|
||||
|
||||
The operator will try to find the WAL location based on the configured
|
||||
`wal_[s3|gs]_bucket` or `wal_az_storage_account` and the specified `uid`.
|
||||
You can find the UID of the source cluster in its metadata:
|
||||
|
||||
```yaml
|
||||
apiVersion: acid.zalan.do/v1
|
||||
|
|
@ -784,6 +785,14 @@ metadata:
|
|||
uid: efd12e58-5786-11e8-b5a7-06148230260c
|
||||
```
|
||||
|
||||
If your source cluster uses a WAL location different from the global
|
||||
configuration you can specify the full path under `s3_wal_path`. For
|
||||
[Google Cloud Plattform](administrator.md#google-cloud-platform-setup)
|
||||
or [Azure](administrator.md#azure-setup)
|
||||
it can only be set globally with [custom Pod environment variables](administrator.md#custom-pod-environment-variables)
|
||||
or locally in the Postgres manifest's [`env`]() section.
|
||||
|
||||
|
||||
For non AWS S3 following settings can be set to support cloning from other S3
|
||||
implementations:
|
||||
|
||||
|
|
@ -793,6 +802,7 @@ spec:
|
|||
uid: "efd12e58-5786-11e8-b5a7-06148230260c"
|
||||
cluster: "acid-minimal-cluster"
|
||||
timestamp: "2017-12-19T12:40:33+01:00"
|
||||
s3_wal_path: "s3://<bucketname>/spilo/<source_db_cluster>/<UID>/wal/<PGVERSION>"
|
||||
s3_endpoint: https://s3.acme.org
|
||||
s3_access_key_id: 0123456789abcdef0123456789abcdef
|
||||
s3_secret_access_key: 0123456789abcdef0123456789abcdef
|
||||
|
|
@ -864,9 +874,8 @@ the PostgreSQL version between source and target cluster has to be the same.
|
|||
|
||||
To start a cluster as standby, add the following `standby` section in the YAML
|
||||
file. You can stream changes from archived WAL files (AWS S3 or Google Cloud
|
||||
Storage) or from a remote primary where you specify the host address and port.
|
||||
If you leave out the port, Patroni will use `"5432"`. Only one option can be
|
||||
specfied in the manifest:
|
||||
Storage) or from a remote primary. Only one option can be specfied in the
|
||||
manifest:
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
|
|
@ -874,12 +883,19 @@ spec:
|
|||
s3_wal_path: "s3://<bucketname>/spilo/<source_db_cluster>/<UID>/wal/<PGVERSION>"
|
||||
```
|
||||
|
||||
For GCS, you have to define STANDBY_GOOGLE_APPLICATION_CREDENTIALS as a
|
||||
[custom pod environment variable](administrator.md#custom-pod-environment-variables).
|
||||
It is not set from the config to allow for overridding.
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
standby:
|
||||
gs_wal_path: "gs://<bucketname>/spilo/<source_db_cluster>/<UID>/wal/<PGVERSION>"
|
||||
```
|
||||
|
||||
For a remote primry you specify the host address and optionally the port.
|
||||
If you leave out the port Patroni will use `"5432"`.
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
standby:
|
||||
|
|
|
|||
|
|
@ -933,9 +933,6 @@ func (c *Cluster) generateSpiloPodEnvVars(
|
|||
|
||||
envVars = appendEnvVars(envVars, opConfigEnvVars...)
|
||||
|
||||
//sort.Slice(envVars,
|
||||
// func(i, j int) bool { return envVars[i].Name < envVars[j].Name })
|
||||
|
||||
return envVars
|
||||
}
|
||||
|
||||
|
|
@ -1863,7 +1860,6 @@ func (c *Cluster) generateCloneEnvironment(description *acidv1.CloneDescription)
|
|||
result = append(result, v1.EnvVar{Name: "CLONE_AZURE_STORAGE_ACCOUNT", Value: c.OpConfig.WALAZStorageAccount})
|
||||
} else {
|
||||
c.logger.Error("cannot figure out S3 or GS bucket or AZ storage account. All are empty in config.")
|
||||
return result
|
||||
}
|
||||
|
||||
// append suffix because WAL location name is not the whole path
|
||||
|
|
|
|||
Loading…
Reference in New Issue