Opérateur Kubernetes

L'opérateur Kubernetes synchronise les entrées d'identifiants Devolutions Server en tant que Secrets Kubernetes.

Cet opérateur utilise la ressource personnalisée définie DvlsSecret qui gère son propre Secret Kubernetes et se mettra à jour à un intervalle défini (chaque minute par défaut). L'image Docker peut être trouvée ici.

Pour en savoir plus sur l'Opérateur Kubernetes, consulter notre GitHub.

Cet opérateur est en cours de développement, attendez-vous à des changements incompatibles entre les versions.

Configuration de l'opérateur

Les variables d'environnement suivantes peuvent être utilisées pour configurer l'opérateur :

  • DEVO_OPERATOR_DVLS_BASEURI (requis) - URI de base de l'instance Devolutions Server

  • DEVO_OPERATOR_DVLS_APPID (requis) - ID de l'application Devolutions Server

  • DEVO_OPERATOR_DVLS_APPSECRET (requis) - Secret d'application Devolutions Server

  • DEVO_OPERATOR_REQUEUE_DURATION (optionnel) - Intervalle de resynchronisation des Entrées/Secrets (par défaut 60s). Les unités de temps valides sont "ns", "us" (ou "µs"), "ms", "s", "m", "h".

  • SSL_CERT_FILE (facultatif) - Chemin vers un fichier de certificat CA personnalisé pour les serveurs Devolutions Server avec des certificats auto-signés. Ceci est automatiquement défini par le graphique Helm lorsque instanceSecret.caCert est fourni.

Un exemple de ressource personnalisée est disponible ici. L'ID d'entrée peut être récupéré en accédant aux propriétés de l'entrée, Avancé -> ID de session.

Configuration de Devolutions Server

Il est recommandé de créer un ID d'application spécifiquement pour l'utilisation avec l'Opérateur qui a un accès minimal à un coffre ne contenant que les secrets à synchroniser.

Seules les entrées d'identifiants sont prises en charge pour le moment. Les données d'entrée disponibles dépendront du type d'entrée d'identifiants.

Configuration Kubernetes

Étant donné que cet opérateur utilise des Secrets Kubernetes, il est recommandé de suivre les meilleures pratiques concernant les secrets, en particulier le chiffrement au repos.

Démarrage

Vous aurez besoin d'un cluster Kubernetes pour exécuter. Vous pouvez utiliser KIND pour obtenir un cluster local pour les tests, ou exécuter sur un cluster distant. Remarque : Votre contrôleur utilisera automatiquement le contexte actuel de votre fichier kubeconfig (c'est-à-dire, quel que soit le cluster que montre kubectl cluster-info).

Diagramme Helm

Un diagramme Helm est disponible pour simplifier l'installation. Ajouter le dépôt de charts Helm Devolutions, créer un values.yaml à partir des valeurs par défaut comme point de départ, et mettre à jour les valeurs selon les besoins.

Configuration requise

Les valeurs suivantes doivent être configurées dans votre values.yaml:

  • controllerManager.manager.env.devoOperatorDvlsBaseuri - Votre URL Devolutions Server (par exemple, https://dvls.example.com).

  • controllerManager.manager.env.devoOperatorDvlsAppid - ID d'application de votre Devolutions Server.

  • instanceSecret.secret - Secret d'application de votre Devolutions Server .

Configuration optionnelle

  • instanceSecret.caCert - Certificat CA personnalisé pour Devolutions Server auto-signé (voir ci-dessous)

  • controllerManager.manager.env.devoOperatorRequeueDuration - Fréquence de synchronisation des secrets (par défaut : 60s)

Configuration d'exemple de base

Créer un fichier values.yaml avec votre configuration Devolutions Server :

controllerManager:
  manager:
    env:
      devoOperatorDvlsAppid: "00000000-0000-0000-0000-000000000000"
      devoOperatorDvlsBaseuri: "https://dvls.example.com"
      devoOperatorRequeueDuration: "60s"

instanceSecret:
  secret: "your-app-secret-here"

Installation

helm repo add devolutions-helm-charts https://devolutions.github.io/helm-charts
helm repo update
helm install dvls-kubernetes-operator devolutions-helm-charts/dvls-kubernetes-operator --values values.yaml

Utiliser un certificat CA personnalisé

Si votre Devolutions Server utilise un certificat auto-signé (commun dans les environnements de test/développement), vous devez fournir le certificat CA pour que l'opérateur puisse établir une connexion TLS de confiance.

Quand l'utiliser :

  • Tester avec des certificats auto-signés.

  • Certificats CA internes non présents dans le magasin de confiance du système.

  • Environnements de développement/staging avec PKI personnalisé.

Configuration :

Ajouter le contenu du certificat CA à votre values.yaml:

controllerManager:
  manager:
    env:
      devoOperatorDvlsAppid: "00000000-0000-0000-0000-000000000000"
      devoOperatorDvlsBaseuri: "https://dvls.example.com"
      devoOperatorRequeueDuration: "60s"

instanceSecret:
  secret: "your-app-secret"
  # Add your CA certificate here (PEM format)
  caCert: |
    -----BEGIN CERTIFICATE-----
    MIIDXTCCAkWgAwIBAgIJAKZ...
    (your CA certificate content)
    ...
    -----END CERTIFICATE-----

Exécution sur le cluster

  1. Installer des instances de ressources personnalisées :

kubectl apply -f config/samples/

  1. Construire et pousser votre image à l'emplacement spécifié par IMG :

make docker-build docker-push IMG=/dvls-kubernetes-operator:tag

  1. Déployer le contrôleur dans le cluster avec l'image spécifiée par IMG :

make deploy IMG=/dvls-kubernetes-operator:tag

Désinstaller les CRD

Pour supprimer les CRD du cluster :

make undeploy

Contribuer

Comment cela fonctionne

Ce projet vise à suivre le modèle d'Opérateur Kubernetes.

Il utilise des contrôleurs qui fournissent une fonction de réconciliation responsable de la synchronisation des ressources jusqu'à ce que l'état souhaité soit atteint sur le cluster

Tester

  1. Installer les CRD dans le cluster :

make install

  1. Exécuter votre contrôleur (cela s'exécutera au premier plan, alors passer à un nouveau terminal si vous souhaitez le laisser s'exécuter) :

make run

REMARQUE : Vous pouvez également exécuter cela en une étape en exécutant : make install run

Modifier les définitions de l'API

Si vous modifiez les définitions de l'API, générer les manifestes tels que CR ou CRD en utilisant :

make manifests

REMARQUE : Lancer make --help pour plus d'informations sur tous les cibles possibles de make

Plus d'informations peuvent être trouvées via la documentation Kubebuilder.

Devolutions Forum logo Partagez vos commentaires