Python, Viya, OpenShift : l'accès binaire à CAS expliqué

Cet article en deux mots :

Le guide ultime pour briser l'isolation de votre cluster OpenShift et libérer la puissance de SAS Viya 4. >
Établir une connexion binaire entre un client Python externe et CAS ne s'improvise pas. De la configuration des SCC (Security Context Constraints) à l'exposition des services via Kustomize, cet article décrypte chaque couche réseau et sécurité. Apprenez à configurer la bibliothèque SWAT, gérer vos certificats TLS et automatiser vos accès avec OAuth 2.0 ou .authinfo. Ne luttez plus contre l'infrastructure, maîtrisez-la.

Une fois n'est pas coutume (vous pouvez retrouver l'ensemble de mes articles sur VIYA 4SAS Viya 4 est une plateforme d'IA, de data management et d'analytics de pointe, nativement conçue pour le Cloud (Cloud-Native). Contrairement aux versions précédentes, elle repose sur une architecture de microservices orchestrée par Kubernetes.

Elle permet de gérer l'intégralité du cycle de vie de la donnée — de l'ingestion à la mise en production des modèles (ModelOps) — en offrant une élasticité totale, une intégration transparente avec l'open-source (Python, R) et une interface unifiée pour les data scientists et les décideurs métiers.
sur ce blog), je vous propose ce article qui fournit un guide exhaustif et détaillé, étape par étape, pour la configuration et l'utilisation d'une connexion binaire depuis un client Python externe vers un serveur SAS Viya 4SAS Viya 4 est une plateforme d'IA, de data management et d'analytics de pointe, nativement conçue pour le Cloud (Cloud-Native). Contrairement aux versions précédentes, elle repose sur une architecture de microservices orchestrée par Kubernetes.

Elle permet de gérer l'intégralité du cycle de vie de la donnée — de l'ingestion à la mise en production des modèles (ModelOps) — en offrant une élasticité totale, une intégration transparente avec l'open-source (Python, R) et une interface unifiée pour les data scientists et les décideurs métiers.
CAS hébergé sur OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
.
Elle est pas belle la vie ? J'ai profité de la canicule du moment pour vous proposer un article qui aborde le cycle de vie complet de la tâche, depuis la sécurité et la mise en réseau au niveau de la plateforme jusqu'à l'implémentation du code côté client.

Le Défi

Oui, c'est un défi (si,si..) SAS Viya sur OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
est une combinaison puissante, mais l'intégration de clients externes nécessite de naviguer dans les modèles de sécurité et de réseau distincts des deux technologies. Les informations sont souvent fragmentées entre la documentation SAS, les blogs Red Hat et les forums communautaires. Ce article synthétise ces sources (Merci Nicolas ! une fois de plus je suis là pour vous faciliter la vie) . L'enjeu principal n'est pas de corriger une fonctionnalité défaillante, mais de percer délibérément et en toute sécurité plusieurs couches d'isolation (conteneur, pod, réseau) qui sont conçues pour maintenir la plateforme autonome par défaut. Je sais, dit comme ça, ça peut faire peut mais ne vous inquiétez pas, ça va bien se passer.

Public Cible et Prérequis

Cet article est destiné aux administrateurs OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
, aux administrateurs de la plateforme SAS et aux data scientists ayant des responsabilités administratives ou de développement. Une connaissance pratique des concepts de Kubernetes/OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
(tels que les pods, services, SCCs, et la CLI kubectl/oc) ainsi que du langage Python est supposée. Vous vous sentez perdu ? vous pouvez parcourir mes articles ( nombreux) sur Viya 4SAS Viya 4 est une plateforme d'IA, de data management et d'analytics de pointe, nativement conçue pour le Cloud (Cloud-Native). Contrairement aux versions précédentes, elle repose sur une architecture de microservices orchestrée par Kubernetes.

Elle permet de gérer l'intégralité du cycle de vie de la donnée — de l'ingestion à la mise en production des modèles (ModelOps) — en offrant une élasticité totale, une intégration transparente avec l'open-source (Python, R) et une interface unifiée pour les data scientists et les décideurs métiers.
, ou me contactez pour un coup de main ;) Vous pouvez m'envoyer un message sur Linkedin, je vous répondrai sans problème : https://www.linkedin.com/in/houssetnicolas/

