Skip to content

Commit e91571f

Browse files
committed
reflect additional config parameters
2 parents ac2bc10 + 5f87384 commit e91571f

File tree

9 files changed

+85
-29
lines changed

9 files changed

+85
-29
lines changed

charts/postgres-operator/templates/customrresourcedefinition.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,6 +592,14 @@ spec:
592592
type: string
593593
logical_backup_s3_bucket:
594594
type: string
595+
logical_backup_s3_endpoint:
596+
type: string
597+
logical_backup_s3_sse:
598+
type: string
599+
logical_backup_s3_access_key_id:
600+
type: string
601+
logical_backup_s3_secret_access_key:
602+
type: string
595603
debug:
596604
type: object
597605
properties:

charts/postgres-operator/values-crd.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -186,20 +186,20 @@ configAwsOrGcp:
186186

187187
# configure K8s cron job managed by the operator
188188
configLogicalBackup:
189-
# backup schedule in the cron format
190-
logical_backup_schedule: "30 00 * * *"
191189
# image for pods of the logical backup job (example runs pg_dumpall)
192190
logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup"
191+
# S3 Access Key ID
192+
logical_backup_s3_access_key_id: ""
193193
# S3 bucket to store backup results
194194
logical_backup_s3_bucket: "my-bucket-url"
195-
# S3 server side encription to use
196-
logical_backup_s3_sse: "AES256"
197195
# S3 endpoint url when not using AWS
198196
logical_backup_s3_endpoint: ""
199-
# S3 Access Key ID
200-
logical_backup_s3_access_key_id: ""
201197
# S3 Secret Access Key
202198
logical_backup_s3_secret_access_key: ""
199+
# S3 server side encription
200+
logical_backup_s3_sse: "AES256"
201+
# backup schedule in the cron format
202+
logical_backup_schedule: "30 00 * * *"
203203

204204
# automate creation of human users with teams API service
205205
configTeamsApi:

charts/postgres-operator/values.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -180,20 +180,20 @@ configAwsOrGcp:
180180

181181
# configure K8s cron job managed by the operator
182182
configLogicalBackup:
183-
# backup schedule in the cron format
184-
logical_backup_schedule: "30 00 * * *"
185183
# image for pods of the logical backup job (example runs pg_dumpall)
186184
logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup"
185+
# S3 Access Key ID
186+
logical_backup_s3_access_key_id: ""
187187
# S3 bucket to store backup results
188188
logical_backup_s3_bucket: "my-bucket-url"
189-
# S3 server side encription
190-
logical_backup_s3_sse: "AES256"
191189
# S3 endpoint url when not using AWS
192190
logical_backup_s3_endpoint: ""
193-
# S3 Access Key ID
194-
logical_backup_s3_access_key_id: ""
195191
# S3 Secret Access Key
196192
logical_backup_s3_secret_access_key: ""
193+
# S3 server side encription
194+
logical_backup_s3_sse: "AES256"
195+
# backup schedule in the cron format
196+
logical_backup_schedule: "30 00 * * *"
197197

198198
# automate creation of human users with teams API service
199199
configTeamsApi:

manifests/operatorconfiguration.crd.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,14 @@ spec:
197197
type: string
198198
logical_backup_s3_bucket:
199199
type: string
200+
logical_backup_s3_endpoint:
201+
type: string
202+
logical_backup_s3_sse:
203+
type: string
204+
logical_backup_s3_access_key_id:
205+
type: string
206+
logical_backup_s3_secret_access_key:
207+
type: string
200208
debug:
201209
type: object
202210
properties:

manifests/postgresql-operator-default-configuration.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,13 @@ configuration:
7676
log_s3_bucket: ""
7777
wal_s3_bucket: ""
7878
logical_backup:
79-
logical_backup_schedule: "30 00 * * *"
8079
logical_backup_docker_image: "registry.opensource.zalan.do/acid/logical-backup"
80+
logical_backup_s3_access_key_id: ""
8181
logical_backup_s3_bucket: "my-bucket-url"
82+
logical_backup_s3_endpoint: ""
83+
logical_backup_s3_secret_access_key: ""
84+
logical_backup_s3_sse: "AES256"
85+
logical_backup_schedule: "30 00 * * *"
8286
debug:
8387
debug_logging: true
8488
enable_database_access: true

