Skip to content

Commit

Permalink
Allow inplace version upgrades (#302)
Browse files Browse the repository at this point in the history
* Allow inplace version upgrades

* Added missing svc-cluster-values.yaml with the updated images
  • Loading branch information
eberlep authored Dec 1, 2021
1 parent 5fa1af4 commit 293bfa9
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 28 deletions.
3 changes: 2 additions & 1 deletion api/v1/postgres_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,8 @@ func setSharedBufferSize(parameters map[string]string, shmSize string) {

// enableAuditLogs configures this postgres instances audit logging
func enableAuditLogs(parameters map[string]string) {
parameters["shared_preload_libraries"] = "pgaudit"
// default values: bg_mon,pg_stat_statements,pgextwlist,pg_auth_mon,set_user,timescaledb,pg_cron,pg_stat_kcache
parameters["shared_preload_libraries"] = "bg_mon,pg_stat_statements,pgextwlist,pg_auth_mon,set_user,timescaledb,pg_cron,pg_stat_kcache,pgaudit"
parameters["pgaudit.log_catalog"] = "off"
parameters["pgaudit.log"] = "ddl"
parameters["pgaudit.log_relation"] = "on"
Expand Down
50 changes: 28 additions & 22 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,22 +35,23 @@ import (

const (
// envPrefix = "pg"
metricsAddrSvcMgrFlg = "metrics-addr-svc-mgr"
metricsAddrCtrlMgrFlg = "metrics-addr-ctrl-mgr"
enableLeaderElectionFlg = "enable-leader-election"
partitionIDFlg = "partition-id"
tenantFlg = "tenant"
ctrlPlaneKubeConfifgFlg = "controlplane-kubeconfig"
loadBalancerIPFlg = "load-balancer-ip"
portRangeStartFlg = "port-range-start"
portRangeSizeFlg = "port-range-size"
customPSPNameFlg = "custom-psp-name"
storageClassFlg = "storage-class"
postgresImageFlg = "postgres-image"
etcdHostFlg = "etcd-host"
crdValidationFlg = "enable-crd-validation"
operatorImageFlg = "operator-image"
pgParamBlockListFlg = "postgres-param-blocklist"
metricsAddrSvcMgrFlg = "metrics-addr-svc-mgr"
metricsAddrCtrlMgrFlg = "metrics-addr-ctrl-mgr"
enableLeaderElectionFlg = "enable-leader-election"
partitionIDFlg = "partition-id"
tenantFlg = "tenant"
ctrlPlaneKubeConfifgFlg = "controlplane-kubeconfig"
loadBalancerIPFlg = "load-balancer-ip"
portRangeStartFlg = "port-range-start"
portRangeSizeFlg = "port-range-size"
customPSPNameFlg = "custom-psp-name"
storageClassFlg = "storage-class"
postgresImageFlg = "postgres-image"
etcdHostFlg = "etcd-host"
crdValidationFlg = "enable-crd-validation"
operatorImageFlg = "operator-image"
pgParamBlockListFlg = "postgres-param-blocklist"
majorVersionUpgradeModeFlg = "major-version-upgrade-mode"
)

var (
Expand All @@ -69,7 +70,7 @@ func init() {
}

func main() {
var metricsAddrCtrlMgr, metricsAddrSvcMgr, partitionID, tenant, ctrlClusterKubeconfig, pspName, lbIP, storageClass, postgresImage, etcdHost, operatorImage string
var metricsAddrCtrlMgr, metricsAddrSvcMgr, partitionID, tenant, ctrlClusterKubeconfig, pspName, lbIP, storageClass, postgresImage, etcdHost, operatorImage, majorVersionUpgradeMode string
var enableLeaderElection, enableCRDValidation bool
var portRangeStart, portRangeSize int
var pgParamBlockList map[string]bool
Expand Down Expand Up @@ -133,6 +134,9 @@ func main() {
pgParamBlockList[blockedParam] = true
}

viper.SetDefault(majorVersionUpgradeModeFlg, "manual")
majorVersionUpgradeMode = viper.GetString(majorVersionUpgradeModeFlg)

ctrl.SetLogger(zap.New(zap.UseDevMode(true)))

ctrl.Log.Info("flag",
Expand All @@ -152,6 +156,7 @@ func main() {
etcdHostFlg, etcdHost,
crdValidationFlg, enableCRDValidation,
pgParamBlockListFlg, pgParamBlockList,
majorVersionUpgradeModeFlg, majorVersionUpgradeMode,
)

svcClusterConf := ctrl.GetConfigOrDie()
Expand Down Expand Up @@ -185,11 +190,12 @@ func main() {
}

var opMgrOpts operatormanager.Options = operatormanager.Options{
PspName: pspName,
OperatorImage: operatorImage,
DockerImage: postgresImage,
EtcdHost: etcdHost,
CRDValidation: enableCRDValidation,
PspName: pspName,
OperatorImage: operatorImage,
DockerImage: postgresImage,
EtcdHost: etcdHost,
CRDValidation: enableCRDValidation,
MajorVersionUpgradeMode: majorVersionUpgradeMode,
}
opMgr, err := operatormanager.New(svcClusterConf, "external/svc-postgres-operator.yaml", scheme, ctrl.Log.WithName("OperatorManager"), opMgrOpts)
if err != nil {
Expand Down
12 changes: 7 additions & 5 deletions pkg/operatormanager/operatormanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,12 @@ var operatorPodMatchingLabels = client.MatchingLabels{operatorPodLabelName: oper

// Options
type Options struct {
PspName string
OperatorImage string
DockerImage string
EtcdHost string
CRDValidation bool
PspName string
OperatorImage string
DockerImage string
EtcdHost string
CRDValidation bool
MajorVersionUpgradeMode string
}

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

cm.Data["enable_crd_validation"] = strconv.FormatBool(options.CRDValidation)
cm.Data["major_version_upgrade_mode"] = options.MajorVersionUpgradeMode
}

// ensureCleanMetadata ensures obj has clean metadata
Expand Down
9 changes: 9 additions & 0 deletions svc-cluster-values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
image:
tag: "latest"
pullPolicy: "Never" # we test unreleased images here, so download would fail anyway
postgreslet:
storageClass: "" # kind cluster does not have our default storage class installed
enableCrdValidation: false # required for the custom operator crd
operatorImage: "ermajn/postgres-operator:v1.7.0-1-g711648b-dirty"
postgresImage: "cybertecpostgresql/spilo:2.1-p1_de-sync-standby-cluster_0.3.1"
addRandomLabel: true # changes the manifest with each update, in turn forcing a rolling update even when using the 'latest' image

0 comments on commit 293bfa9

Please sign in to comment.