Technologies Clés

Enfin, un dernier conseil avant de se lancer, CONSULTEZ LA DOCUMENTATION SAS : Configure External Access to CAS

Cet article se base sur cette documentation et sur d'autres sources afin d'enrichir ce guide, mais n'oubliez pas que je ne remplace pas ( et jamais) la documentation officielle et, en cas de doute, n'hésitez pas à contacter le support SAS.

Comprendre l'Interaction des Composants

Ce premier "chapitre" établit le modèle conceptuel sur la manière dont les différentes pièces du "puzzle" s'assemblent, ce qui est crucial avant toute tentative de configuration.

Le Rôle Central de CAS

CAS est le cœur de la puissance analytique de SAS Viya, conçu pour le traitement de données en mémoire à haute performance. Il représente une charge de travail statefulImageUne app stateful sauvegarde ses données sur un volume persistant. Si le pod redémarre, son état est conservé. avec des exigences uniques en matière de ressources et de sécurité, se distinguant de la majorité des microservicesLes microservices sont une approche d'architecture logicielle où une application est décomposée en une collection de petits services indépendants, spécialisés et communicant entre eux via des APIs légères. Contrairement aux architectures "monolithiques" anciennes, chaque microservice remplit une fonction unique (ex: gestion du catalogue, authentification, moteur de calcul).

Dans SAS Viya 4, cette architecture est native. Elle permet à la plateforme de s'exécuter sur Kubernetes, offrant une flexibilité totale : chaque composant de SAS peut être mis à jour, redémarré ou mis à l'échelle (scaling) individuellement sans affecter le reste du système.
stateless
de la plateforme.  

Modes de Déploiement : SMPLe Symmetric Multi-Processing (SMP) est une architecture informatique où plusieurs processeurs (CPU) partagent une mémoire centrale unique et un seul système d'exploitation pour exécuter des tâches. Contrairement au mode MPP, toutes les opérations se déroulent au sein d'une seule machine ou d'un seul nœud de calcul.

Dans l'écosystème SAS Viya 4, le mode SMP est idéal pour les jeux de données de taille petite à moyenne ou pour les phases de préparation de code. Le moteur CAS (Cloud Analytic Services) utilise alors la puissance multi-cœurs d'un nœud unique pour traiter les données avec une latence minimale.
vs. MPPLe Massively Parallel Processing (MPP) est une architecture informatique où plusieurs processeurs (ou nœuds de calcul) travaillent simultanément sur différentes parties d'une même tâche complexe. Contrairement au traitement séquentiel, le MPP divise les données en fragments gérés en parallèle, réduisant drastiquement le temps d'exécution.

Dans l'écosystème SAS Viya 4, l'architecture MPP est incarnée par le moteur CAS (Cloud Analytic Services). Elle permet de distribuer les calculs analytiques et d'IA sur l'ensemble d'un cluster Kubernetes ou OpenShift, offrant une puissance de traitement quasi illimitée pour les Big Data.

L'architecture de déploiement de CAS a des implications significatives sur les ressources et la configuration réseau.

Le Contrôleur CASLe Contrôleur CAS est le nœud maître (Master Node) qui orchestre l'ensemble des opérations au sein du moteur de calcul "In-Memory" de SAS Viya 4. Il agit comme le cerveau du cluster : il reçoit les requêtes des utilisateurs (via Python, R ou SAS), planifie l'exécution des tâches et distribue les données aux nœuds de calcul (Workers).

Dans une architecture Cloud Native (Kubernetes/OpenShift), le contrôleur assure la gestion des sessions, la communication entre les nœuds et la consolidation des résultats finaux pour les renvoyer à l'utilisateur.

Le contrôleur CASLe Contrôleur CAS est le nœud maître (Master Node) qui orchestre l'ensemble des opérations au sein du moteur de calcul "In-Memory" de SAS Viya 4. Il agit comme le cerveau du cluster : il reçoit les requêtes des utilisateurs (via Python, R ou SAS), planifie l'exécution des tâches et distribue les données aux nœuds de calcul (Workers).

