Article
· 5 hr il y a 11m de lecture

Outil Python d'export / import de configuration IAM / KONG

 


🛠️ Gérer les configurations KONG en CI/CD avec InterSystems IRIS IAM

🔍 Contexte : InterSystems IRIS IAM & Kong Gateway

Dans le cadre de l'intégration d'InterSystems IRIS dans un environnement sécurisé et contrôlé, InterSystems IRIS IAM repose sur Kong Gateway pour gérer les API exposées. Kong agit comme un API Gateway moderne, capable de gérer l’authentification, la sécurité, la gestion du trafic, les plugins, et bien plus encore.

Cependant, maintenir une configuration cohérente de Kong (routes, services, plugins...) entre les différents environnements (développement, test, production) est un défi majeur. C’est ici que les outils comme deck et ce script Python prennent tout leur sens.


⚙️ Présentation de kong_config_tool.py

Cet outil permet de :

  • Exporter la configuration actuelle d’un Gateway KONG dans un fichier YAML versionnable.
  • Importer une configuration YAML dans un Gateway KONG (via deck sync).
  • Automatiser la journalisation complète (logs, stdout/stderr) pour un suivi précis.
  • S’intégrer facilement dans un pipeline CI/CD.

🎯 Objectifs et bénéfices

🔄 Synchronisation cohérente entre environnements

L’outil facilite la propagation de la configuration KONG entre les environnements. En exportant la configuration de dev, puis en l’importation dans staging ou prod, vous assurez une parité fonctionnelle.

🔐 Traçabilité et audits via logs

Grâce à l’option --log, toutes les opérations (y compris les commandes internes à deck) sont journalisées :

  • Qui a exécuté quoi
  • Quelle configuration a été appliquée
  • Quelle a été la réponse de Kong (nombre de ressources créées, modifiées...)

🧪 Intégration dans des pipelines CI/CD

Dans GitLab CI, GitHub Actions ou Jenkins :

  • L’étape d’export peut être lancée automatiquement après des modifications d’API.
  • L’étape d’import permet de déployer automatiquement la config Kong à chaque merge ou release.
  • Les fichiers YAML générés peuvent être versionnés dans Git.

🧰 Exemple typique de pipeline GitLab

stages:
  - export
  - deploy

export_kong:
  stage: export
  script:
    - python3 kong_config_tool.py --export --log export.log
  artifacts:
    paths:
      - kong.yaml
      - export.log

deploy_kong:
  stage: deploy
  script:
    - python3 kong_config_tool.py --import --log deploy.log

🛡️ Sécurité et reproductibilité

InterSystems IRIS IAM étant souvent utilisé dans des environnements sensibles (santé, finance...), il est essentiel de :

  • Éviter les erreurs manuelles via deck sync
  • Garantir que chaque déploiement applique exactement la même configuration
  • Disposer d’un journal clair pour les audits (via les fichiers .log)

💡 Points forts de l’outil

Fonction Description
--export Sauvegarde la config actuelle vers un fichier kong-<timestamp>.yaml
--import Applique le contenu de kong.yaml dans le Gateway
--log Active la journalisation complète (stdout, stderr, logs)
Symlink automatique Le fichier kong.yaml est toujours un alias vers la dernière version exportée
Intégration facile Aucune dépendance lourde, tout repose sur Python standard et deck

📦 Conclusion

L’outil kong_config_tool.py est une brique essentielle pour industrialiser la gestion des configurations KONG dans le contexte d’InterSystems IRIS IAM. Il permet :

  • Un meilleur contrôle de la configuration.
  • Une meilleure traçabilité.
  • Une intégration fluide dans les pipelines CI/CD.
  • Une mise en conformité avec les exigences de sécurité.

🚀 Prochaines évolutions possibles

  • Intégration native à GitOps (ArgoCD, FluxCD)
  • Validation de configuration avec deck diff
  • Notifications en cas d’erreurs (Slack, Teams)

 

Voici une présentation détaillée du code Python kong_config_tool.py, intégrée à l’article, pour expliquer son fonctionnement ligne par ligne, et comment il s’inscrit dans une démarche de CI/CD et d'administration de la configuration KONG avec InterSystems IRIS IAM.


🧬 Présentation du code Python

Le script kong_config_tool.py est un outil en ligne de commande Python conçu pour automatiser les exports et imports de configuration du Gateway KONG via deck, tout en assurant une journalisation robuste.


📁 Structure générale

#!/usr/bin/env python3

import argparse
import subprocess
from datetime import datetime
from pathlib import Path
import sys
import logging
  • Utilise uniquement des modules standards Python.
  • argparse : pour gérer les options en ligne de commande.
  • subprocess : pour exécuter deck.
  • logging : pour un logging structuré (console + fichier).

🧱 Initialisation du logger

logger = logging.getLogger("kong_config_tool")
  • Initialise un logger nommé, configurable selon qu’un fichier log est demandé ou non.

📝 setup_logging(log_file=None)

Fonction permettant :

  • de créer des handlers vers console et/ou fichier.
  • de rediriger sys.stdout et sys.stderr vers le fichier si --log est fourni.

🔎 Permet ainsi de capturer tout : logs Python, print(), erreurs, et aussi sortie de deck.


📤 export_kong_config()

deck_dir = Path.cwd()
output_file = deck_dir / f"kong-{timestamp}.yaml"
  1. Exécute deck gateway dump -o ... pour exporter la configuration actuelle de Kong.
  2. Capture stdout et stderr pour les injecter dans le log via logger.debug(...).
  3. Crée (ou met à jour) un symlink kong.yaml qui pointe vers le fichier exporté — cela simplifie les imports ultérieurs.
  4. En cas d’échec, affiche l’erreur dans les logs et arrête le script.

📥 import_kong_config()

  1. Vérifie la présence du fichier kong.yaml (symlink ou vrai fichier).
  2. Exécute deck gateway sync kong.yaml.
  3. Capture la sortie complète et la logge également.
  4. Gestion fine des erreurs via CalledProcessError.

🔁 Cette logique est symétrique à l’export.


🚀 main()

Fonction d’entrée qui :

  • Gère les arguments --export, --import, --log.
  • Appelle les fonctions correspondantes.
python kong_config_tool.py --export --log export.log
python kong_config_tool.py --import --log import.log

💡 Si --log est omis, la sortie reste visible dans la console uniquement.


🧪 Exécution typique en pipeline CI/CD

Export

python kong_config_tool.py --export --log export.log

Résultat :

  • kong-2025-07-18_12-34-56.yaml (contenu versionnable)
  • kong.yaml (symlink utile pour l’import)
  • export.log (journal pour audit)

Import

python kong_config_tool.py --import --log import.log

Résultat :

  • Application de la configuration sur un nouveau gateway (staging, prod, etc.)
  • Fichier import.log pour prouver ce qui a été fait

✅ Résumé des points du code

Fonctionnalité Implémentation
Interface CLI intuitive argparse avec aide en ligne
Export propre deck gateway dump + timestamp
Import contrôlé deck gateway sync kong.yaml
Journalisation complète logging + redirection stdout/stderr
Résilience Gestion des erreurs via try/except
Intégration CI/CD ready Interface simple, sans dépendance externe
 
 
Spoiler

 

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer