Skip to content

Commit dd70547

Browse files
authored
refactor(config): update configuration handling for initializers (#109)
• Introduces separate configuration structs for initializer and operator commands • Enhances clarity and maintainability of configuration management On-behalf-of: @SAP <[email protected]> Signed-off-by: Bastian Echterhölter <[email protected]>
1 parent 5546837 commit dd70547

File tree

6 files changed

+39
-28
lines changed

6 files changed

+39
-28
lines changed

Dockerfile

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@ FROM golang:1.25.2-bookworm AS builder
33
ARG TARGETOS
44
ARG TARGETARCH
55

6-
### BEGIN GHE Configurations ###
7-
ENV GOPRIVATE="github.com/platform-mesh"
8-
ENV GOSUMDB=off
9-
10-
RUN git config --global credential.helper store
11-
RUN --mount=type=secret,id=org_token echo "https://gha:$(cat /run/secrets/org_token)@github.com" > /root/.git-credentials
126
WORKDIR /workspace
137

148
# Copy the Go Modules manifests

cmd/initializer.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,16 @@ import (
1919
"sigs.k8s.io/controller-runtime/pkg/healthz"
2020
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
2121

22-
"github.com/platform-mesh/security-operator/internal/controller"
2322
mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager"
23+
24+
"github.com/platform-mesh/security-operator/internal/controller"
2425
)
2526

2627
var initializerCmd = &cobra.Command{
2728
Use: "initializer",
2829
Short: "FGA initializer for the organization workspacetype",
2930
RunE: func(cmd *cobra.Command, args []string) error {
30-
ctx, _, shutdown := pmcontext.StartContext(log, appCfg, defaultCfg.ShutdownTimeout)
31+
ctx, _, shutdown := pmcontext.StartContext(log, initializerCfg, defaultCfg.ShutdownTimeout)
3132
defer shutdown()
3233

3334
mgrCfg := ctrl.GetConfigOrDie()
@@ -57,7 +58,7 @@ var initializerCmd = &cobra.Command{
5758
}
5859

5960
provider, err := initializingworkspaces.New(mgrCfg, initializingworkspaces.Options{
60-
InitializerName: appCfg.InitializerName,
61+
InitializerName: initializerCfg.InitializerName,
6162
Scheme: mgrOpts.Scheme,
6263
})
6364
if err != nil {
@@ -93,11 +94,11 @@ var initializerCmd = &cobra.Command{
9394
os.Exit(1)
9495
}
9596

96-
if appCfg.IDP.AdditionalRedirectURLs == nil {
97-
appCfg.IDP.AdditionalRedirectURLs = []string{}
97+
if initializerCfg.IDP.AdditionalRedirectURLs == nil {
98+
initializerCfg.IDP.AdditionalRedirectURLs = []string{}
9899
}
99100

100-
if err := controller.NewLogicalClusterReconciler(log, orgClient, appCfg, inClusterClient, mgr).
101+
if err := controller.NewLogicalClusterReconciler(log, orgClient, initializerCfg, inClusterClient, mgr).
101102
SetupWithManager(mgr, defaultCfg); err != nil {
102103
setupLog.Error(err, "unable to create controller", "controller", "LogicalCluster")
103104
os.Exit(1)

cmd/operator.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"github.com/spf13/cobra"
3636

3737
kcptenancyv1alphav1 "github.com/kcp-dev/kcp/sdk/apis/tenancy/v1alpha1"
38+
3839
corev1alpha1 "github.com/platform-mesh/security-operator/api/v1alpha1"
3940
"github.com/platform-mesh/security-operator/internal/controller"
4041
// +kubebuilder:scaffold:imports
@@ -134,7 +135,7 @@ var operatorCmd = &cobra.Command{
134135
return err
135136
}
136137

137-
conn, err := grpc.NewClient(appCfg.FGA.Target, grpc.WithTransportCredentials(insecure.NewCredentials()))
138+
conn, err := grpc.NewClient(operatorCfg.FGA.Target, grpc.WithTransportCredentials(insecure.NewCredentials()))
138139
if err != nil {
139140
log.Error().Err(err).Msg("unable to create grpc client")
140141
return err
@@ -153,7 +154,7 @@ var operatorCmd = &cobra.Command{
153154
log.Error().Err(err).Str("controller", "authorizationmodel").Msg("unable to create controller")
154155
return err
155156
}
156-
if err = controller.NewInviteReconciler(ctx, mgr, &appCfg, log).SetupWithManager(mgr, defaultCfg, log); err != nil {
157+
if err = controller.NewInviteReconciler(ctx, mgr, &operatorCfg, log).SetupWithManager(mgr, defaultCfg, log); err != nil {
157158
log.Error().Err(err).Str("controller", "invite").Msg("unable to create controller")
158159
return err
159160
}

cmd/root.go

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package cmd
22

33
import (
44
"flag"
5+
"strings"
56

67
"github.com/go-logr/logr"
78
platformeshconfig "github.com/platform-mesh/golang-commons/config"
@@ -14,11 +15,11 @@ import (
1415
)
1516

1617
var (
17-
defaultCfg *platformeshconfig.CommonServiceConfig
18-
appCfg config.Config
19-
v *viper.Viper
20-
log *logger.Logger
21-
setupLog logr.Logger
18+
defaultCfg *platformeshconfig.CommonServiceConfig
19+
initializerCfg config.Config
20+
operatorCfg config.Config
21+
log *logger.Logger
22+
setupLog logr.Logger
2223
)
2324

2425
var rootCmd = &cobra.Command{
@@ -33,21 +34,32 @@ func init() {
3334
rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine)
3435

3536
var err error
36-
v, defaultCfg, err = platformeshconfig.NewDefaultConfig(rootCmd)
37+
_, defaultCfg, err = platformeshconfig.NewDefaultConfig(rootCmd)
3738
if err != nil {
3839
panic(err)
3940
}
4041

41-
if err := platformeshconfig.BindConfigToFlags(v, initializerCmd, &appCfg); err != nil {
42+
operatorV := newViper()
43+
if err := platformeshconfig.BindConfigToFlags(operatorV, operatorCmd, &operatorCfg); err != nil {
4244
panic(err)
4345
}
44-
if err := platformeshconfig.BindConfigToFlags(v, operatorCmd, &appCfg); err != nil {
46+
initializerV := newViper()
47+
if err := platformeshconfig.BindConfigToFlags(initializerV, initializerCmd, &initializerCfg); err != nil {
4548
panic(err)
4649
}
4750

4851
cobra.OnInitialize(initLog)
4952
}
5053

54+
func newViper() *viper.Viper {
55+
v := viper.NewWithOptions(
56+
viper.EnvKeyReplacer(strings.NewReplacer("-", "_")),
57+
)
58+
59+
v.AutomaticEnv()
60+
return v
61+
}
62+
5163
func initLog() { // coverage-ignore
5264
logcfg := logger.DefaultConfig()
5365
logcfg.Level = defaultCfg.Log.Level

internal/controller/invite_controller.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,14 @@ import (
99
lifecycle "github.com/platform-mesh/golang-commons/controller/lifecycle/multicluster"
1010
lifecyclesubroutine "github.com/platform-mesh/golang-commons/controller/lifecycle/subroutine"
1111
"github.com/platform-mesh/golang-commons/logger"
12-
"github.com/platform-mesh/security-operator/api/v1alpha1"
13-
"github.com/platform-mesh/security-operator/internal/config"
14-
"github.com/platform-mesh/security-operator/internal/subroutine/invite"
1512
ctrl "sigs.k8s.io/controller-runtime"
1613
mccontext "sigs.k8s.io/multicluster-runtime/pkg/context"
1714
mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager"
1815
mcreconcile "sigs.k8s.io/multicluster-runtime/pkg/reconcile"
16+
17+
"github.com/platform-mesh/security-operator/api/v1alpha1"
18+
"github.com/platform-mesh/security-operator/internal/config"
19+
"github.com/platform-mesh/security-operator/internal/subroutine/invite"
1920
)
2021

2122
type InviteReconciler struct {

internal/subroutine/invite/subroutine.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ import (
1414
lifecyclesubroutine "github.com/platform-mesh/golang-commons/controller/lifecycle/subroutine"
1515
"github.com/platform-mesh/golang-commons/errors"
1616
"github.com/platform-mesh/golang-commons/logger"
17-
"github.com/platform-mesh/security-operator/api/v1alpha1"
18-
"github.com/platform-mesh/security-operator/internal/config"
1917
"golang.org/x/oauth2"
2018
ctrl "sigs.k8s.io/controller-runtime"
2119
"sigs.k8s.io/controller-runtime/pkg/client"
2220
mccontext "sigs.k8s.io/multicluster-runtime/pkg/context"
2321
mcmanager "sigs.k8s.io/multicluster-runtime/pkg/manager"
22+
23+
"github.com/platform-mesh/security-operator/api/v1alpha1"
24+
"github.com/platform-mesh/security-operator/internal/config"
2425
)
2526

2627
const (
@@ -43,7 +44,8 @@ type keycloakUser struct {
4344

4445
func New(ctx context.Context, cfg *config.Config, mgr mcmanager.Manager, pwd string) (*subroutine, error) {
4546

46-
provider, err := oidc.NewProvider(ctx, fmt.Sprintf("%s/realms/master", cfg.Invite.KeycloakBaseURL))
47+
issuer := fmt.Sprintf("%s/realms/master", cfg.Invite.KeycloakBaseURL)
48+
provider, err := oidc.NewProvider(ctx, issuer)
4749
if err != nil {
4850
return nil, err
4951
}

0 commit comments

Comments
 (0)