Dans une architecture Cloud Native (Kubernetes/OpenShift), le contrôleur assure la gestion des sessions, la communication entre les nœuds et la consolidation des résultats finaux pour les renvoyer à l'utilisateur.
est le cerveau du serveur. Toutes les connexions clientes, qu'elles soient binaires ou REST, sont établies avec le pod contrôleur. Ce dernier orchestre ensuite le travail entre les pods workers dans une configuration MPPLe Massively Parallel Processing (MPP) est une architecture informatique où plusieurs processeurs (ou nœuds de calcul) travaillent simultanément sur différentes parties d'une même tâche complexe. Contrairement au traitement séquentiel, le MPP divise les données en fragments gérés en parallèle, réduisant drastiquement le temps d'exécution.

Dans l'écosystème SAS Viya 4, l'architecture MPP est incarnée par le moteur CAS (Cloud Analytic Services). Elle permet de distribuer les calculs analytiques et d'IA sur l'ensemble d'un cluster Kubernetes ou OpenShift, offrant une puissance de traitement quasi illimitée pour les Big Data.
. L'ensemble de notre effort de configuration vise à rendre ce contrôleur accessible de manière sécurisée depuis l'extérieur du cluster.  

L'Architecture de SAS Viya sur OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.

SAS Viya n'est pas un monolithe ; c'est une suite d'applications conteneurisées et de microservicesLes microservices sont une approche d'architecture logicielle où une application est décomposée en une collection de petits services indépendants, spécialisés et communicant entre eux via des APIs légères. Contrairement aux architectures "monolithiques" anciennes, chaque microservice remplit une fonction unique (ex: gestion du catalogue, authentification, moteur de calcul).

Dans SAS Viya 4, cette architecture est native. Elle permet à la plateforme de s'exécuter sur Kubernetes, offrant une flexibilité totale : chaque composant de SAS peut être mis à jour, redémarré ou mis à l'échelle (scaling) individuellement sans affecter le reste du système.
déployés sur Kubernetes. La migration vers OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
confère à Viya une scalabilité sans précédent par rapport aux versions antérieures.  

Ségrégation des Charges de Travail et Pools de Nœuds

SAS et Red Hat recommandent fortement une architecture de référence où différents types de charges de travail Viya sont assignés à des pools de machines (node pools) OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
dédiés. Cette approche garantit que les charges de travail CAS, intensives en ressources, n'interfèrent pas avec les applications web stateless ou les services de calcul. Par exemple, un pool de nœuds sera dédié à CAS, un autre aux services de calcul, et un troisième aux microservicesLes microservices sont une approche d'architecture logicielle où une application est décomposée en une collection de petits services indépendants, spécialisés et communicant entre eux via des APIs légères. Contrairement aux architectures "monolithiques" anciennes, chaque microservice remplit une fonction unique (ex: gestion du catalogue, authentification, moteur de calcul).

Dans SAS Viya 4, cette architecture est native. Elle permet à la plateforme de s'exécuter sur Kubernetes, offrant une flexibilité totale : chaque composant de SAS peut être mis à jour, redémarré ou mis à l'échelle (scaling) individuellement sans affecter le reste du système.
. Ce choix architectural influence directement les configurations de réseau, de stockage et de sécurité.  

Un Déploiement en "Sport d'Équipe"

La complexité de la pile logicielle signifie que le déploiement et la maintenance nécessitent une collaboration étroite entre plusieurs rôles : les administrateurs d'infrastructure (matériel/virtualisation), les administrateurs OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
(gestion du cluster) et les administrateurs SAS (déploiement du logiciel Viya). Ce rapport délimitera les tâches par rôle pour clarifier les responsabilités.  

Le Chemin de Communication Client-Serveur

La conception d'OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
privilégie intrinsèquement l'isolement des charges de travail au sein d'un réseau privé et sécurisé. Le déploiement par défaut de SAS Viya s'aligne sur ce principe, avec toutes les communications inter-services se produisant à l'intérieur du cluster. La demande de l'utilisateur, qui est de se connecter depuis l'extérieur, constitue une exception à ce modèle opérationnel par défaut.

Communication Intra-Cluster vs. Externe

Par défaut, les services Viya communiquent entre eux à l'intérieur du réseau défini par logiciel (SDN) d'OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
. Les pods peuvent s'atteindre via les noms de service Kubernetes internes (par exemple,
sas-cas-server-default-bin). Ces noms ne sont pas résolubles depuis l'extérieur du cluster.

