mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 14:37:34 +00:00
feat(crdb): use crdb native backup and s3 backup added (#1915)
* fix(zitadelctl): implement takedown command * fix(zitadelctl): correct destroy flow * fix(zitadelctl): correct backup commands to read crds beforehand * fix: add of destroyfile * fix: clean for userlist * fix: change backup and restore to crdb native * fix: timeout for delete pvc for cockroachdb * fix: corrected unit tests * fix: add ignored file for scale * fix: correct handling of gitops in backup command * feat: add s3 backup kind * fix: backuplist for s3 and timeout for pv deletion * fix(database): fix nil pointer with binary version * fix(database): cleanup of errors which cam with merging of the s3 logic * fix: correct unit tests * fix: cleanup monitor output Co-authored-by: Elio Bischof <eliobischof@gmail.com> * fix: backup imagepullpolixy to ifnotpresent Co-authored-by: Elio Bischof <eliobischof@gmail.com>
This commit is contained in:
@@ -6,7 +6,7 @@ import (
|
||||
"github.com/caos/orbos/pkg/kubernetes"
|
||||
"github.com/caos/orbos/pkg/tree"
|
||||
"github.com/caos/zitadel/operator/api/database"
|
||||
"github.com/caos/zitadel/operator/database/kinds/databases/core"
|
||||
"github.com/caos/zitadel/operator/database/kinds/databases/managed"
|
||||
orbdb "github.com/caos/zitadel/operator/database/kinds/orb"
|
||||
)
|
||||
|
||||
@@ -14,51 +14,42 @@ func GitOpsClear(
|
||||
monitor mntr.Monitor,
|
||||
k8sClient kubernetes.ClientInt,
|
||||
gitClient *git.Client,
|
||||
databases []string,
|
||||
users []string,
|
||||
) error {
|
||||
desired, err := gitClient.ReadTree(git.DatabaseFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return clear(monitor, k8sClient, databases, users, desired)
|
||||
return clear(monitor, k8sClient, desired, true)
|
||||
}
|
||||
|
||||
func CrdClear(
|
||||
monitor mntr.Monitor,
|
||||
k8sClient kubernetes.ClientInt,
|
||||
databases []string,
|
||||
users []string,
|
||||
) error {
|
||||
desired, err := database.ReadCrd(k8sClient)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return clear(monitor, k8sClient, databases, users, desired)
|
||||
return clear(monitor, k8sClient, desired, false)
|
||||
}
|
||||
|
||||
func clear(
|
||||
monitor mntr.Monitor,
|
||||
k8sClient kubernetes.ClientInt,
|
||||
databases []string,
|
||||
users []string,
|
||||
desired *tree.Tree,
|
||||
gitops bool,
|
||||
) error {
|
||||
current := &tree.Tree{}
|
||||
|
||||
query, _, _, _, _, _, err := orbdb.AdaptFunc("", nil, false, "clean")(monitor, desired, current)
|
||||
query, _, _, _, _, _, err := orbdb.AdaptFunc("", nil, gitops, managed.Clean)(monitor, desired, current)
|
||||
if err != nil {
|
||||
monitor.Error(err)
|
||||
return err
|
||||
}
|
||||
queried := map[string]interface{}{}
|
||||
core.SetQueriedForDatabaseDBList(queried, databases, users)
|
||||
|
||||
ensure, err := query(k8sClient, queried)
|
||||
if err != nil {
|
||||
monitor.Error(err)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@@ -6,7 +6,6 @@ import (
|
||||
"github.com/caos/orbos/pkg/kubernetes"
|
||||
"github.com/caos/orbos/pkg/tree"
|
||||
"github.com/caos/zitadel/operator/api/database"
|
||||
"github.com/caos/zitadel/operator/database/kinds/databases/core"
|
||||
orbdb "github.com/caos/zitadel/operator/database/kinds/orb"
|
||||
)
|
||||
|
||||
@@ -15,26 +14,24 @@ func GitOpsRestore(
|
||||
k8sClient kubernetes.ClientInt,
|
||||
gitClient *git.Client,
|
||||
name string,
|
||||
databases []string,
|
||||
) error {
|
||||
desired, err := gitClient.ReadTree(git.DatabaseFile)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return restore(monitor, k8sClient, desired, name, databases)
|
||||
return restore(monitor, k8sClient, desired, name)
|
||||
}
|
||||
|
||||
func CrdRestore(
|
||||
monitor mntr.Monitor,
|
||||
k8sClient kubernetes.ClientInt,
|
||||
name string,
|
||||
databases []string,
|
||||
) error {
|
||||
desired, err := database.ReadCrd(k8sClient)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return restore(monitor, k8sClient, desired, name, databases)
|
||||
return restore(monitor, k8sClient, desired, name)
|
||||
}
|
||||
|
||||
func restore(
|
||||
@@ -42,7 +39,6 @@ func restore(
|
||||
k8sClient kubernetes.ClientInt,
|
||||
desired *tree.Tree,
|
||||
name string,
|
||||
databases []string,
|
||||
) error {
|
||||
current := &tree.Tree{}
|
||||
|
||||
@@ -52,8 +48,6 @@ func restore(
|
||||
return err
|
||||
}
|
||||
queried := map[string]interface{}{}
|
||||
core.SetQueriedForDatabaseDBList(queried, databases, []string{})
|
||||
|
||||
ensure, err := query(k8sClient, queried)
|
||||
if err != nil {
|
||||
monitor.Error(err)
|
||||
|
@@ -354,7 +354,7 @@ func DestroyZitadelOperator(
|
||||
|
||||
func ScaleZitadelOperator(
|
||||
monitor mntr.Monitor,
|
||||
client *kubernetes.Client,
|
||||
client kubernetes.ClientInt,
|
||||
replicaCount int,
|
||||
) error {
|
||||
monitor.Debug("Scaling zitadel-operator")
|
||||
@@ -363,7 +363,7 @@ func ScaleZitadelOperator(
|
||||
|
||||
func ScaleDatabaseOperator(
|
||||
monitor mntr.Monitor,
|
||||
client *kubernetes.Client,
|
||||
client kubernetes.ClientInt,
|
||||
replicaCount int,
|
||||
) error {
|
||||
monitor.Debug("Scaling database-operator")
|
||||
|
@@ -1,105 +0,0 @@
|
||||
package zitadel
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/caos/orbos/mntr"
|
||||
"github.com/caos/orbos/pkg/git"
|
||||
"github.com/caos/orbos/pkg/kubernetes"
|
||||
orbconfig "github.com/caos/orbos/pkg/orb"
|
||||
"github.com/caos/zitadel/pkg/databases"
|
||||
kubernetes2 "github.com/caos/zitadel/pkg/kubernetes"
|
||||
)
|
||||
|
||||
var (
|
||||
databasesList = []string{
|
||||
"notification",
|
||||
"adminapi",
|
||||
"auth",
|
||||
"authz",
|
||||
"eventstore",
|
||||
"management",
|
||||
"zitadel",
|
||||
}
|
||||
userList = []string{
|
||||
"notification",
|
||||
"adminapi",
|
||||
"auth",
|
||||
"authz",
|
||||
"eventstore",
|
||||
"management",
|
||||
"queries",
|
||||
}
|
||||
)
|
||||
|
||||
func GitOpsClearMigrateRestore(
|
||||
monitor mntr.Monitor,
|
||||
gitClient *git.Client,
|
||||
orbCfg *orbconfig.Orb,
|
||||
k8sClient *kubernetes.Client,
|
||||
backup string,
|
||||
version *string,
|
||||
) error {
|
||||
|
||||
if err := kubernetes2.ScaleZitadelOperator(monitor, k8sClient, 0); err != nil {
|
||||
return err
|
||||
}
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
if err := GitOpsScaleDown(monitor, orbCfg, gitClient, k8sClient, version); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := databases.GitOpsClear(monitor, k8sClient, gitClient, databasesList, userList); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := GitOpsMigrations(monitor, orbCfg, gitClient, k8sClient, version); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := databases.GitOpsRestore(monitor, k8sClient, gitClient, backup, databasesList); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := kubernetes2.ScaleZitadelOperator(monitor, k8sClient, 1); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func CrdClearMigrateRestore(
|
||||
monitor mntr.Monitor,
|
||||
k8sClient *kubernetes.Client,
|
||||
backup string,
|
||||
version *string,
|
||||
) error {
|
||||
|
||||
if err := kubernetes2.ScaleZitadelOperator(monitor, k8sClient, 0); err != nil {
|
||||
return err
|
||||
}
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
if err := CrdScaleDown(monitor, k8sClient, version); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := databases.CrdClear(monitor, k8sClient, databasesList, userList); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := CrdMigrations(monitor, k8sClient, version); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := databases.CrdRestore(monitor, k8sClient, backup, databasesList); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := kubernetes2.ScaleZitadelOperator(monitor, k8sClient, 1); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user