Skip to content

Commit 5a53a69

Browse files
authored
Merge pull request #617 from aaannz/use_tmp_tls_volume_migration
Migrate TLS certificates from the 4.3
2 parents 7b349ac + d6746cd commit 5a53a69

4 files changed

Lines changed: 27 additions & 15 deletions

File tree

mgradm/shared/podman/podman.go

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -371,10 +371,6 @@ func Upgrade(
371371
}
372372

373373
if newPgVersion > oldPgVersion {
374-
log.Info().Msgf(
375-
L("Previous PostgreSQL is %[1]s, instead new one is %[2]s. Performing a DB version upgrade…"),
376-
oldPgVersion, newPgVersion,
377-
)
378374
if err := RunPgsqlVersionUpgrade(
379375
authFile, registry, image, upgradeImage, strconv.Itoa(oldPgVersion),
380376
strconv.Itoa(newPgVersion),
@@ -564,7 +560,7 @@ func Migrate(
564560
log.Info().Msgf(L("Configuring split PostgreSQL container. Image version: %[1]d, not migrated version: %[2]d"),
565561
newPgVersion, oldPgVersion)
566562

567-
if err := upgradeDB(newPgVersion, oldPgVersion, upgradeImage, authFile, registry, pgsqlFlags.Image); err != nil {
563+
if err := upgradeDB(newPgVersion, oldPgVersion, upgradeImage, authFile, registry, image); err != nil {
568564
return err
569565
}
570566

@@ -573,6 +569,11 @@ func Migrate(
573569
return utils.Errorf(err, L("cannot configure db container"))
574570
}
575571

572+
// At this point we should have all certificates in the secrets form, we can remove temporary volume
573+
if err := podman.DeleteVolume(utils.EtcTLSTmpVolumeMount.Name, false); err != nil {
574+
log.Warn().Err(err).Msg(L("cannot remove temporary etc-tls volume"))
575+
}
576+
576577
if err := pgsql.Upgrade(preparedPgsqlImage, systemd); err != nil {
577578
return err
578579
}
@@ -678,7 +679,7 @@ func RunPgsqlContainerMigration(serverImage string, dbHost string, reportDBHost
678679
"-v", scriptDir + ":" + scriptDir,
679680
"--security-opt", "label=disable",
680681
}
681-
err = podman.RunContainer("uyuni-db-migrate", serverImage, utils.ServerMigrationVolumeMounts, podmanArgs,
682+
err = podman.RunContainer("uyuni-db-migrate", serverImage, utils.DatabaseMigrationVolumeMounts, podmanArgs,
682683
[]string{scriptPath})
683684

684685
return err
@@ -690,7 +691,7 @@ func RunConfigPgsl(pgsqlImage string) error {
690691
"--security-opt", "label=disable",
691692
"--entrypoint", "/docker-entrypoint-initdb.d/uyuni-postgres-config.sh",
692693
}
693-
if err := podman.RunContainer("uyuni-db-config", pgsqlImage, utils.ServerMigrationVolumeMounts,
694+
if err := podman.RunContainer("uyuni-db-config", pgsqlImage, utils.PgsqlRequiredVolumeMounts,
694695
podmanArgs, []string{}); err != nil {
695696
return err
696697
}
@@ -792,15 +793,11 @@ func upgradeDB(
792793
upgradeImage types.ImageFlags,
793794
authFile string,
794795
registry string,
795-
dbImage types.ImageFlags,
796+
image types.ImageFlags,
796797
) error {
797798
if newPgVersion > oldPgVersion {
798-
log.Info().Msgf(
799-
L("Previous PostgreSQL is %[1]s, instead new one is %[2]s. Performing a DB version upgrade…"),
800-
oldPgVersion, newPgVersion,
801-
)
802799
if err := RunPgsqlVersionUpgrade(
803-
authFile, registry, dbImage, upgradeImage, strconv.Itoa(oldPgVersion),
800+
authFile, registry, image, upgradeImage, strconv.Itoa(oldPgVersion),
804801
strconv.Itoa(newPgVersion),
805802
); err != nil {
806803
return utils.Error(err, L("cannot run PostgreSQL version upgrade script"))

mgradm/shared/utils/exec.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,15 @@ func GenerateMigrationScript(
123123
return "", nil, err
124124
}
125125

126+
// For podman we want to backup tls certificates to the temporary volume we
127+
// later use when creating secrets.
128+
volumes := append(utils.ServerVolumeMounts, utils.VarPgsqlDataVolumeMount)
129+
if !kubernetes {
130+
volumes = append(volumes, utils.EtcTLSTmpVolumeMount)
131+
}
132+
126133
data := templates.MigrateScriptTemplateData{
127-
Volumes: append(utils.ServerVolumeMounts, utils.VarPgsqlDataVolumeMount),
134+
Volumes: volumes,
128135
SourceFqdn: sourceFqdn,
129136
User: user,
130137
Kubernetes: kubernetes,

shared/utils/volumes.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ var PgsqlRequiredVolumeMounts = []types.VolumeMount{
2323
// CaCertVolumeMount represents volume for CA certificates.
2424
var CaCertVolumeMount = types.VolumeMount{MountPath: "/etc/pki/trust/anchors/", Name: "ca-cert"}
2525

26+
// EtcTLSTmpVolumeMount represents temporary volume for SSL certificates.
27+
var EtcTLSTmpVolumeMount = types.VolumeMount{MountPath: "/etc/pki/tls/", Name: "etc-tls", Size: "1Mi"}
28+
2629
// ServerVolumeMounts should match the volumes mapping from the container definition in both
2730
// the helm chart and the systemctl services definitions.
2831
var ServerVolumeMounts = []types.VolumeMount{
@@ -55,7 +58,10 @@ var ServerVolumeMounts = []types.VolumeMount{
5558
}
5659

5760
// ServerMigrationVolumeMounts match server + postgres volume mounts, used for migration.
58-
var ServerMigrationVolumeMounts = append(ServerVolumeMounts, VarPgsqlDataVolumeMount, EtcRhnVolumeMount)
61+
var ServerMigrationVolumeMounts = append(ServerVolumeMounts, VarPgsqlDataVolumeMount, EtcTLSTmpVolumeMount)
62+
63+
// DatabaseMigrationVolumeMounts match database + etc/rhn volume mounts, used for database migration.
64+
var DatabaseMigrationVolumeMounts = []types.VolumeMount{EtcRhnVolumeMount, VarPgsqlDataVolumeMount}
5965

6066
// SalineVolumeMounts represents volumes used by Saline container.
6167
var SalineVolumeMounts = []types.VolumeMount{
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- migrate existing TLS certificates from 4.3 systems
2+
(bsc#1244847)

0 commit comments

Comments
 (0)