Créer un ticket Mes tickets
Bienvenue
Connexion  S'inscrire

Orchestrer l'exécution du connecteur Desktop avec Kubernetes (k8s)

Pour exécuter le connecteur Desktop automatiquement de manière régulière, il est possible d'utiliser la version Docker du connecteur et de planifier l'exécution d'un job dans un orchestrateur de conteneurs comme Kubernetes

Cette page apporte quelques renseignements utiles à la mise en place de cette configuration. 

Le fonctionnement de Kubernetes est en dehors du périmètre de cette page. Pour toute question relative à votre orchestrateur, veuillez vous référer à la documentation et au support de votre éditeur (AWS EKS, Azure AKS, Red Hat OpenShift etc.). Dans cet exemple, nous utilisons la version minikube de Kubernetes.

En prérequis, vous devez avoir pris connaissance de la documentation sur la version Docker du connecteur. Vous aurez besoin de l'image du connecteur ainsi que du plugin correspondant à votre source de données.

Concernant le plugin, il est possible de l'intégrer dans l'image Docker ou bien de le monter à l'exécution. Dans cet exemple nous utilisons un point de montage pour insérer le plugin dans l'image du connecteur.

Vérification du bon fonctionnement de l'image et de la configuration

Avant de planifier le job du connecteur sur l'orchestrateur, il est prudent de vérifier que tout fonctionne correctement en lançant le connecteur en ligne de commande avec docker run. Dans l'exemple de la documentation sur la version Docker du connecteur (mode API), assurez-vous que l'étape suivante s'exécute avec succès :

docker run -v /path/to/connector:/workdir -v /path/to/plugins:/extra-libs \
      datagalaxy.azurecr.io/public/docker/connector-cli:3.2.3 \
      import-api \
      --config /workdir/config/azuresql.properties \
      --token /workdir/token/datagalaxy-token.properties \
      --project-name Demo \
      --source-name "DB AzureSQL" \
      --password secret

Suite à l'exécution de cette commande, les objets de la base Azure SQL ont dû être créés dans le dictionnaire DataGalaxy sous la base de données "DB AzureSQL". Bien sûr, vous aurez pris soin d'adapter cette commande à votre contexte.

Construction du fichier .yaml de description de job Kubernetes

Vous êtes maintenant prêts à créer le fichier .yaml qui permettra de créer le job planifié dans votre orchestrateur. 

Voici un fichier exemple qui peut servir de point de départ pour votre configuration. Selon votre contexte et les règles d'utilisation de Kubernetes dans votre organisation, vous pourriez avoir besoin de rajouter des éléments de configuration dans ce fichier, cependant les directives présentées ici constituent le minimum nécessaire. Cette configuration a été validée sur un environnement minikube.

apiVersion: batch/v1
kind: Job
metadata:
  name: azuresql-connector
spec:
  template:
    spec:
      containers:
      - name: azuresql-connector
        image: datagalaxy.azurecr.io/public/docker/connector-cli:3.2.3
        imagePullPolicy: Never
        args: 
        - import-api
        - --password
        - secret
        - --config
        - /workdir/config/azuresql.properties
        - --token
        - /workdir/token/datagalaxy-token.properties
        - --project-name
        - Demo
        - --source-name
        - DB AzureSQL
        - --create-source
        volumeMounts:
          - name: workdir
            mountPath: /workdir
          - name: plugin
            mountPath: /extra-libs/datagalaxy-plugin-azuresql-3.0.0.jar
      restartPolicy: Never
      volumes:
        - name: workdir
          hostPath:
            path: /minikube-host/path/to/connector
            type: Directory
        - name: plugin
          hostPath:
            path: /minikube-host/path/to/plugins/datagalaxy-plugin-azuresql-3.0.0.jar
            type: File
  backoffLimit: 0
La configuration des volumes montés localement (hostPath) convient pour le test avec l'environnement minikube, mais n'est pas une solution recommandée en production.
Le password, qui est un des arguments du job, est passé ici en clair dans le fichier de configuration. L'usage des secrets Kubernetes est plus sécurisé. Le secret peut être alors passé via une variable d'environnement, qui peut être utilisée comme argument du job, comme expliqué dans la documentation Kubernetes.

Lancement du job sur Kubernetes et suivi avec kubectl

Pour appliquer la configuration du job sur l'orchestrateur, il suffit d'appliquer la configuration .yaml classiquement avec la commande kubectl apply.

kubectl apply -f azuresql-connector.yaml

Pour suivre les logs d'exécution du job, rechercher d'abord le pod correspondant au job :

kubectl get pods --selector=job-name=azuresql-connector

Puis suivre les logs du pod :

kubectl logs azuresql-connector-abc12

Cette réponse a-t-elle été utile ? Oui Non

Envoyer vos commentaires
Désolés de n'avoir pu vous être utile. Aidez-nous à améliorer cet article en nous faisant part de vos commentaires.