Zum Hauptinhalt springen
Version: 3.0.0-alpha (Diátaxis)

API-Referenz NATS

Diese Referenz beschreibt die Konfiguration und Funktionsweise der NATS-Cluster auf Hikube, einschließlich der Benutzerverwaltung, der JetStream-Konfiguration für die Nachrichtenpersistenz und der Anpassungsoptionen über das Feld config.


Grundstruktur

NATS-Ressource

Beispiel einer YAML-Konfiguration

apiVersion: apps.cozystack.io/v1alpha1
kind: NATS
metadata:
name: nats
spec:
replicas: 2
resourcesPreset: nano
external: false
jetstream:
enabled: true
size: 10Gi
users:
user1:
password: "mypassword"

Parameter

Allgemeine Parameter

ParameterTypBeschreibungStandardErforderlich
replicasintAnzahl der NATS-Replikate (Cluster-Knoten)2Ja
resourcesobjectExplizite CPU- und Speicherkonfiguration pro Replikat. Wenn leer, wird resourcesPreset verwendet.{}Nein
resources.cpuquantityVerfügbare CPU pro NATS-Replikat""Nein
resources.memoryquantityVerfügbarer RAM pro NATS-Replikat""Nein
resourcesPresetstringStandard-Ressourcen-Preset (nano, micro, small, medium, large, xlarge, 2xlarge)"nano"Ja
storageClassstringStorageClass für die Speicherung der persistenten Cluster-Daten""Nein
externalboolAktiviert den externen Zugang zum NATS-Cluster (Exposition außerhalb des Kubernetes-Clusters)falseNein

YAML-Beispiel

nats.yaml
replicas: 3
resourcesPreset: small
external: true
storageClass: replicated

Anwendungsparameter (NATS-spezifisch)

ParameterTypBeschreibungStandardErforderlich
usersmap[string]objectListe der autorisierten Benutzer für die Verbindung zum NATS-Cluster. Der Schlüssel entspricht dem Benutzernamen.{}Nein
users[name].passwordstringDem Benutzer zugeordnetes Passwort.""Ja, wenn definiert
jetstreamobjectKonfiguration des JetStream-Moduls für die Nachrichtenpersistenz.{}Nein
jetstream.enabledboolAktiviert oder deaktiviert das JetStream-Modul.trueNein
jetstream.sizequantityGröße des persistenten Volumes für JetStream.10GiNein
configobjectErweiterte NATS-Konfiguration. Ermöglicht das Hinzufügen oder Überschreiben bestimmter Werte der Standardkonfiguration.{}Nein
config.mergeobjectZusätzliche Konfiguration, die in die NATS-Hauptkonfiguration eingefügt wird.{}Nein
config.resolverobjectSpezifische Konfiguration des NATS-Resolvers (DNS, Operator usw.).{}Nein

YAML-Beispiel

nats.yaml
users:
admin:
password: "supersecurepassword"
client:
password: "clientpassword"

jetstream:
enabled: true
size: 20Gi

config:
merge:
debug: true
trace: true
resolver:
dir: /data/nats/resolver

resources und resourcesPreset

Das Feld resources ermöglicht die explizite Definition der CPU- und Speicherkonfiguration jedes Replikats. Wenn dieses Feld leer gelassen wird, wird der Wert des Parameters resourcesPreset verwendet.

YAML-Beispiel

nats.yaml
resources:
cpu: 4000m
memory: 4Gi

⚠️ Hinweis: Wenn resources definiert ist, wird der Wert von resourcesPreset ignoriert.

Preset-NameCPUSpeicher
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Vollständige Beispiele

Produktionscluster

nats-production.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: NATS
metadata:
name: production
spec:
external: false
replicas: 3
resources:
cpu: 2000m
memory: 4Gi
storageClass: replicated

jetstream:
enabled: true
size: 50Gi

users:
admin:
password: SecureAdminPassword
appuser:
password: SecureAppPassword
monitoring:
password: SecureMonitoringPassword

config:
merge:
max_payload: 8MB
write_deadline: 2s
debug: false
trace: false

Entwicklungscluster

nats-development.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: NATS
metadata:
name: development
spec:
external: true
replicas: 1
resourcesPreset: nano

jetstream:
enabled: true
size: 5Gi

users:
dev:
password: devpassword

Best Practices
  • JetStream in der Produktion: Aktivieren Sie immer JetStream (jetstream.enabled: true), um von der Nachrichtenpersistenz und dem Streaming zu profitieren
  • Mindestens 3 Replikate in der Produktion, um Hochverfügbarkeit und Raft-Konsens für JetStream zu gewährleisten
  • max_payload: Passen Sie die maximale Nachrichtengröße an Ihren Anwendungsfall an (Standard: 1MB, empfohlenes Maximum: 8MB)
  • Dedizierte Benutzer: Erstellen Sie separate Benutzer pro Anwendung für eine granulare Zugriffskontrolle
Achtung
  • Löschungen sind unwiderruflich: Das Löschen einer NATS-Ressource führt zum endgültigen Verlust der JetStream-Streams und aller Nachrichten
  • Änderung von jetstream.size: Die Reduzierung der JetStream-Volume-Größe auf einem bestehenden Cluster kann zu Datenverlust führen
  • Externer Zugang: Die Aktivierung von external: true exponiert den NATS-Cluster im Internet — stellen Sie sicher, dass die Authentifizierung korrekt konfiguriert ist