pkg/apis/acid.zalan.do/v1/crds.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,6 +868,18 @@ var OperatorConfigCRDResourceValidation = apiextv1beta1.CustomResourceValidation
868868
"logical_backup_s3_bucket": {
869869
Type: "string",
870870
},
871+
"logical_backup_s3_endpoint": {
872+
Type: "string",
873+
},
874+
"logical_backup_s3_sse": {
875+
Type: "string",
876+
},
877+
"logical_backup_s3_access_key_id": {
878+
Type: "string",
879+
},
880+
"logical_backup_s3_secret_access_key": {
881+
Type: "string",
882+
},
871883
},
872884
},
873885
"debug": {

pkg/cluster/k8sres.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,7 @@ func (c *Cluster) generateLogicalBackupPodEnvVars() []v1.EnvVar {
15801580
Value: c.OpConfig.LogicalBackup.LogicalBackupS3Endpoint,
15811581
},
15821582
{
1583-
Name: "AWS_SSE",
1583+
Name: "LOGICAL_BACKUP_S3_SSE",
15841584
Value: c.OpConfig.LogicalBackup.LogicalBackupS3SSE,
15851585
},
15861586
{

pkg/cluster/resources.go

Lines changed: 36 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import (
1313
"k8s.io/apimachinery/pkg/types"
1414

1515
"github.com/zalando/postgres-operator/pkg/util"
16-
"github.com/zalando/postgres-operator/pkg/util/constants"
1716
"github.com/zalando/postgres-operator/pkg/util/k8sutil"
1817
"github.com/zalando/postgres-operator/pkg/util/retryutil"
1918
)
@@ -278,19 +277,25 @@ func (c *Cluster) replaceStatefulSet(newStatefulSet *appsv1.StatefulSet) error {
278277
oldStatefulset := c.Statefulset
279278

280279
options := metav1.DeleteOptions{PropagationPolicy: &deletePropagationPolicy}
281-
if err := c.KubeClient.StatefulSets(oldStatefulset.Namespace).Delete(oldStatefulset.Name, &options); err != nil {
280+
err := c.KubeClient.StatefulSets(oldStatefulset.Namespace).Delete(oldStatefulset.Name, &options)
281+
if err != nil {
282282
return fmt.Errorf("could not delete statefulset %q: %v", statefulSetName, err)
283283
}
284284
// make sure we clear the stored statefulset status if the subsequent create fails.
285285
c.Statefulset = nil
286286
// wait until the statefulset is truly deleted
287287
c.logger.Debugf("waiting for the statefulset to be deleted")
288288

289-
err := retryutil.Retry(constants.StatefulsetDeletionInterval, constants.StatefulsetDeletionTimeout,
289+
err = retryutil.Retry(c.OpConfig.ResourceCheckInterval, c.OpConfig.ResourceCheckTimeout,
290290
func() (bool, error) {
291-
_, err := c.KubeClient.StatefulSets(oldStatefulset.Namespace).Get(oldStatefulset.Name, metav1.GetOptions{})
292-
293-
return err != nil, nil
291+
_, err2 := c.KubeClient.StatefulSets(oldStatefulset.Namespace).Get(oldStatefulset.Name, metav1.GetOptions{})
292+
if err2 == nil {
293+
return false, nil
294+
}
295+
if k8sutil.ResourceNotFound(err2) {
296+
return true, nil
297+
}
298+
return false, err2
294299
})
295300
if err != nil {
296301
return fmt.Errorf("could not delete statefulset: %v", err)
@@ -380,13 +385,27 @@ func (c *Cluster) updateService(role PostgresRole, newService *v1.Service) error
380385
return fmt.Errorf("could not delete service %q: %v", serviceName, err)
381386
}
382387

383-
c.Endpoints[role] = nil
384-
svc, err := c.KubeClient.Services(serviceName.Namespace).Create(newService)
388+
// wait until the service is truly deleted
389+
c.logger.Debugf("waiting for service to be deleted")
390+
391+
err = retryutil.Retry(c.OpConfig.ResourceCheckInterval, c.OpConfig.ResourceCheckTimeout,
392+
func() (bool, error) {
393+
_, err2 := c.KubeClient.Services(serviceName.Namespace).Get(serviceName.Name, metav1.GetOptions{})
394+
if err2 == nil {
395+
return false, nil
396+
}
397+
if k8sutil.ResourceNotFound(err2) {
398+
return true, nil
399+
}
400+
return false, err2
401+
})
385402
if err != nil {
386-
return fmt.Errorf("could not create service %q: %v", serviceName, err)
403+
return fmt.Errorf("could not delete service %q: %v", serviceName, err)
387404
}
388405

389-
c.Services[role] = svc
406+
// make sure we clear the stored service and endpoint status if the subsequent create fails.
407+
c.Services[role] = nil
408+
c.Endpoints[role] = nil
390409
if role == Master {
391410
// create the new endpoint using the addresses obtained from the previous one
392411
endpointSpec := c.generateEndpoint(role, currentEndpoint.Subsets)
@@ -398,6 +417,13 @@ func (c *Cluster) updateService(role PostgresRole, newService *v1.Service) error
398417
c.Endpoints[role] = ep
399418
}
400419

420+
svc, err := c.KubeClient.Services(serviceName.Namespace).Create(newService)
421+
if err != nil {
422+
return fmt.Errorf("could not create service %q: %v", serviceName, err)
423+
}
424+
425+
c.Services[role] = svc
426+
401427
return nil
402428
}
403429

pkg/util/constants/kubernetes.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import "time"
44

55
// General kubernetes-related constants
66
const (
7-
PostgresContainerName = "postgres"
8-
PostgresContainerIdx = 0
9-
K8sAPIPath = "/apis"
10-
StatefulsetDeletionInterval = 1 * time.Second
11-
StatefulsetDeletionTimeout = 30 * time.Second
7+
PostgresContainerName = "postgres"
8+
PostgresContainerIdx = 0
9+
K8sAPIPath = "/apis"
1210

1311
QueueResyncPeriodPod = 5 * time.Minute
1412
QueueResyncPeriodTPR = 5 * time.Minute

0 commit comments

Comments
 (0)