Passer au contenu principal

Déploiements avancés

Déploiement multi-instance

Pour des raisons opérationnelles, par exemple, exécuter une plateforme de développement et de validation ou exécuter une instance ThingPark Enterprise et ThingPark Wireless, vous pouvez vouloir déployer plusieurs occurrences ThingPark sur le même cluster Kubernetes. Ce scénario nécessite les configurations suivantes pour les composants intégrés.

Opérateur Percona psmdb (pile de données)

L'opérateur Percona psmdb doit être déployé par instance ThingPark pour séparer leurs cycles de mise à jour. La définition de ressource personnalisée étendant l'API Kubernetes est mise à jour par la première instance mise à jour.

information

Percona a configuré son opérateur PSMDB pour surveiller uniquement les Custom Resources dans l' namespace où il a été déployé. Aucune configuration supplémentaire n'est requise.

Operateur Strimzi (pile de données)

L'opérateur Strimzi doit également être déployé par instance de ThingPark pour les mêmes raisons d'indépendance. Il surveille également uniquement les Custom Resources dans le namespace de déploiement de ThingPark.

La deuxième instance de ThingPark doit être personnalisée pour ne pas déployer les ressources globales. Ajoutez le paramètre suivant pour le désactiver :

strimzi-kafka-operator:
createGlobalResources: false

Opérateur cert-manager (pile d'application)

Avec plusieurs instances, il est préférable d'utiliser un déploiement autonome externe de cert-manager. Utilisez le guide d'installation du produit pour le déployer. De plus, chaque instance de Thingpark doit être personnalisée pour ne pas déployer le contrôleur :

cert-manager:
enabled: false

Ingress nginx (pile d'application)

Chaque instance de Thingpark nécessite un contrôleur ingress nginx dédié pour les raisons suivantes :

  • le contrôleur est spécifiquement configuré pour répondre aux besoins de l'application.
  • le contrôleur et le service LoadBalancer sont configurés pour recueillir tous les flux entrants de Thingpark.

Pour chaque instance de ThingPark, les paramètres suivants doivent être personnalisés :

  • ingress-nginx.controller.admissionWebhooks.namespaceSelector :

    • Description : Définir un namespaceSelector pour restreindre la surveillance du webhook sur le namespace de déploiement

    • Exemple :

      namespaceSelector:
      matchExpressions:
      - key: kubernetes.io/metadata.name
      operator: In
      values:
      - <namespace name>
  • ingress-nginx.controller.ingressClass :

    • Description : Définir le nom de la classe d'ingress surveillée par le contrôleur
    • Exemple : ingressClass: <ingress class name>
  • ingress-nginx.controller.ingressClassResource :

    • Description : Définir le nom de la classe d'ingress créée pour l'instance ThingPark

    • Exemple :

      ingressClassResource:
      name: <ingress class name>
      enabled: true
      default: false
      controllerValue: "k8s.io/<ingress class name>"
  • <chart name>.ingress.className :

    • Description : Définir chaque ressource ingress déployée par chaque sous-chart avec ingressClass créée pour l'instance ThingPark

    • Exemple :

      twa:
      ingress:
      className: "<ingress class name>"
astuce

Un exemple complet se trouve dans le répertoire de configuration, le dossier multi-instance.

Déploiement sur métal nu

Lorsque Thingpark est déployé sur votre infrastructure, vous pouvez ne pas disposer des mêmes services de stockage en bloc ou de stockage en réseau. ThingPark peut être déployé en utilisant le stockage local des travailleurs Kubernetes. Dans ce cas, les prérequis supplémentaires sont :

  • un stockage local partitionné en XFS
  • un stockage local partitionné en ext4

Vous pouvez profiter d'un approvisionnement dynamique en utilisant rancher local-path-provisioner, sauf pour le volume ftp-lrc. Le répertoire racine de ce volume doit être approvisionné avec des autorisations 755 tandis que local-path-provisioner utilise les permissions 777 permettant à un utilisateur non privilégié de créer des dossiers ou des fichiers.

astuce

Un exemple complet se trouve dans le répertoire de configuration, le dossier hosting.