Le Défi de l'Accès Externe

Le script Python de l'utilisateur est un client externe. Il réside en dehors de la frontière réseau du cluster. Par conséquent, un chemin réseau doit être explicitement créé pour relier le réseau externe au réseau interne du cluster. L'exposition du port binaire de CAS doit être traitée comme une décision architecturale majeure avec des ramifications de sécurité, et non comme un simple exercice de redirection de port.  

L'exposition du port binaire de CAS doit être traitée comme une décision architecturale majeure avec des ramifications de sécurité, et non comme un simple exercice de redirection de port.  

Flux Réseau de Haut Niveau

  1. Client Python : S'exécute sur un ordinateur portable ou un serveur externe.
  2. Pare-feu Externe / Groupe de Sécurité Réseau : Doit autoriser le trafic vers le point d'entrée du cluster.
  3. Point d'Entrée du Cluster OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

    Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
    : Typiquement une adresse IP de Load Balancer ou l'IP publique d'un nœud.
  4. Service Kubernetes : Un service de type NodePort ou LoadBalancer qui reçoit le trafic externe.
  5. Pod Contrôleur CASLe Contrôleur CAS est le nœud maître (Master Node) qui orchestre l'ensemble des opérations au sein du moteur de calcul "In-Memory" de SAS Viya 4. Il agit comme le cerveau du cluster : il reçoit les requêtes des utilisateurs (via Python, R ou SAS), planifie l'exécution des tâches et distribue les données aux nœuds de calcul (Workers).

    Dans une architecture Cloud Native (Kubernetes/OpenShift), le contrôleur assure la gestion des sessions, la communication entre les nœuds et la consolidation des résultats finaux pour les renvoyer à l'utilisateur.
    : La destination finale du trafic, s'exécutant à l'intérieur du cluster.

Préparation du Cluster OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
pour l'Accès Externe à CAS

Ce chapitre fournit les procédures détaillées, basées sur la ligne de commande, pour l'administrateur OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
. Ces actions nécessitent des privilèges d'administrateur de cluster (cluster-admin).  

Contraintes de Contexte de Sécurité (SCCs) : Accorder les Privilèges Nécessaires à CAS

OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
applique par défaut une politique de sécurité très stricte via la SCC restricted. Cependant, le serveur CAS a besoin de capacités spécifiques au niveau de l'hôte pour fonctionner correctement, notamment pour gérer les sessions utilisateur et la propriété des fichiers, ce que la SCC restricted interdit. Pour gérer cette situation, SAS fournit des SCCs personnalisés qui accordent ces privilèges nécessaires mais élevés.

J'ai abordé le sujet des SCC à de nombreuses reprises sur mon blog, n'hésitez pas à lire mes articles sur le sujet : Comprendre les SCC OpenshiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
pour Viya 4SAS Viya 4 est une plateforme d'IA, de data management et d'analytics de pointe, nativement conçue pour le Cloud (Cloud-Native). Contrairement aux versions précédentes, elle repose sur une architecture de microservices orchestrée par Kubernetes.

Elle permet de gérer l'intégralité du cycle de vie de la donnée — de l'ingestion à la mise en production des modèles (ModelOps) — en offrant une élasticité totale, une intégration transparente avec l'open-source (Python, R) et une interface unifiée pour les data scientists et les décideurs métiers.
.

Choix de la SCC Appropriée

L'administrateur doit choisir et appliquer l'une des SCCs suivantes, fournies dans les actifs de déploiement SAS :  

  • cas-server-scc : La SCC minimale requise. Elle permet au serveur CAS de s'exécuter en tant qu'utilisateur non-root spécifique (par exemple, UID/GID 1001/1001) mais accorde des capacités telles que SETUID, SETGID et CHOWN à un processus racine interne (launchsvcs) qui gère les sessions.  
  • cas-server-scc-host-launch : À utiliser lorsque les sessions CAS doivent s'exécuter sous l'identité réelle de l'hôte de l'utilisateur qui se connecte. Cela a des implications significatives en matière de sécurité et d'accès aux données et constitue une configuration plus privilégiée.  
  • cas-server-scc-sssd : Une version spécialisée pour les environnements intégrés avec SSSD pour l'authentification.  

Le tableau suivant résume les choix pour aider l'administrateur.

