Vai al contenuto principale
Versione: 3.0.0-alpha (Diátaxis)

Riferimento API NATS

Questo riferimento descrive in dettaglio la configurazione e il funzionamento dei cluster NATS su Hikube, inclusa la gestione degli utenti, la configurazione di JetStream per la persistenza dei messaggi e le opzioni di personalizzazione tramite il campo config.


Struttura di Base

Risorsa NATS

Esempio di configurazione YAML

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"

Parametri

Parametri Comuni

ParametroTipoDescrizioneDefaultRichiesto
replicasintNumero di repliche NATS (nodi del cluster)2
resourcesobjectConfigurazione esplicita di CPU e memoria per ogni replica. Se vuoto, viene utilizzato resourcesPreset.{}No
resources.cpuquantityCPU disponibile per replica NATS""No
resources.memoryquantityRAM disponibile per replica NATS""No
resourcesPresetstringPreset di risorse predefinito (nano, micro, small, medium, large, xlarge, 2xlarge)"nano"
storageClassstringStorageClass utilizzata per archiviare i dati persistenti del cluster""No
externalboolAttiva l'accesso esterno al cluster NATS (esposizione fuori dal cluster Kubernetes)falseNo

Esempio YAML

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

Parametri Applicazione (Specifici di NATS)

ParametroTipoDescrizioneDefaultRichiesto
usersmap[string]objectLista degli utenti autorizzati a connettersi al cluster NATS. La chiave corrisponde al nome utente.{}No
users[name].passwordstringPassword associata all'utente.""Sì se definito
jetstreamobjectConfigurazione del modulo JetStream per la persistenza dei messaggi.{}No
jetstream.enabledboolAttiva o disattiva il modulo JetStream.trueNo
jetstream.sizequantityDimensione del volume persistente allocato per JetStream.10GiNo
configobjectConfigurazione avanzata di NATS. Consente di aggiungere o sovrascrivere determinati valori della configurazione predefinita.{}No
config.mergeobjectConfigurazione aggiuntiva unita alla configurazione NATS principale.{}No
config.resolverobjectConfigurazione specifica del resolver NATS (DNS, operatore, ecc.).{}No

Esempio YAML

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 e resourcesPreset

Il campo resources consente di definire esplicitamente la configurazione CPU e memoria di ogni replica. Se questo campo viene lasciato vuoto, viene utilizzato il valore del parametro resourcesPreset.

Esempio YAML

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

⚠️ Nota: se resources è definito, il valore di resourcesPreset viene ignorato.

Nome PresetCPUMemoria
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Esempi Completi

Cluster di Produzione

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

Cluster di Sviluppo

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

Buone Pratiche
  • JetStream in produzione: attivate sempre JetStream (jetstream.enabled: true) per beneficiare della persistenza dei messaggi e dello streaming
  • Minimo 3 repliche in produzione per garantire l'alta disponibilità e il consenso Raft per JetStream
  • max_payload: regolate la dimensione massima dei messaggi secondo il vostro caso d'uso (predefinito: 1MB, massimo raccomandato: 8MB)
  • Utenti dedicati: create utenti distinti per applicazione per un controllo degli accessi granulare
Attenzione
  • Le eliminazioni sono irreversibili: l'eliminazione di una risorsa NATS comporta la perdita definitiva degli stream JetStream e di tutti i messaggi
  • Modifica di jetstream.size: ridurre la dimensione del volume JetStream su un cluster esistente può comportare una perdita di dati
  • Accesso esterno: attivare external: true espone il cluster NATS su Internet — assicuratevi che l'autenticazione sia ben configurata