Skip to content

Commit

Permalink
Added feature flag to disable provisioning of NATS as part of eventing (
Browse files Browse the repository at this point in the history
#18075)

* Added feature flag to disable provisioning of NATS as part of eventing (#18041)

* Added feature flag to disable provisioning of NATS as part of eventing

* image bump

* undo image bump
  • Loading branch information
mfaizanse committed Aug 29, 2023
1 parent 1139fa7 commit 5d1a7bc
Show file tree
Hide file tree
Showing 12 changed files with 33 additions and 5 deletions.
Expand Up @@ -69,6 +69,7 @@ func main() {
// Get env config and set feature flags
envConfig := env.GetConfig()
featureflags.SetEventingWebhookAuthEnabled(envConfig.EventingWebhookAuthEnabled)
featureflags.SetNATSProvisioningEnabled(envConfig.NATSProvisioningEnabled)

bebSubMgr := eventmesh.NewSubscriptionManager(restCfg,
opts.MetricsAddr,
Expand Down
Expand Up @@ -147,8 +147,10 @@ func (r *Reconciler) Reconcile(ctx context.Context, _ ctrl.Request) (ctrl.Result
}

// Create NATS Secret for the eventing-nats statefulset
if createErr := r.createNATSSecret(ctx); createErr != nil {
return ctrl.Result{}, createErr
if featureflags.IsNATSProvisioningEnabled() {
if createErr := r.createNATSSecret(ctx); createErr != nil {
return ctrl.Result{}, createErr
}
}

var secretList v1.SecretList
Expand Down
Expand Up @@ -7,6 +7,7 @@ var f = &flags{

type flags struct {
eventingWebhookAuthEnabled bool
natsProvisioningEnabled bool
}

// SetEventingWebhookAuthEnabled enable/disable the Eventing webhook auth feature flag.
Expand All @@ -19,3 +20,14 @@ func SetEventingWebhookAuthEnabled(enabled bool) {
func IsEventingWebhookAuthEnabled() bool {
return f.eventingWebhookAuthEnabled
}

// SetNATSProvisioningEnabled enable/disable the NATS resources provisioning feature flag.
func SetNATSProvisioningEnabled(enabled bool) {
f.natsProvisioningEnabled = enabled
}

// IsNATSProvisioningEnabled returns true if the NATS resources provisioning feature flag is enabled,
// otherwise returns false.
func IsNATSProvisioningEnabled() bool {
return f.natsProvisioningEnabled
}
3 changes: 3 additions & 0 deletions components/eventing-controller/pkg/env/config.go
Expand Up @@ -61,6 +61,9 @@ type Config struct {

// EventingWebhookAuthEnabled enable/disable the Eventing webhook auth feature flag.
EventingWebhookAuthEnabled bool `envconfig:"EVENTING_WEBHOOK_AUTH_ENABLED" required:"false" default:"false"`

// NATSProvisioningEnabled enable/disable the NATS resources provisioning feature flag.
NATSProvisioningEnabled bool `envconfig:"NATS_PROVISIONING_ENABLED" required:"false" default:"true"`
}

func GetConfig() Config {
Expand Down
1 change: 1 addition & 0 deletions components/eventing-controller/pkg/env/config_test.go
Expand Up @@ -41,4 +41,5 @@ func Test_GetConfig(t *testing.T) {
webhookActivationTimeout, err := time.ParseDuration(envs["WEBHOOK_ACTIVATION_TIMEOUT"])
g.Expect(err).ShouldNot(HaveOccurred())
g.Expect(config.WebhookActivationTimeout).To(Equal(webhookActivationTimeout))
g.Expect(config.NATSProvisioningEnabled).To(Equal(true))
}
1 change: 1 addition & 0 deletions components/eventing-controller/testing/eventmeshmock.go
Expand Up @@ -15,6 +15,7 @@ import (
. "github.com/onsi/gomega" //nolint:revive,stylecheck // using . import for convenience
"golang.org/x/oauth2"
logf "sigs.k8s.io/controller-runtime/pkg/log"

// gcp auth etc.
_ "k8s.io/client-go/plugin/pkg/client/auth/gcp"

Expand Down
Expand Up @@ -94,6 +94,8 @@ spec:
value: {{ .Values.eventingWebhookAuth.secret.name | quote }}
- name: EVENTING_WEBHOOK_AUTH_SECRET_NAMESPACE
value: {{ .Values.eventingWebhookAuth.secret.namespace | quote }}
- name: NATS_PROVISIONING_ENABLED
value: {{ .Values.global.jetstream.enabled | quote }}
resources:
requests:
cpu: {{ .Values.resources.requests.cpu }}
Expand Down
3 changes: 2 additions & 1 deletion resources/eventing/charts/nats/templates/configmap.yaml
@@ -1,4 +1,4 @@
---
{{- if .Values.global.jetstream.enabled }}
apiVersion: v1
kind: ConfigMap
metadata:
Expand Down Expand Up @@ -161,3 +161,4 @@ data:
{{- end }}
{{- end }}
{{- end }}
{{- end }}
@@ -1,3 +1,4 @@
{{- if .Values.global.jetstream.enabled }}
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
Expand All @@ -10,3 +11,4 @@ spec:
trafficPolicy:
tls:
mode: DISABLE
{{- end }}
3 changes: 2 additions & 1 deletion resources/eventing/charts/nats/templates/service.yaml
@@ -1,4 +1,4 @@
---
{{- if .Values.global.jetstream.enabled }}
apiVersion: v1
kind: Service
metadata:
Expand Down Expand Up @@ -53,3 +53,4 @@ spec:
{{- if .Values.appProtocol.enabled }}
appProtocol: tcp
{{- end }}
{{- end }}
3 changes: 2 additions & 1 deletion resources/eventing/charts/nats/templates/statefulset.yaml
@@ -1,4 +1,4 @@
---
{{- if .Values.global.jetstream.enabled }}
apiVersion: apps/v1
kind: StatefulSet
metadata:
Expand Down Expand Up @@ -306,3 +306,4 @@ spec:
storageClassName: {{ .Values.nats.jetstream.fileStorage.storageClassName | quote }}
{{- end }}
{{- end }}
{{- end }}
1 change: 1 addition & 0 deletions resources/eventing/values.yaml
Expand Up @@ -30,6 +30,7 @@ global:
directory: prod/external

jetstream:
enabled: true # If set to `false` then NATS resources will not be deployed to the cluster.
# Storage type of the stream, memory or file.
storage: file
fileStorage:
Expand Down

0 comments on commit 5d1a7bc

Please sign in to comment.