Nom de la SCCCas d'Utilisation / ObjectifCapacités Clés AccordéesCommande d'Application (kubectl)Commande de Liaison (oc)
cas-server-sccOpération standard (recommandée). Les sessions s'exécutent sous l'identité du service CAS.SETUID, SETGID, CHOWNkubectl apply -f sas-bases/examples/cas/configure/cas-server-scc.yamloc -n <namespace> adm policy add-scc-to-user sas-cas-server -z sas-cas-server
cas-server-scc-host-launchLancement en tant qu'hôte. Les sessions s'exécutent sous l'identité de l'utilisateur connecté. Nécessaire pour l'accès aux fichiers basés sur les permissions de l'utilisateur hôte.SETUID, SETGID, CHOWNkubectl apply -f sas-bases/examples/cas/configure/cas-server-scc-host-launch.yamloc -n <namespace> adm policy add-scc-to-user sas-cas-server-host -z sas-cas-server
cas-server-scc-sssdIntégration SSSD. Utilisé lorsque CAS est configuré pour s'intégrer avec un SSSD personnalisé.SETGID, SETUID, CHOWNkubectl apply -f sas-bases/examples/cas/configure/cas-server-scc-sssd.yamloc -n <namespace> adm policy add-scc-to-user sas-cas-server-sssd -z sas-cas-server

Étapes

  1. Appliquer le YAML de la SCC : L'administrateur doit appliquer la définition de la SCC choisie à partir des actifs de déploiement SAS.
1
oc apply -f sas-bases/examples/cas/configure/cas-server-scc.yaml 

Lier la SCC au Compte de Service : La SCC appliquée doit être liée au compte de service sas-cas-server, qui est l'identité sous laquelle les pods CAS s'exécutent

1
oc -n name-of-namespace adm policy add-scc-to-user sas-cas-server -z sas-cas-server

Source : Preparing for OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.

Exposer le Service Binaire CAS via Kustomize

La configuration des déploiements SAS Viya est un processus déclaratif géré par Kustomize. Les modifications ne sont pas effectuées de manière impérative avec des commandes  

oc, mais en modifiant des fichiers YAML et en réappliquant l'ensemble du manifeste de déploiement. Cette approche garantit que les déploiements sont reproductibles, auditables et cohérents.

Par défaut, le service binaire CAS n'est exposé qu'en interne (type ClusterIP). Pour le rendre accessible de l'extérieur, le service Kubernetes pour CAS doit être modifié à l'aide d'un transformateur Kustomize.

Le Transformateur cas-enable-external-services.yaml

SAS fournit un fichier transformateur d'exemple précisément à cette fin.  

  • Copier l'Exemple : L'administrateur doit copier le fichier d'exemple dans son répertoire de configuration spécifique au site.
cp $deploy/sas-bases/examples/cas/configure/cas-enable-external-services.yaml $deploy/site-config/cas/
  • Modifier le Transformateur : Le fichier contient des correctifs (patches) pour activer le service binaire. La partie clé consiste à définir publishBinaryService sur true et à définir le type de service.
Contenu exemple de site-config/cas/cas-enable-external-services.yaml

Source :Configure External Access to the CAS Server

Choisir le Type de Service : NodePort vs. LoadBalancer

Mettre à jour le kustomization.yaml de Base

La dernière étape consiste à ajouter une référence à ce nouveau transformateur dans le fichier kustomization.yaml principal du déploiement, afin qu'il soit appliqué lors du prochain kubectl apply.YAML

1
2
3
4
# Dans le fichier kustomization.yaml de base ($deploy/kustomization.yaml)
transformers:
-...
- site-config/cas/cas-enable-external-services.yaml

Ports Réseau et Configuration du Pare-feu

Le Port Clé : 5570

Le serveur CAS écoute les connexions de protocole binaire sur le port 5570 par défaut à l'intérieur du cluster. C'est le port cible interne vers lequel le trafic externe doit être acheminé.  

Mappage des Ports Expliqué

La distinction entre le port interne et le port externe est une source fréquente de confusion.

Règles de Pare-feu

L'administrateur doit s'assurer que tous les pare-feu réseau ou groupes de sécurité cloud (par exemple, AWS Security Groups, Azure Network Security Groups) sont configurés pour autoriser le trafic TCP entrant depuis les adresses IP du client Python vers le port NodePort ou LoadBalancer exposé.  

