Comment gérer les utilisateurs NATS
Ce guide explique comment créer et gérer les utilisateurs d'un cluster NATS sur Hikube de manière déclarative via les manifestes Kubernetes.
Prérequis
- kubectl configuré avec votre kubeconfig Hikube
- Un cluster NATS déployé sur Hikube (ou un manifeste prêt à déployer)
- (Optionnel) le CLI nats installé localement pour tester les connexions
Étapes
1. Ajouter des utilisateurs
Les utilisateurs sont déclarés dans la section users du manifeste. Chaque utilisateur est identifié par un nom et possède un mot de passe.
apiVersion: apps.cozystack.io/v1alpha1
kind: NATS
metadata:
name: my-nats
spec:
replicas: 3
resourcesPreset: small
jetstream:
enabled: true
size: 10Gi
users:
admin:
password: SecureAdminPassword
appuser:
password: AppUserPassword456
monitoring:
password: MonitoringPassword789
Paramètres utilisateur :
| Paramètre | Type | Description |
|---|---|---|
users[name].password | string | Mot de passe associé à l'utilisateur |
Créez des utilisateurs distincts par application pour un contrôle d'accès granulaire. Utilisez un compte admin pour l'administration, des comptes applicatifs par service, et un compte monitoring dédié à la supervision.
2. Appliquer les changements
kubectl apply -f nats-users.yaml
Surveillez le rolling update des pods :
kubectl get po -w | grep my-nats
Attendez que tous les pods soient en état Running :
kubectl get po | grep my-nats
Résultat attendu :
my-nats-0 1/1 Running 0 2m
my-nats-1 1/1 Running 0 4m
my-nats-2 1/1 Running 0 6m
3. Tester la connexion avec le CLI nats
Ouvrez un port-forward vers le service NATS :
kubectl port-forward svc/my-nats 4222:4222
Testez la connexion avec chaque utilisateur :
Connexion avec l'utilisateur admin :
nats pub test "Hello from admin" \
--server nats://admin:SecureAdminPassword@127.0.0.1:4222
Résultat attendu :
Published 16 bytes to "test"
Connexion avec l'utilisateur appuser :
nats pub app.events "Hello from appuser" \
--server nats://appuser:AppUserPassword456@127.0.0.1:4222
Résultat attendu :
Published 18 bytes to "app.events"
Test d'un mot de passe incorrect :
nats pub test "This should fail" \
--server nats://admin:wrongpassword@127.0.0.1:4222
Résultat attendu :
nats: error: Authorization Violation
Si external: true est activé, le cluster NATS est accessible depuis l'extérieur du cluster Kubernetes. Assurez-vous que tous les utilisateurs disposent de mots de passe robustes.
4. Vérifier les connexions actives
Vous pouvez vérifier les connexions actives sur le cluster NATS :
nats server report connections \
--server nats://admin:SecureAdminPassword@127.0.0.1:4222
Résultat attendu :
╭──────────────────────────────────────────────────────────╮
│ Connection Report │
├──────────┬──────────┬──────────┬──────────┬──────────────┤
│ Server │ Conns │ In Msgs │ Out Msgs │ In Bytes │
├──────────┼──────────┼──────────┼──────────┼──────────────┤
│ my-nats-0│ 2 │ 5 │ 3 │ 128B │
│ my-nats-1│ 1 │ 2 │ 1 │ 64B │
│ my-nats-2│ 0 │ 0 │ 0 │ 0B │
╰──────────┴──────────┴──────────┴──────────┴──────────────╯
Pour voir le détail des connexions par utilisateur :
nats server report connz \
--server nats://admin:SecureAdminPassword@127.0.0.1:4222
Vérification
La configuration est réussie si :
- Les pods NATS sont tous en état
Runningaprès la mise à jour - Chaque utilisateur peut se connecter avec son mot de passe
- Un mot de passe incorrect est rejeté (
Authorization Violation) - Les connexions actives sont visibles dans le rapport du serveur
Pour aller plus loin
- Référence API NATS : documentation complète des paramètres
users - Comment configurer JetStream : activer la persistance des messages et le streaming