Desplegar el almacén de Vault para HCL Commerce en Kubernetes
El almacenamiento se utiliza para almacenar HCL Commerce configuraciones y secretos de entorno. También se utiliza como autoridad de certificación (CA), para emitir certificados a los servidores de HCL Commerce y permitirles comunicarse de forma segura a través de SSL. Consul se utiliza junto con Vault para las funciones de almacenamiento de pares nombre-valor.
El Helm Charthcl-commerce-vaultconsul-helmchart implementa Vault y Consul para su uso como centro de configuración remoto, almacenando HCL Commerce Version 9.1 los datos del entorno y actuando como agente de certificación para emitir certificados a cada HCL Commerce servidor de aplicaciones en función de sus nombres de servicio únicos. Si tiene previsto utilizar el modo de configuración Vault, es necesario que tanto Vault como Consul estén configurados antes de poder implementar la aplicación HCL Commerce Version 9.1. Una vez implementados Vault y Consul, pueden utilizarse para implementar y controlar múltiples entornos de Comercio. Una vez iniciado Vault, puede ejecutar scripts para cargar los datos de configuración del entorno HCL Commerce, tal y como se especifica en values.yaml, y también puede configurar un backend de Infraestructura de Clave Pública (PKI) para emitir certificados, si se habilita a través de la configuración vaultConsul.vaultLoadData
.
![HCL Commerce Version 9.1.9.0 or later](../../base/images/9190plus.png)
Before you begin
- Obtenga hcl-commerce-helmchart y hcl-commerce-vaultconsul-helmchart del HCL License and Delivery portal. Para obtener información actualizada sobre la publicación, consulte HCL Commerce eAssemblies.
- El gráfico de Helm proporcionado intenta extraer las imágenes de Docker Consul y de Vault de DockerHub. Si utiliza los valores predeterminados, asegúrese de que el entorno puede conectarse a Internet. De lo contrario, puede descargar las imágenes de Docker y colocarlas en un repositorio de imágenes de Docker privado.
La configuración relevante se define de la siguiente manera:
Nombre del atributo Valor Usage vaultConsul.imageRepo
docker.io
docker.io/ibmcom/
icr.io/ppc64le-oss/
Define el repositorio de imágenes de Docker para Vault y Consul Docker. vaultConsul.vaultImageName
vault
vault-ppc64le
El nombre de la imagen Vault Docker. vaultConsul.vaultImageTag
1.13.4
1.13.1
1.9.9
1.9.1
1.8.5
1.7.0
- Publicaciones anteriores: 1.3.3
1.9.9
1.5.3-ubi8
La etiqueta de imagen Vault Docker. vaultConsul.consulImageName
consul
consul-ppc64le
El nombre de la imagen Consul Docker. Note: Se ha eliminado en HCL Commerce 9.1.9.0 y versiones posteriores.
vaultConsul.consulImageTag
1.9.4
1.8.3-ubi8
Para las versiones anteriores a la 9.1.7.0:
1.7.1
La etiqueta de imagen Consul Docker. Note: Se ha eliminado en HCL Commerce 9.1.9.0 y versiones posteriores.
test.image
docker.io/centos:latest
El mandato de prueba de Helm utiliza la imagen de Docker de Centos. Esto se utiliza para fines de prueba de validez. - Como parte del despliegue de Vault, este creará un secreto de señal de Vault en el espacio de nombres de commerce. Se creará dentro de este espacio de nombres para que la aplicación HCL Commerce pueda obtener el inventario Vault de ese secreto. Esto requiere que el espacio de nombres de Commerce exista antes de poder desplegar Vault.
Si el espacio de nombres de Commerce no se ha creado, puede crearlo con el siguiente mandato Kubernetes:
kubectl create ns commerce
. Si tiene previsto desplegar HCL Commerce en otros espacios de nombres, entonces también debe crear estos espacios de nombres en este momento y enumerar todos los espacios de nombres en la sección commerceNameSpaces del archivo de configuración.También se recomienda desplegar Vault en un espacio de nombres separado, como por ejemplo vault, para servir a todos los entornos de HCL Commerce. Si no tiene un espacio de nombres Vault dedicado, puede crearlo ahora con el mismo mandato:
kubectl create ns vault
. - Antes de desplegar Vault, debe planificar cómo va a desplegar HCL Commerce y, a continuación, modificar como corresponda los datos en el archivo values.yaml que se cargarán en Vault como una acción
postStart
. En Vault, se utilizará un nombre de arrendatario como vía de acceso de montaje secreta. Esta vía de acceso secreta contendrá uno o varios entornos, y cada entorno contendrá los pares clave-valor (KV) para dicho entorno. Los pares de KV a nivel de entorno estarán en la vía de acceso de entorno directamente, mientras que los pares de KV específicos de las instancias auth y live están bajo auth o live.Por ejemplo:/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
- Cree una copia del archivo de configuración de Vault, values.yaml para utilizarlo en su implementación personalizada de Vault.
Es muy recomendable no modificar el archivo values.yaml predeterminado para el despliegue. En su lugar, haga una copia del archivo para la personalización, por ejemplo, my-values.yaml.
Por defecto, los Helm Charts proporcionados están habilitados para las implantaciones x86-64. La compatibilidad con Full Power Linux (ppc64le) se ha añadido a los gráficos de Helm en HCL Commerce 9.1.7.0. Para habilitar el despliegue de Power, abra el archivo de configuración values.yamlen el hcl-commerce-vaultconsul-helmchart para inhabilitar los valores de x86-64 proporcionados y habilite los Power respectivos.
- Asegúrese de que utiliza las versiones especificadas en la tabla anterior. Estas versiones se prueban y están certificadas para funcionar con HCL Commerce . No hay ninguna garantía de que otras versiones con etiquetas funcionarán con HCL Commerce con el resultado esperado.
- Las limitaciones de recursos no están definidas para el uso de Vault-Consul con HCL Commerce. Su uso con HCL Commerce en esta configuración proporcionada es simplemente para dar soporte al despliegue de un entorno que no sea de producción y no está diseñado o pensado para su uso en cualquier aplicación de rendimiento. Esto se debe tener en cuenta al planificar y configurar el entorno de producción con una alta disponibilidad y una seguridad de aplicación más estricta.
Procedure
Defina un certificado de Autoridad de Certificación (CA) y configure cómo debe ser utilizado por Vault.
El Helm Chart proporcionado despliega Vault en modalidad de desarrollo para eludir el proceso no estándar. En esta modalidad, todos los datos se almacenarán sólo en memoria. Los datos de configuración se definen en el archivo de valores de Helm, por lo que se cargan cada vez que se vuelve a implementar o iniciar Vault. Sin embargo, el certificado de la CA raíz no puede persistir a menos que se defina y persista en un secreto. Por lo tanto, el gráfico Helm permite especificar o generar automáticamente un certificado CA y, a continuación, persistirlo dentro de un secreto TLS.Elija una de las siguientes opciones:- Permitir que Vault Helm Chart genere y persista automáticamente el certificado CA.Para permitir que Vault Helm Chart cree automáticamente un certificado CA seguridad y cree un secreto TLS, establezca los siguientes parámetros de configuración:
externalCA.enabled
a trueexternalCA.autoCreate
a true
supportC.imageRepo
,supportC.image
ysupportC.tag
.Note: La generación automática de certificados CA sólo se implementa durante la instalación de Helm Chart (es decir, utilizandohelm install
). Por lo tanto, si ha implementado la caja fuerte utilizando la versión anterior del gráfico Helm, o si desea modificar el certificado CA después de la implementación, debe suprimir e instalar el gráfico Helm de nuevo para implementar este método de generación de certificados CA. - Genere y especifique su certificado CA manualmente.Cree un certificado de CA con firma propia y configúrelo para utilizarlo en la implementación de Vault.
- Genere el certificado CA con firma propia.
- Cree una clave privada, private.key.
openssl genrsa -out private.key 2048
- Cree un certificado CA basado en la clave privada.
openssl req -x509 -new -nodes -key private.key -days 730 -out ca.pem -config req.conf
Donde el archivo de configuración req.conf contiene la siguiente especificación.[ req ] prompt=no distinguished_name=dn x509_extensions=ext [ dn ] CN=My Company CA [ ext ] basicConstraints=CA:TRUE
- crear un certificado TLS en el espacio de nombres
vault
para su uso con Vault, utilizandokubectl
.kubectl create secret tls my-vault-ca --cert=ca.pem --key=private.key -n vault
- Actualice su archivo de configuración de implementación de Vault (basándose en values.yaml)
externalCA: enabled: true existingSecretName: 'my-vault-ca' autoCreate: false
- Cree una clave privada, private.key.
- Genere el certificado CA con firma propia.
- Permitir que Vault Helm Chart genere y persista automáticamente el certificado CA.
-
Modifique los valores de configuración de la implementación, basándose en el archivo values.yamlproporcionado.
-
Instale el gráfico de Helm.
Ejecute el mandato siguiente:
helm install vault-consul ./hcl-commerce-vaultconsul -f my-values.yaml -n vault
Donde:- vault-consul
- El nombre de la versión.
- ./hcl-commerce-vaultconsul
- La vía de acceso al Gráfico de Helm.
- my-values.yaml
- El archivo de configuración personalizado basado en el values.yaml proporcionado.
- vault
- El espacio de nombres independiente que ha creado para Vault.
-
Verifique el despliegue de Vault y Consul y verifique el gráfico.
-
Ejecute
kubectl get pods -n vault
para asegurarse de quevault-consul-xxxx
muestra2/2
en la columnaREADY
.NAME READY STATUS RESTARTS AGE vault-consul-676d9c5485-hc44b 2/2 Running 0 20d
- Ejecute
kubectl get secret vault-token-secret -n commerce
para listar el secreto del espacio de nombres de commerce para asegurarse de que se ha creado el secreto.Por ejemplo:kubectl get secret vault-token-secret -n commerce NAME TYPE DATA AGE vault-token-secret Opaque 1 7m44s
- Ejecute
helm test vault-consul -n vault
para verificar el gráfico. Deberá ver una salida similar a la siguiente.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
![HCL Commerce Version 9.1.10.0 or later](../../base/images/91100plus.png)
Puede desinstalar el gráfico de Helm en cualquier momento ejecutando helm delete vault-consul -n vault
.