Le tableau suivant visualise le trajet d'un paquet réseau pour démystifier la traduction de port qui se produit.

Tableau 2 : Chemin Réseau et Mappage des Ports pour la Connexion Binaire

ÉtapeComposantIP/Port SourceIP/Port DestinationProtocoleNotes
1Client PythonIP_Client:Port_ÉphémèreIP_LoadBalancer:5570TCPLe client initie la connexion.
2Pare-feu / NSGIP_Client:Port_ÉphémèreIP_LoadBalancer:5570TCPDoit autoriser ce flux.
3Load BalancerIP_Client:Port_ÉphémèreIP_Nœud:NodePortTCPLe LB redirige vers un NodePort.
4Service Kube (kube-proxy)IP_Client:Port_ÉphémèreIP_Pod_CAS:5570TCPLe service mappe le NodePort au port du pod.
5Pod Contrôleur CASLe Contrôleur CAS est le nœud maître (Master Node) qui orchestre l'ensemble des opérations au sein du moteur de calcul "In-Memory" de SAS Viya 4. Il agit comme le cerveau du cluster : il reçoit les requêtes des utilisateurs (via Python, R ou SAS), planifie l'exécution des tâches et distribue les données aux nœuds de calcul (Workers).

Dans une architecture Cloud Native (Kubernetes/OpenShift), le contrôleur assure la gestion des sessions, la communication entre les nœuds et la consolidation des résultats finaux pour les renvoyer à l'utilisateur.
IP_Client:Port_ÉphémèreIP_Pod_CAS:5570TCPLe pod CAS reçoit la connexion.

Implémentation de la Connexion Python SWAT

Cette section se concentre sur le data scientist ou le développeur qui écrit le code Python.

La Bibliothèque swat : Votre Passerelle Python vers CAS

Le paquet sassoftware/python-swat est le client Python officiel et haute performance pour CAS. Il imite une grande partie de l'API du paquet Pandas pour offrir une expérience familière aux utilisateurs de Python.  

Protocoles Binaire vs. REST

SWAT prend en charge deux protocoles de communication :  

  • REST : Utilise HTTP/S. Il est plus portable car il est en pur Python mais a une surcharge plus élevée pour le transfert de données.
  • Binaire (Recommandé) : Utilise un protocole binaire propriétaire et haute performance. Il nécessite des bibliothèques C précompilées (incluses dans l'installation standard pip) et offre des performances supérieures, en particulier pour le chargement/téléchargement de grands ensembles de données. Ce rapport se concentre exclusivement sur le protocole binaire.

Installation et Prérequis

  • Installation standard via pip : pip install swat.  
  • Nécessite Python 64 bits (versions 3.7 à 3.12 supportées).  
  • Sur Linux, il a une dépendance sur la bibliothèque partagée libnuma.so.1. Si elle est manquante, le paquet numactl doit être installé (par exemple, sudo yum install numactl ou sudo apt-get install numactl).  

Établissement de la Connexion : L'Appel swat.CAS()

Le cœur de la connexion est un unique appel de fonction.Python

conn = swat.CAS(hostname=cas_host, port=cas_port,
username=cas_user, password=cas_password,
ssl_ca_list=ca_cert_path)

Détermination de hostname et port

Ces valeurs sont directement liées aux choix faits dans la Section 2.2.

Gestion du Chiffrement TLS/SSL

SAS Viya 4SAS Viya 4 est une plateforme d'IA, de data management et d'analytics de pointe, nativement conçue pour le Cloud (Cloud-Native). Contrairement aux versions précédentes, elle repose sur une architecture de microservices orchestrée par Kubernetes.

Elle permet de gérer l'intégralité du cycle de vie de la donnée — de l'ingestion à la mise en production des modèles (ModelOps) — en offrant une élasticité totale, une intégration transparente avec l'open-source (Python, R) et une interface unifiée pour les data scientists et les décideurs métiers.
impose le TLS de bout en bout par défaut. Toutes les connexions doivent être chiffrées. Le client (  

swat) doit faire confiance au certificat présenté par le serveur CAS. Le paramètre ssl_ca_list dans le constructeur swat.CAS est utilisé pour pointer vers un fichier contenant les certificats de l'Autorité de Certification (CA) de confiance. Ce paramètre n'est pas optionnel ; il est obligatoire pour une connexion réussie.  

Tâche de l'Administrateur : L'administrateur OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
doit extraire le certificat CA racine de SAS Viya du cluster (à partir du secret Kubernetes sas-viya-ca-certificate-secret) et le fournir de manière sécurisée à la machine cliente.  

Plongée dans l'Authentification : Méthodes pour le Protocole Binaire

Cette section détaille les différentes manières de fournir des informations d'identification à l'appel swat.CAS().

Méthode 1 : Nom d'Utilisateur et Mot de Passe Directs

Comme montré dans l'exemple ci-dessus. Simple, mais non sécurisé car il code en dur les informations d'identification dans les scripts. Convient uniquement pour les tests interactifs.  

Méthode 2 : Utilisation d'un Fichier .authinfo (Recommandé pour les Scripts)

Une méthode plus sécurisée qui évite de coder les mots de passe en dur. SWAT recherche automatiquement un fichier $HOME/.authinfo ou $HOME/.netrc.  

Méthode 3 : Jeton d'Accès OAuth 2.0 (L'Approche Moderne)

