Déploiement d'un Vault de développement pour HCL Commerce sur Kubernetes

Vault est utilisé pour stocker les configurations et les secrets de l'environnement HCL Commerce. Il est également utilisé comme une autorité de certification (CA), pour délivrer des certificats aux serveurs HCL Commerce et leur permettre de communiquer en toute sécurité sur SSL. Consul est utilisé en association avec Vault pour ses capacités de stockage de paires nom-valeur.

La charte Helm hcl-commerce-vaultconsul-helmchart déploie Vault et Consul pour les utiliser comme centre de configuration à distance, pour stocker les données de l'environnement HCL Commerce Version 9.1 et agir en tant qu'agent de certification pour délivrer des certificats à chaque serveur d'applications HCL Commerce en fonction de leurs noms de service uniques. Si vous prévoyez d'utiliser le mode de configuration Vault, Vault et Consul doivent être configurés pour pouvoir déployer l'application HCL Commerce Version 9.1. Une fois Vault et Consul déployés, ils peuvent être utilisés pour déployer et contrôler plusieurs environnements Commerce. Une fois Vault démarré, il peut exécuter des scripts pour charger les données de configuration de l'environnement HCL Commerce comme spécifié dans values.yaml, et peut également configurer un backend PKI (Public Key Infrastructure) pour émettre des certificats, s'il est activé via la configuration vaultConsul.vaultLoadData.

HCL Commerce Version 9.1.9.0 or laterNote: Consul et toutes les configurations associées ont été supprimés de HCL Commerce versions 9.1.9.0 et ultérieures. Toutefois, le nom de fichier de la charte Helm de Vault fournie reste le même.

