mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-12 11:04:25 +00:00
fbe0f311f2
* feat: comprehensive sentry instrumentation * test: pass * fix: only fetch zitadel dsn in zitadel-operator * chore: use dns for sentry environment as soon as parsed * fix: trust ca certs * ci: update orbos * docs: add usage data explanation * fix: dont send validation errors * docs: improve ingestion data explanation * style: rename flag --disable-ingestion to --disable-analytics * fix: pass --disable-analytics flag to self deployments * fix: destroy command for sentry * fix: update orbos * fix: only switch environment if analytics is enabled * fix: ensure SENTRY_DSN is always set * test: test empty sentry dsn * ci: invalidate build caches * chore: use zitadel-dev if no version is passed * chore: combine dev releases in sentry * refactor: only check for semrel if sentry is enabled
81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package crtlcrd
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"k8s.io/apimachinery/pkg/runtime"
|
|
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
|
ctrl "sigs.k8s.io/controller-runtime"
|
|
|
|
"github.com/caos/orbos/mntr"
|
|
"github.com/caos/orbos/pkg/kubernetes"
|
|
|
|
databasev1 "github.com/caos/zitadel/operator/api/database/v1"
|
|
zitadelv1 "github.com/caos/zitadel/operator/api/zitadel/v1"
|
|
"github.com/caos/zitadel/operator/crtlcrd/database"
|
|
"github.com/caos/zitadel/operator/crtlcrd/zitadel"
|
|
)
|
|
|
|
const (
|
|
Database = "database"
|
|
Zitadel = "zitadel"
|
|
)
|
|
|
|
var (
|
|
scheme = runtime.NewScheme()
|
|
)
|
|
|
|
func init() {
|
|
_ = clientgoscheme.AddToScheme(scheme)
|
|
|
|
_ = databasev1.AddToScheme(scheme)
|
|
_ = zitadelv1.AddToScheme(scheme)
|
|
}
|
|
|
|
func Start(monitor mntr.Monitor, version, metricsAddr string, features ...string) error {
|
|
cfg := ctrl.GetConfigOrDie()
|
|
mgr, err := ctrl.NewManager(cfg, ctrl.Options{
|
|
Scheme: scheme,
|
|
MetricsBindAddress: metricsAddr,
|
|
Port: 9443,
|
|
LeaderElection: false,
|
|
LeaderElectionID: "9adsd12l.caos.ch",
|
|
})
|
|
if err != nil {
|
|
return fmt.Errorf("unable to start manager: %w", err)
|
|
}
|
|
|
|
k8sClient, err := kubernetes.NewK8sClientWithConfig(monitor, cfg)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
for _, feature := range features {
|
|
switch feature {
|
|
case Database:
|
|
if err = (&database.Reconciler{
|
|
ClientInt: k8sClient,
|
|
Monitor: monitor,
|
|
Scheme: mgr.GetScheme(),
|
|
Version: version,
|
|
}).SetupWithManager(mgr); err != nil {
|
|
return fmt.Errorf("unable to create controller: %w", err)
|
|
}
|
|
case Zitadel:
|
|
if err = (&zitadel.Reconciler{
|
|
ClientInt: k8sClient,
|
|
Monitor: monitor,
|
|
Scheme: mgr.GetScheme(),
|
|
Version: version,
|
|
}).SetupWithManager(mgr); err != nil {
|
|
return fmt.Errorf("unable to create controller: %w", err)
|
|
}
|
|
}
|
|
}
|
|
|
|
if err := mgr.Start(ctrl.SetupSignalHandler()); err != nil {
|
|
return fmt.Errorf("problem running manager: %w", err)
|
|
}
|
|
return nil
|
|
}
|