@@ -383,7 +383,7 @@ def deep_update(a, b):
383383 threshold_megabytes: {{WALE_BACKUP_THRESHOLD_MEGABYTES}}
384384 threshold_backup_size_percentage: {{WALE_BACKUP_THRESHOLD_PERCENTAGE}}
385385 retries: 2
386- no_master : 1
386+ no_leader : 1
387387 {{/USE_WALE}}
388388 basebackup_fast_xlog:
389389 command: /scripts/basebackup.sh
@@ -394,8 +394,36 @@ def deep_update(a, b):
394394 threshold_megabytes: {{WALE_BACKUP_THRESHOLD_MEGABYTES}}
395395 threshold_backup_size_percentage: {{WALE_BACKUP_THRESHOLD_PERCENTAGE}}
396396 retries: 2
397- no_master : 1
397+ no_leader : 1
398398{{/STANDBY_WITH_WALE}}
399+ {{#USE_MULTISITE}}
400+ multisite:
401+ name: '{{MULTISITE_SITE}}-{{SCOPE}}'
402+ namespace: {{MULTISITE_NAMESPACE}}
403+ etcd3:
404+ hosts: {{MULTISITE_ETCD_HOSTS}}
405+ {{#MULTISITE_ETCD_USER}}
406+ username: {{MULTISITE_ETCD_USER}}
407+ {{/MULTISITE_ETCD_USER}}
408+ {{#MULTISITE_ETCD_PASSWORD}}
409+ password: {{MULTISITE_ETCD_PASSWORD}}
410+ {{/MULTISITE_ETCD_PASSWORD}}
411+ {{#MULTISITE_ETCD_PROTOCOL}}
412+ protocol: {{MULTISITE_ETCD_PROTOCOL}}
413+ {{/MULTISITE_ETCD_PROTOCOL}}
414+ host: {{EXTERNAL_HOST}}
415+ port: {{EXTERNAL_PORT}}
416+ ttl: {{MULTISITE_TTL}}
417+ retry_timeout: {{MULTISITE_RETRY_TIMEOUT}}
418+ {{#UPDATE_CRD}}
419+ update_crd: "{{UPDATE_CRD}}"
420+ crd_uid: {{CRD_UID}}
421+ crd_api: cpo.opensource.cybertec.at/v1
422+ {{/UPDATE_CRD}}
423+ {{/USE_MULTISITE}}
424+
425+ watchdog:
426+ mode: off
399427'''
400428
401429
@@ -717,6 +745,20 @@ def get_placeholders(provider):
717745 if placeholders .get ('SSL_RESTAPI_CA' ) and not placeholders ['SSL_RESTAPI_CA_FILE' ]:
718746 placeholders ['SSL_RESTAPI_CA_FILE' ] = os .path .join (placeholders ['RW_DIR' ], 'certs' , 'rest-api-ca.crt' )
719747
748+ placeholders .setdefault ('MULTISITE_SITE' , '' )
749+ placeholders .setdefault ('MULTISITE_ETCD_HOSTS' , '' )
750+ placeholders .setdefault ('MULTISITE_ETCD_USER' , '' )
751+ placeholders .setdefault ('MULTISITE_ETCD_PASSWORD' , '' )
752+ placeholders .setdefault ('MULTISITE_ETCD_PROTOCOL' , 'http' )
753+ placeholders .setdefault ('MULTISITE_TTL' , '90' )
754+ placeholders .setdefault ('MULTISITE_RETRY_TIMEOUT' , '40' )
755+ placeholders .setdefault ('EXTERNAL_HOST' , placeholders ['instance_data' ]['ip' ])
756+ placeholders .setdefault ('EXTERNAL_PORT' , placeholders ['PGPORT' ])
757+ placeholders .setdefault ('MULTISITE_NAMESPACE' , '/multisite/{}' .format (placeholders ['NAMESPACE' ]))
758+ placeholders .setdefault ('USE_MULTISITE' , placeholders ['MULTISITE_SITE' ] != '' )
759+ if placeholders ['USE_MULTISITE' ] and not placeholders ['MULTISITE_ETCD_HOSTS' ]:
760+ logging .warning ("etcd location not configured for multisite operation" )
761+
720762 return placeholders
721763
722764
@@ -751,6 +793,10 @@ def get_dcs_config(config, placeholders):
751793 kubernetes_labels = json .loads (KUBERNETES_DEFAULT_LABELS )
752794 config ['kubernetes' ]['labels' ] = kubernetes_labels
753795
796+ # Patroni 4 compatibility
797+ config ['kubernetes' ]['leader_label_value' ] = 'master'
798+ config ['kubernetes' ]['standby_leader_label_value' ] = 'master'
799+
754800 if not config ['kubernetes' ].pop ('use_configmaps' ):
755801 config ['kubernetes' ].update ({'use_endpoints' : True ,
756802 'pod_ip' : placeholders ['instance_data' ]['ip' ],
0 commit comments