Before you begin

  • Obtenez hcl-commerce-helmchart et hcl-commerce-vaultconsul-helmchart à partir de HCL License and Delivery portal. Pour obtenir des informations relatives aux versions à jour, voir HCL Commerce eAssemblies.
  • La charte Helm fourni tente d'extraire des images Vault et Consul Docker à partir de DockerHub. Si vous utilisez les paramètres par défaut, assurez-vous que votre environnement peut se connecter à Internet. Sinon, vous pouvez télécharger les images Docker et les placer dans un référentiel d'images Docker privé.

    La configuration pertinente est définie comme suit :

    Nom de l'attributValeurUtilisation
    vaultConsul.imageRepo
    • x86-64docker.io
    • Power
      • HCL Commerce Version 9.1.7.0 or laterdocker.io/ibmcom/
      • HCL Commerce Version 9.1.12.0 or latericr.io/ppc64le-oss/
    Définit le référentiel d'images Docker pour les images Vault et Consul Docker.
    HCL Commerce Version 9.1.7.0 or latervaultConsul.vaultImageName
    • x86-64vault
    • Powervault-ppc64le
    Nom de l'image Vault Docker.
    vaultConsul.vaultImageTag
    • x86-64
      • HCL Commerce Version 9.1.14.0 or later1.13.4
      • HCL Commerce Version 9.1.13.0 or later1.13.1
      • HCL Commerce Version 9.1.12.01.9.9
      • HCL Commerce Version 9.1.10.0 or later1.9.1
      • HCL Commerce Version 9.1.9.01.8.5
      • HCL Commerce Version 9.1.7.0 or later1.7.0
      • Editions antérieures : 1.3.3
    • Power
      • HCL Commerce Version 9.1.12.0 or later1.9.9
      • HCL Commerce Version 9.1.7.0 or later1.5.3-ubi8
    Balise de l'image Vault Docker.
    HCL Commerce Version 9.1.7.0 or latervaultConsul.consulImageName
    • x86-64consul
    • Powerconsul-ppc64le
    Nom de l'image Consul Docker.
    HCL Commerce Version 9.1.9.0 or laterNote: Supprimé dans HCL Commerce versions 9.1.9.0 et ultérieures.
    vaultConsul.consulImageTag
    • HCL Commerce Version 9.1.7.0 or laterx86-641.9.4
    • HCL Commerce Version 9.1.7.0 or laterPower1.8.3-ubi8
    • x86-64Pour les éditions antérieures à la version 9.1.7.0 : 1.7.1
    Balise de l'image Consul Docker.
    HCL Commerce Version 9.1.9.0 or laterNote: Supprimé dans HCL Commerce versions 9.1.9.0 et ultérieures.
    test.imagedocker.io/centos:latestLa commande Helm Test utilise l'image Centos Docker. Ceci est utilisé à des fins de test d'exactitude.
  • Dans le cadre du déploiement de Vault, Vault créera un secret de jeton Vault dans l'espace de noms commerce. Il sera créé dans cet espace de noms afin que l'application HCL Commerce puisse obtenir le jeton Vault à partir de ce secret. Cela nécessite que l'espace de noms commerce existe avant que vous puissiez déployer Vault.

    Si l'espace de noms commerce n'a pas été créé, vous pouvez le créer avec la commande Kubernetes suivante : kubectl create ns commerce. Si vous prévoyez de déployer HCL Commerce dans d'autres espaces de noms, vous devez alors également créer ces espaces de noms à ce stade et répertorier tous les espaces de noms de la section commerceNameSpaces de votre fichier de configuration.

    Il est également recommandé de déployer Vault dans un espace de noms séparé, tel que vault, pour servir pour tous les environnements HCL Commerce. Si vous n'avez pas d'espace de noms Vault dédié, vous pouvez le créer dès maintenant avec la même commande : kubectl create ns vault.

  • Avant de déployer Vault, vous devez planifier la façon dont vous allez déployer HCL Commerce, puis modifier les données en conséquence dans votre fichier values.yaml qui sera chargé dans Vault en tant qu'action postStart. Dans Vault, un nom de locataire sera utilisé comme un chemin de montage secret. Ce chemin secret contiendra un ou plusieurs environnements, et chaque environnement contient les paires clé-valeur (KV) pour cet environnement. Les paires KV de niveau d'environnement seront directement sous le chemin d'environnement, tandis que les paires KV d'instance auth et live sont sous auth ou live.
    Par exemple :
    /Demo # tenant path /qa # env path internalDomainName: commerce.svc.cluster.local # environment level properties … /auth # auth instance path dbHost: myDb.com # auth instance level properties … /live # live instance path dbHost: myLiveDb.com # live instance level properties 
  • Créez une copie du fichier de configuration Vault, values.yaml à utiliser dans votre déploiement Vault personnalisé.

    Il est fortement recommandé de ne pas modifier le fichier values.yaml par défaut pour votre déploiement. Au lieu de cela, faire une copie du fichier pour la personnalisation, par exemple, my-values.yaml.

Note:
  • HCL Commerce Version 9.1.7.0 or laterPowerPar défaut, les chartes Helm fournies sont activées pour les déploiements x86-64. La prise en charge complète de Power Linux (ppc64le) a été ajoutée aux chartes Helm dans HCL Commerce version 9.1.7.0. Pour activer le déploiement de Power, ouvrez le fichier de configuration values.yaml dans le hcl-commerce-vaultconsul-helmchart pour désactiver les valeurs x86-64 fournies et activer les valeurs Power respectives.
  • Assurez-vous d'utiliser les versions spécifiées dans le tableau ci-dessus. Ces versions sont testées et certifiées pour fonctionner avec HCL Commerce. Il n'y a aucune garantie que d'autres versions marquées fonctionneront avec HCL Commerce comme prévu.
  • Les limites de ressources ne sont pas définies pour l'utilisation de Vault-Consul avec HCL Commerce . Leur utilisation avec HCL Commerce dans cette configuration fournie permet de prendre en charge le déploiement d'un environnement hors production. Elles ne sont pas conçues ou destinées à être utilisées dans toutes les applications de performance.