C'est la méthode la plus nuancée et la plus alignée sur les pratiques de sécurité modernes. Bien que OAuth soit natif des API REST, le jeton d'accès peut être utilisé comme un substitut de mot de passe pour la connexion binaire swat. Le mécanisme d'authentification principal de SAS Viya pour les API est OAuth 2.0. Le serveur CAS a été configuré pour accepter un jeton OAuth valide dans le champ du mot de passe de la connexion binaire et le valider auprès du SAS Logon Manager.  

Le flux d'authentification est un processus en deux étapes :

  1. Obtenir un jeton d'accès OAuth valide : Cela se fait via des appels à l'API REST de SAS Logon.
  2. Passer ce jeton dans l'appel swat.CAS() comme mot de passe.
  • Étape A : Obtenir le Jeton d'Accès Les clients (comme un script Python) doivent être enregistrés auprès du SAS Logon Manager par un administrateur pour obtenir un client_id et un client_secret. Le script effectue ensuite un appel à l'API REST vers le point de terminaison   /SASLogon/oauth/token pour recevoir un jeton d'accès.  
  • Étape B : Utiliser le Jeton avec SWAT :

Pour cet exemple je me suis basé sur la documentation ci-dessous, que je vous encourage a parcourir pour créer votre propre code python :

Validation, Sujets Avancés et Dépannage

Cette dernière section fournit les outils pour vérifier la configuration et résoudre les problèmes courants.

Vérification de la Connexion et de l'État du Serveur

  • La Méthode about() : La vérification la plus simple. Elle renvoie un dictionnaire avec la version de Viya et les informations sur le serveur. Un retour réussi confirme que la connexion est active.  
  • L'Action serverstatus() : Une vérification plus détaillée qui fournit l'état des nœuds du serveur CAS (contrôleur et workers), l'utilisation du CPU, la mémoire, etc. conn.serverstatus() est inestimable pour diagnostiquer les problèmes côté serveur.
  • Lister les Caslibs : L'exécution de conn.caslibInfo() confirme non seulement la connexion mais aussi que l'utilisateur a les permissions nécessaires pour voir les sources de données.  

Sujet Avancé : Lancement avec l'Identité de l'Hôte (cas-server-scc-host-launch)

  • Comportement par Défaut : Par défaut, toutes les sessions CAS et toutes les données qu'elles créent appartiennent à l'UID/GID du compte de service cas (par exemple, 1001/1001).  
  • Comportement de Lancement en tant qu'Hôte : Lorsque cas-server-scc-host-launch est utilisé (voir Section 2.1), CAS utilise ses privilèges élevés (SETUID/SETGID) pour lancer le processus de session en tant que l'identité de l'hôte de l'utilisateur qui se connecte. Par exemple, si l'utilisateur dave se connecte, le processus de session CAS s'exécutera en tant qu'utilisateur dave sur le système.  
  • Implications : C'est essentiel pour les environnements avec des permissions de système de fichiers strictes et basées sur l'utilisateur (par exemple, sur des montages NFS). Si Dave a besoin d'accéder à son répertoire personnel /nfs/home/dave, le processus CAS doit s'exécuter en tant que dave. C'est une configuration puissante mais plus complexe avec des considérations de sécurité plus profondes.

