Skip to content

Commit 7ad5dc7

Browse files
Merge pull request #224 from fabriziosestito/refactor/remove-embedded-nats
refactor: remove the embedded NATS server
2 parents 1e0b581 + d527b90 commit 7ad5dc7

13 files changed

Lines changed: 90 additions & 68 deletions

File tree

cmd/controller/main.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type Config struct {
5151
EnableLeaderElection bool
5252
SecureMetrics bool
5353
EnableHTTP2 bool
54+
NatsURL string
5455
LogLevel string
5556
}
5657

@@ -66,6 +67,7 @@ func parseFlags() Config {
6667
"If set, the metrics endpoint is served securely via HTTPS. Use --metrics-secure=false to use HTTP instead.")
6768
flag.BoolVar(&cfg.EnableHTTP2, "enable-http2", false,
6869
"If set, HTTP/2 will be enabled for the metrics and webhook servers")
70+
flag.StringVar(&cfg.NatsURL, "nats-url", "localhost:4222", "The URL of the NATS server")
6971
flag.StringVar(&cfg.LogLevel, "log-level", slog.LevelInfo.String(), "Log level")
7072
flag.Parse()
7173
return cfg
@@ -100,14 +102,7 @@ func main() {
100102
ctrl.SetLogger(logger)
101103
setupLog := logger.WithName("setup")
102104

103-
natsStorageDir := "/data/nats"
104-
ns, err := messaging.NewServer(natsStorageDir)
105-
if err != nil {
106-
setupLog.Error(err, "unable to start NATS server")
107-
os.Exit(1)
108-
}
109-
110-
js, err := messaging.NewJetStreamContext(ns)
105+
js, err := messaging.NewJetStreamContext(cfg.NatsURL)
111106
if err != nil {
112107
setupLog.Error(err, "unable to create JetStream context")
113108
os.Exit(1)

helm/Chart.lock

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
dependencies:
2+
- name: nats
3+
repository: https://nats-io.github.io/k8s/helm/charts/
4+
version: 1.3.7
5+
digest: sha256:8043b9037b1e01203912f54c20c1919fb3fe0a7503099b77fb0de2785559960a
6+
generated: "2025-05-29T16:30:48.470934699+02:00"

helm/Chart.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,8 @@ version: 0.1.0-alpha1
2222
# follow Semantic Versioning. They should reflect the version the application is using.
2323
# It is recommended to use it with quotes.
2424
appVersion: "0.1.0-alpha1"
25+
26+
dependencies:
27+
- name: nats
28+
version: "1.3.7"
29+
repository: "https://nats-io.github.io/k8s/helm/charts/"

helm/charts/nats-1.3.7.tgz

20.3 KB
Binary file not shown.

helm/templates/controller/statefulset.yaml renamed to helm/templates/controller/deployment.yaml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
apiVersion: apps/v1
2-
kind: StatefulSet
2+
kind: Deployment
33
metadata:
44
name: {{ include "sbombastic.fullname" . }}-controller
55
namespace: {{ .Release.Namespace }}
@@ -11,7 +11,6 @@ spec:
1111
matchLabels:
1212
{{ include "sbombastic.selectorLabels" . | nindent 6 }}
1313
app.kubernetes.io/component: controller
14-
serviceName: {{ include "sbombastic.fullname" . }}-controller
1514
replicas: {{ .Values.controller.replicas }}
1615
template:
1716
metadata:
@@ -25,6 +24,8 @@ spec:
2524
args:
2625
- -leader-elect
2726
- -health-probe-bind-address=:8081
27+
- -nats-url
28+
- {{ .Release.Name }}-nats.{{ .Release.Namespace }}.svc.cluster.local:4222
2829
{{- if .Values.controller.logLevel }}
2930
- -log-level={{ .Values.controller.logLevel }}
3031
{{- end }}
@@ -52,12 +53,5 @@ spec:
5253
requests:
5354
cpu: 10m
5455
memory: 64Mi
55-
volumeMounts:
56-
- name: nats-data
57-
mountPath: /data/nats
58-
volumes:
59-
- name: nats-data
60-
emptyDir: {}
6156
serviceAccountName: {{ include "sbombastic.fullname" . }}-controller
6257
terminationGracePeriodSeconds: 10
63-

helm/templates/controller/service.yaml

Lines changed: 0 additions & 17 deletions
This file was deleted.

helm/templates/worker/deployment.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ spec:
2727
{{ include "sbombastic.securityContext" . | nindent 12 }}
2828
args:
2929
- -nats-url
30-
- {{ .Release.Name }}-controller-nats.{{ .Release.Namespace }}.svc.cluster.local:4222
30+
- {{ .Release.Name }}-nats.{{ .Release.Namespace }}.svc.cluster.local:4222
3131
{{- if .Values.worker.logLevel }}
3232
- -log-level={{ .Values.worker.logLevel }}
3333
{{- end }}

helm/tests/controller/statefulset_test.yaml renamed to helm/tests/controller/deployment_test.yaml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
suite: "Controller StatefulSet Tests"
1+
suite: "Controller Deployment Tests"
22
templates:
3-
- "templates/controller/statefulset.yaml"
4-
3+
- "templates/controller/deployment.yaml"
54
tests:
6-
- it: "should render a StatefulSet with the correct replica count, logging level, image, and imagePullPolicy"
5+
- it: "should render a Deployment with the correct replica count, logging level, image, and imagePullPolicy"
76
set:
87
controller:
98
replicas: 5
@@ -24,4 +23,4 @@ tests:
2423
value: "Always"
2524
- contains:
2625
path: "spec.template.spec.containers[0].args"
27-
content: "-log-level=debug"
26+
content: "-log-level=debug"

helm/values.yaml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,39 @@ worker:
2626
replicas: 3
2727
logLevel: "info"
2828

29+
nats:
30+
config:
31+
cluster:
32+
enabled: true
33+
jetstream:
34+
enabled: true
35+
natsBox:
36+
enabled: false
37+
container:
38+
merge:
39+
securityContext:
40+
readOnlyRootFilesystem: true
41+
runAsNonRoot: true
42+
runAsUser: 65532
43+
seccompProfile:
44+
type: RuntimeDefault
45+
allowPrivilegeEscalation: false
46+
capabilities:
47+
drop:
48+
- "ALL"
49+
reloader:
50+
merge:
51+
securityContext:
52+
readOnlyRootFilesystem: true
53+
runAsNonRoot: true
54+
runAsUser: 65532
55+
seccompProfile:
56+
type: RuntimeDefault
57+
allowPrivilegeEscalation: false
58+
capabilities:
59+
drop:
60+
- "ALL"
61+
2962
persistence:
3063
enabled: true
3164

internal/messaging/nats.go

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,35 +4,13 @@ import (
44
"fmt"
55
"time"
66

7-
"github.com/nats-io/nats-server/v2/server"
87
"github.com/nats-io/nats.go"
98
)
109

1110
const sbombasticSubject = "sbombastic"
1211

13-
func NewServer(storeDir string) (*server.Server, error) {
14-
opts := &server.Options{
15-
JetStream: true,
16-
StoreDir: storeDir,
17-
}
18-
19-
ns, err := server.NewServer(opts)
20-
if err != nil {
21-
return nil, fmt.Errorf("failed to create NATS server: %w", err)
22-
}
23-
ns.ConfigureLogger()
24-
25-
go ns.Start()
26-
27-
if !ns.ReadyForConnections(20 * time.Second) {
28-
return nil, fmt.Errorf("NATS server not ready for connections: %w", err)
29-
}
30-
31-
return ns, nil
32-
}
33-
34-
func NewJetStreamContext(ns *server.Server) (nats.JetStreamContext, error) {
35-
nc, err := nats.Connect(ns.ClientURL())
12+
func NewJetStreamContext(url string) (nats.JetStreamContext, error) {
13+
nc, err := nats.Connect(url)
3614
if err != nil {
3715
return nil, fmt.Errorf("failed to connect to NATS server: %w", err)
3816
}

0 commit comments

Comments
 (0)