Procedure

  1. HCL Commerce Version 9.1.7.0 or later Définissez un certificat d'autorité de certification (CA) et configurez son mode d'utilisation par Vault.
    La charte Helm fournie déploie le coffre en mode développement pour contourner le processus d'ouverture. Dans ce mode, toutes les données seront stockées en mémoire uniquement. Les données de configuration sont définies dans le fichier de valeurs Helm, de sorte qu'elles sont chargées chaque fois que Vault est redéployé ou redémarré. Toutefois, le certificat d'AC racine ne peut pas être persistant, sauf s'il est défini et persistant dans un secret. Par conséquent, la charte Helm permet de spécifier ou de générer automatiquement un certificat d'AC, puis de le conserver dans un secret TLS.
    Choisissez une des options suivantes :
    • Autorisez la charte Helm Vault à générer et à faire persister automatiquement le certificat d'AC.
      Pour permettre à la charte Helm Vault de créer automatiquement un certificat d'AC et de créer un secret TLS, définissez les paramètres de configuration suivants :
      • externalCA.enabled sur true
      • externalCA.autoCreate sur true
      Cette logique de création automatique requiert également l'image du conteneur de support. Assurez-vous qu'il est configuré à l'aide des paramètres supportC.imageRepo, supportC.image et supportC.tag.
      Note: La génération automatique de certificat d'AC n'est implémentée que lors de l'installation de la charte Helm (à l'aide de helm install). Par conséquent, si vous avez déployé Vault à l'aide de la version précédente de la charte Helm, ou si vous souhaitez modifier votre certificat d'AC après le déploiement, vous devez supprimer et installer à nouveau la charte Helm afin d'implémenter cette méthode de génération de certificat d'AC.
    • Générez et spécifiez manuellement votre certificat d'AC.
      Créez un certificat d'AC autosigné et configurez-le pour l'utiliser dans le déploiement Vault.
      1. Générez le certificat d'AC autosigné.
        1. Créer une clé privée, private.key.
          openssl genrsa -out private.key 2048
        2. Créez un certificat d'AC basé sur la clé privée.
          openssl req -x509 -new -nodes -key private.key -days 730 -out ca.pem -config req.conf
          Où le fichier de configuration req.conf contient la spécification suivante.
          [ req ] prompt=no distinguished_name=dn x509_extensions=ext [ dn ] CN=My Company CA [ ext ] basicConstraints=CA:TRUE
        3. Créez un certificat TLS dans l'espace de noms vault pour l'utiliser avec Vault, à l'aide de kubectl.
          kubectl create secret tls my-vault-ca --cert=ca.pem --key=private.key -n vault
        4. Mettez à jour votre fichier de configuration de déploiement Vault (en fonction de la version values.yaml fournie)
          externalCA: enabled: true existingSecretName: 'my-vault-ca' autoCreate: false
  2. Modifiez les valeurs de configuration de déploiement, en fonction du fichier values.yaml fourni.
    1. Modifiez le nom du locataire si vous souhaitez le nommer différemment. Si vous modifiez le nom du locataire ici, vous devez également modifier le nom du locataire dans les valeurs de charte Helm HCL Commerce fournies pour qu'elles correspondent.
    2. Par défaut, l'entrée pour le service Vault n'est pas activée. Si vous souhaitez créer une entrée pour accéder à l'interface utilisateur Vault, définissez enableIngress sur true.
      HCL Commerce Version 9.1.7.0 or laterPowerRestriction: L'interface utilisateur Vault n'est pas disponible pour les déploiements sur Power Linux.
    3. Renseignez la section commerceNameSpaces avec vos espaces de noms HCL Commerce.
      Par exemple, si vous souhaitez déployer deux environnements HCL Commercedev et qa dans les espaces de noms commerce-dev et commerce-qa, vous devez exécuter les commandes suivantes :
      kubectl create ns commerce-dev kubectl create ns commerce-qa
      Ajoutez ce qui suit à votre section commerceNameSpaces :
      commerceNameSpaces: - commerce-dev - commerce-qa
    4. Mettez à jour les valeurs de configuration de déploiement vaultConsul suivantes.
      • Mettez à jour les valeurs imageRepo, consulImageName, consulImageTag, vaultImageName et vaultImageTag si vous souhaitez tester différentes images Consul ou Vault.

        Cela n'est pas recommandé.

      • Remplacez la valeur vaultToken par celle que vous souhaitez utiliser.

        Si la valeur par défaut est modifiée, vous devez coder votre jeton dans Base64 en exécutant echo -n newToken | base64 et l'utiliser pour mettre à jour la valeur vaultTokenBase64.

      • HCL Commerce Version 9.1.10.0 or laterActivez et mettez à jour la section vaultLoadDataWithSecret pour améliorer la sécurité de vos données Vault. Assurez-vous également que vaultLoadData est activé pour charger des données.

        Cette option étant activée, vous pouvez ignorer la section vaultData de la charte Helm. Toutes les paires clé-valeur sensibles sont désormais protégées contre l'exposition dans les fichiers de configuration de déploiement.

        Si vous choisissez cette méthode, vous devez alors créer manuellement un secret et placer le nom secret dans la zone secretName.

        Un exemple de fichier de configuration YAML se trouve dans le répertoire sample_secret. Utilisez cet exemple pour vous assurer que votre configuration est effectuée correctement.

      • Mettez à jour les valeurs sous vaultData pour refléter votre environnement.

        Par exemple, mettez à jour les informations de votre base de données.

  3. Installez la charte Helm.
    Exécutez la commande suivante :
    helm install vault-consul ./hcl-commerce-vaultconsul -f my-values.yaml -n vault
    Où :
    vault-consul
    Nom de la version.
    ./hcl-commerce-vaultconsul
    Chemin d'accès à la charte Helm.
    my-values.yaml
    Votre fichier de configuration personnalisé basé sur le values.yaml fourni.
    vault
    Espace de noms indépendant que vous avez créé pour Vault.
  4. Vérifiez le déploiement de Vault et Consul et vérifiez la charte.
    • Exécutez kubectl get pods -n vault pour vous assurer que vault-consul-xxxx affiche 2/2 dans la colonne READY.

      NAME READY STATUS RESTARTS AGE vault-consul-676d9c5485-hc44b 2/2 Running 0 20d
    • Exécutez kubectl get secret vault-token-secret -n commerce pour répertorier le secret dans votre espace de noms commerce pour vous assurer que le secret a été créé.
      Par exemple :
      kubectl get secret vault-token-secret -n commerce NAME TYPE DATA AGE vault-token-secret Opaque 1 7m44s
    • Exécutez helm test vault-consul -n vault pour vérifier la charte. Vous devez voir une sortie similaire à la suivante.
      helm test vault-consul -n vault Pod vault-consul-health-test pending Pod vault-consul-health-test pending Pod vault-consul-health-test pending Pod vault-consul-health-test running Pod vault-consul-health-test succeeded NAME: vault-consul LAST DEPLOYED: Tue May 12 00:44:29 2020 NAMESPACE: vault STATUS: deployed REVISION: 1 TEST SUITE: vault-consul-health-test Last Started: Thu Jun 25 16:06:27 2020 Last Completed: Thu Jun 25 16:06:35 2020 Phase: Succeeded

Results

Vault est configuré et déployé.
Vous pouvez mettre à jour leur configuration à tout moment en mettant à jour votre configuration vaultData et en exécutant la commande suivante :
helm upgrade vault-consul ./hcl-commerce-vaultconsul -f my-values.yaml -n vault
HCL Commerce Version 9.1.10.0 or laterNote: Si vous utilisez vaultLoadDataWithSecret pour charger des données, vous pouvez uniquement mettre à jour les valeurs de Vault en mettant à jour le secret de données, puis supprimer le pod Vault existant pour forcer un redémarrage.

Vous pouvez désinstaller la charte Helm à tout moment en exécutant helm delete vault-consul -n vault.