Scénarios de Dépannage Courants

Conclusion et Liste de Contrôle des Meilleures Pratiques

Le succès de l'établissement d'une connexion binaire externe à CAS sur OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
repose sur une séquence d'actions coordonnées entre les administrateurs de la plateforme et les développeurs.

Le flux de bout en bout est le suivant :

  1. Appliquer la SCC appropriée dans OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

    Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
    pour accorder à CAS les privilèges nécessaires.
  2. Exposer le service binaire CAS en utilisant un transformateur Kustomize et un service de type LoadBalancer.
  3. Configurer les pare-feu pour autoriser le trafic vers le port exposé.
  4. Fournir au client l'hôte, le port et le certificat CA du déploiement.
  5. Implémenter la connexion Python swat en utilisant une méthode d'authentification sécurisée comme les fichiers .authinfo ou la récupération programmatique de jetons OAuth.

Liste de Contrôle de l'Administrateur

  • [ ] Identifier le cas d'utilisation de la session CAS pour choisir entre cas-server-scc et cas-server-scc-host-launch.
  • [ ] Appliquer la SCC choisie et la lier au compte de service sas-cas-server dans le bon namespace.
  • [ ] Créer et configurer le transformateur cas-enable-external-services.yaml pour utiliser un service de type LoadBalancer.
  • [ ] Ajouter le transformateur au fichier kustomization.yaml de base.
  • [ ] Déployer les modifications en appliquant le manifeste Kustomize (kubectl apply -k.).
  • [ ] Configurer les règles de pare-feu/groupe de sécurité pour autoriser le trafic entrant sur le port du LoadBalancer depuis les IP clientes.
  • [ ] Extraire le certificat CA (sas-viya-ca-certificate.pem) du secret Kubernetes et le transmettre de manière sécurisée au développeur.

Liste de Contrôle du Développeur

  • [ ] S'assurer que la bibliothèque swat est installée dans un environnement Python 64 bits.
  • [ ] Sur Linux, vérifier que la dépendance libnuma.so.1 (numactl) est installée.
  • [ ] Obtenir l'hôte, le port et le fichier de certificat CA de l'administrateur.
  • [ ] Mettre en œuvre une gestion sécurisée des informations d'identification, en privilégiant l'utilisation d'un fichier .authinfo avec des permissions 600 ou la récupération de jetons OAuth.
  • [ ] Utiliser le paramètre ssl_ca_list dans l'appel swat.CAS() pour pointer vers le certificat CA fourni.
  • [ ] Inclure une gestion robuste des erreurs et des blocs try...finally pour s'assurer que les connexions sont toujours fermées.

Recommandation Finale

Pour tous les déploiements en production, l'utilisation de services de type LoadBalancer est fortement recommandée pour sa robustesse et sa stabilité. De même, l'utilisation de fichiers .authinfo ou la récupération programmatique de jetons OAuth doit être préférée à l'intégration de mots de passe en clair dans les scripts pour tous les processus scriptés et automatisés, garantissant ainsi une posture de sécurité améliorée.

Sources

SAS Viya on Red Hat OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
– Part 2: Security and Storage Considerations
Using SAS Viya with OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.
Reference Architecture
https://stackoverflow.com/questions/71388658/where-to-find-the-hostname-and-port-to-sas-hosted-servers-for-swat
Preparing for OpenShiftOpenShift est la plateforme Kubernetes d'entreprise de Red Hat conçue pour orchestrer, sécuriser et gérer le cycle de vie des applications conteneurisées.

Pour SAS Viya 4, OpenShift agit comme la fondation "Cloud Native" indispensable : il automatise le déploiement des microservices SAS, garantit la haute disponibilité des calculs analytiques et permet une portabilité totale entre le cloud public (Azure, AWS, GCP) et les infrastructures sur site.

Configure External Access to the CAS Server

SWAT - Getting Started
SAS developers - REST APIs Authentication Getting Started
SAS Logon API
Use the Python SWAT Package on the SAS Viya Platform

kubectl exec -it sas-consul-server-0 -c sas-consul-server -- bash -c "cat /security/trustedcerts.pem" > trustedcerts.pem

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.