Skip to main content
Version: 2.0.2

Référence API NATS

Cette référence détaille la configuration et le fonctionnement des clusters NATS sur Hikube, incluant la gestion des utilisateurs, la configuration du JetStream pour la persistance des messages, et les options de personnalisation via le champ config.


Structure de Base

Ressource NATS

Exemple de configuration YAML

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

Paramètres

Paramètres Communs

ParamètreTypeDescriptionDéfautRequis
replicasintNombre de réplicas NATS (nœuds du cluster)2Oui
resourcesobjectConfiguration explicite CPU et mémoire pour chaque réplique. Si vide, resourcesPreset est utilisé.{}Non
resources.cpuquantityCPU disponible par réplique NATS""Non
resources.memoryquantityRAM disponible par réplique NATS""Non
resourcesPresetstringPreset de ressources par défaut (nano, micro, small, medium, large, xlarge, 2xlarge)"nano"Oui
storageClassstringStorageClass utilisé pour stocker les données persistantes du cluster""Non
externalboolActive l’accès externe au cluster NATS (exposition hors du cluster Kubernetes)falseNon

Exemple YAML

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

Paramètres Application (Spécifiques à NATS)

ParamètreTypeDescriptionDéfautRequis
usersmap[string]objectListe des utilisateurs autorisés à se connecter au cluster NATS. La clé correspond au nom d’utilisateur.{}Non
users[name].passwordstringMot de passe associé à l’utilisateur.""Oui si défini
jetstreamobjectConfiguration du module JetStream pour la persistance des messages.{}Non
jetstream.enabledboolActive ou désactive le module JetStream.trueNon
jetstream.sizequantityTaille du volume persistant alloué pour JetStream.10GiNon
configobjectConfiguration avancée de NATS. Permet d’ajouter ou d’écraser certaines valeurs de la configuration par défaut.{}Non
config.mergeobjectConfiguration additionnelle fusionnée dans la configuration NATS principale.{}Non
config.resolverobjectConfiguration spécifique du résolveur NATS (DNS, opérateur, etc.).{}Non

Exemple 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 et resourcesPreset

Le champ resources permet de définir explicitement la configuration CPU et mémoire de chaque réplique. Si ce champ est laissé vide, la valeur du paramètre resourcesPreset est utilisée.

Exemple YAML

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

⚠️ Note : si resources est défini, la valeur de resourcesPreset est ignorée.

Preset nameCPUMémoire
nano250m128Mi
micro500m256Mi
small1512Mi
medium11Gi
large22Gi
xlarge44Gi
2xlarge88Gi

Exemple complet

nats.yaml
apiVersion: apps.cozystack.io/v1alpha1
kind: NATS
metadata:
name: nats
namespace: tenant-x
spec:
external: false

replicas: 2
resourcesPreset: large
storageClass: "replicated"

jetstream:
enabled: true
size: 10Gi

users:
user1:
password: mypassword

config:
merge:
# Exemple de configuration additionnelle NATS
max_payload: 16MB
write_deadline: 2s
debug: false
trace: false
resolver:
# Configuration du resolver (optionnelle, pour JWTs, accounts, etc.)
type: full
dir: /data/resolver

Cette ressource permet de déployer un cluster NATS hautement disponible, avec JetStream activé pour la persistance des messages et des utilisateurs authentifiés pour un contrôle d’accès granulaire.