Skip to content

Commit 293bfa9

Browse files
authored
Allow inplace version upgrades (#302)
* Allow inplace version upgrades * Added missing svc-cluster-values.yaml with the updated images
1 parent 5fa1af4 commit 293bfa9

File tree

4 files changed

+46
-28
lines changed

4 files changed

+46
-28
lines changed

api/v1/postgres_types.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -658,7 +658,8 @@ func setSharedBufferSize(parameters map[string]string, shmSize string) {
658658

659659
// enableAuditLogs configures this postgres instances audit logging
660660
func enableAuditLogs(parameters map[string]string) {
661-
parameters["shared_preload_libraries"] = "pgaudit"
661+
// default values: bg_mon,pg_stat_statements,pgextwlist,pg_auth_mon,set_user,timescaledb,pg_cron,pg_stat_kcache
662+
parameters["shared_preload_libraries"] = "bg_mon,pg_stat_statements,pgextwlist,pg_auth_mon,set_user,timescaledb,pg_cron,pg_stat_kcache,pgaudit"
662663
parameters["pgaudit.log_catalog"] = "off"
663664
parameters["pgaudit.log"] = "ddl"
664665
parameters["pgaudit.log_relation"] = "on"

main.go

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,22 +35,23 @@ import (
3535

3636
const (
3737
// envPrefix = "pg"
38-
metricsAddrSvcMgrFlg = "metrics-addr-svc-mgr"
39-
metricsAddrCtrlMgrFlg = "metrics-addr-ctrl-mgr"
40-
enableLeaderElectionFlg = "enable-leader-election"
41-
partitionIDFlg = "partition-id"
42-
tenantFlg = "tenant"
43-
ctrlPlaneKubeConfifgFlg = "controlplane-kubeconfig"
44-
loadBalancerIPFlg = "load-balancer-ip"
45-
portRangeStartFlg = "port-range-start"
46-
portRangeSizeFlg = "port-range-size"
47-
customPSPNameFlg = "custom-psp-name"
48-
storageClassFlg = "storage-class"
49-
postgresImageFlg = "postgres-image"
50-
etcdHostFlg = "etcd-host"
51-
crdValidationFlg = "enable-crd-validation"
52-
operatorImageFlg = "operator-image"
53-
pgParamBlockListFlg = "postgres-param-blocklist"
38+
metricsAddrSvcMgrFlg = "metrics-addr-svc-mgr"
39+
metricsAddrCtrlMgrFlg = "metrics-addr-ctrl-mgr"
40+
enableLeaderElectionFlg = "enable-leader-election"
41+
partitionIDFlg = "partition-id"
42+
tenantFlg = "tenant"
43+
ctrlPlaneKubeConfifgFlg = "controlplane-kubeconfig"
44+
loadBalancerIPFlg = "load-balancer-ip"
45+
portRangeStartFlg = "port-range-start"
46+
portRangeSizeFlg = "port-range-size"
47+
customPSPNameFlg = "custom-psp-name"
48+
storageClassFlg = "storage-class"
49+
postgresImageFlg = "postgres-image"
50+
etcdHostFlg = "etcd-host"
51+
crdValidationFlg = "enable-crd-validation"
52+
operatorImageFlg = "operator-image"
53+
pgParamBlockListFlg = "postgres-param-blocklist"
54+
majorVersionUpgradeModeFlg = "major-version-upgrade-mode"
5455
)
5556

5657
var (
@@ -69,7 +70,7 @@ func init() {
6970
}
7071

7172
func main() {
72-
var metricsAddrCtrlMgr, metricsAddrSvcMgr, partitionID, tenant, ctrlClusterKubeconfig, pspName, lbIP, storageClass, postgresImage, etcdHost, operatorImage string
73+
var metricsAddrCtrlMgr, metricsAddrSvcMgr, partitionID, tenant, ctrlClusterKubeconfig, pspName, lbIP, storageClass, postgresImage, etcdHost, operatorImage, majorVersionUpgradeMode string
7374
var enableLeaderElection, enableCRDValidation bool
7475
var portRangeStart, portRangeSize int
7576
var pgParamBlockList map[string]bool
@@ -133,6 +134,9 @@ func main() {
133134
pgParamBlockList[blockedParam] = true
134135
}
135136

137+
viper.SetDefault(majorVersionUpgradeModeFlg, "manual")
138+
majorVersionUpgradeMode = viper.GetString(majorVersionUpgradeModeFlg)
139+
136140
ctrl.SetLogger(zap.New(zap.UseDevMode(true)))
137141

138142
ctrl.Log.Info("flag",
@@ -152,6 +156,7 @@ func main() {
152156
etcdHostFlg, etcdHost,
153157
crdValidationFlg, enableCRDValidation,
154158
pgParamBlockListFlg, pgParamBlockList,
159+
majorVersionUpgradeModeFlg, majorVersionUpgradeMode,
155160
)
156161

157162
svcClusterConf := ctrl.GetConfigOrDie()
@@ -185,11 +190,12 @@ func main() {
185190
}
186191

187192
var opMgrOpts operatormanager.Options = operatormanager.Options{
188-
PspName: pspName,
189-
OperatorImage: operatorImage,
190-
DockerImage: postgresImage,
191-
EtcdHost: etcdHost,
192-
CRDValidation: enableCRDValidation,
193+
PspName: pspName,
194+
OperatorImage: operatorImage,
195+
DockerImage: postgresImage,
196+
EtcdHost: etcdHost,
197+
CRDValidation: enableCRDValidation,
198+
MajorVersionUpgradeMode: majorVersionUpgradeMode,
193199
}
194200
opMgr, err := operatormanager.New(svcClusterConf, "external/svc-postgres-operator.yaml", scheme, ctrl.Log.WithName("OperatorManager"), opMgrOpts)
195201
if err != nil {

pkg/operatormanager/operatormanager.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,12 @@ var operatorPodMatchingLabels = client.MatchingLabels{operatorPodLabelName: oper
6060

6161
// Options
6262
type Options struct {
63-
PspName string
64-
OperatorImage string
65-
DockerImage string
66-
EtcdHost string
67-
CRDValidation bool
63+
PspName string
64+
OperatorImage string
65+
DockerImage string
66+
EtcdHost string
67+
CRDValidation bool
68+
MajorVersionUpgradeMode string
6869
}
6970

7071
// OperatorManager manages the operator
@@ -415,6 +416,7 @@ func (m *OperatorManager) editConfigMap(cm *corev1.ConfigMap, namespace string,
415416
}
416417

417418
cm.Data["enable_crd_validation"] = strconv.FormatBool(options.CRDValidation)
419+
cm.Data["major_version_upgrade_mode"] = options.MajorVersionUpgradeMode
418420
}
419421

420422
// ensureCleanMetadata ensures obj has clean metadata

svc-cluster-values.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
image:
2+
tag: "latest"
3+
pullPolicy: "Never" # we test unreleased images here, so download would fail anyway
4+
postgreslet:
5+
storageClass: "" # kind cluster does not have our default storage class installed
6+
enableCrdValidation: false # required for the custom operator crd
7+
operatorImage: "ermajn/postgres-operator:v1.7.0-1-g711648b-dirty"
8+
postgresImage: "cybertecpostgresql/spilo:2.1-p1_de-sync-standby-cluster_0.3.1"
9+
addRandomLabel: true # changes the manifest with each update, in turn forcing a rolling update even when using the 'latest' image

0 commit comments

Comments
 (0)