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.
Note: 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'attribut Valeur Utilisation vaultConsul.imageRepo
docker.io
docker.io/ibmcom/
icr.io/ppc64le-oss/
Définit le référentiel d'images Docker pour les images Vault et Consul Docker.
vaultConsul.vaultImageName
vault
vault-ppc64le
Nom de l'image Vault Docker. vaultConsul.vaultImageTag
1.13.4
1.13.1
1.9.9
1.9.1
1.8.5
1.7.0- Editions antérieures : 1.3.3

1.9.9
1.5.3-ubi8
Balise de l'image Vault Docker.
vaultConsul.consulImageName
consul
consul-ppc64le
Nom de l'image Consul Docker.
Note: Supprimé dans HCL Commerce versions 9.1.9.0 et ultérieures.vaultConsul.consulImageTag

1.9.4

1.8.3-ubi8
Pour les éditions antérieures à la version 9.1.7.0 : 1.7.1
Balise de l'image Consul Docker.
Note: 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.

Par 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
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.enabledsur trueexternalCA.autoCreatesur true
supportC.imageRepo,supportC.imageetsupportC.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 dehelm 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.
- Générez le certificat d'AC autosigné.
- Créer une clé privée, private.key.
openssl genrsa -out private.key 2048 - 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.confOù 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 - Créez un certificat TLS dans l'espace de noms
vaultpour l'utiliser avec Vault, à l'aide dekubectl.kubectl create secret tls my-vault-ca --cert=ca.pem --key=private.key -n vault - 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
- Créer une clé privée, private.key.
- Générez le certificat d'AC autosigné.
- Autorisez la charte Helm Vault à générer et à faire persister automatiquement le certificat d'AC.
-
Modifiez les valeurs de configuration de déploiement, en fonction du fichier values.yaml fourni.
-
Installez la charte Helm.
Exécutez la commande suivante :
helm install vault-consul ./hcl-commerce-vaultconsul -f my-values.yaml -n vaultOù :- 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.
-
Vérifiez le déploiement de Vault et Consul et vérifiez la charte.
-
Exécutez
kubectl get pods -n vaultpour vous assurer quevault-consul-xxxxaffiche2/2dans la colonneREADY.NAME READY STATUS RESTARTS AGE vault-consul-676d9c5485-hc44b 2/2 Running 0 20d - Exécutez
kubectl get secret vault-token-secret -n commercepour 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 vaultpour 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
helm upgrade vault-consul ./hcl-commerce-vaultconsul -f my-values.yaml -n vault
Note: 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.