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 laterNote: Consul y todas las configuraciones relacionadas se han eliminado de HCL Commerce 9.1.9.0 y posteriores. No obstante, el nombre de archivo del gráfico Helm de Vault proporcionado sigue siendo el mismo.

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 atributoValorUsage
    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/
    Define el repositorio de imágenes de Docker para Vault y Consul Docker.
    HCL Commerce Version 9.1.7.0 or latervaultConsul.vaultImageName
    • x86-64vault
    • Powervault-ppc64le
    El nombre de la imagen 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
      • Publicaciones anteriores: 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
    La etiqueta de imagen Vault Docker.
    HCL Commerce Version 9.1.7.0 or latervaultConsul.consulImageName
    • x86-64consul
    • Powerconsul-ppc64le
    El nombre de la imagen Consul Docker.
    HCL Commerce Version 9.1.9.0 or laterNote: Se ha eliminado en HCL Commerce 9.1.9.0 y versiones posteriores.
    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-64Para las versiones anteriores a la 9.1.7.0: 1.7.1
    La etiqueta de imagen Consul Docker.
    HCL Commerce Version 9.1.9.0 or laterNote: Se ha eliminado en HCL Commerce 9.1.9.0 y versiones posteriores.
    test.imagedocker.io/centos:latestEl 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.

Note:
  • HCL Commerce Version 9.1.7.0 or laterPowerPor 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

  1. HCL Commerce Version 9.1.7.0 or later 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 true
      • externalCA.autoCreate a true
      Esta lógica de creación automática también requiere la imagen del contenedor de apoyo. Asegúrese de que se ha configurado utilizando los parámetros supportC.imageRepo, supportC.image y supportC.tag.
      Note: La generación automática de certificados CA sólo se implementa durante la instalación de Helm Chart (es decir, utilizando helm 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.
      1. Genere el certificado CA con firma propia.
        1. Cree una clave privada, private.key.
          openssl genrsa -out private.key 2048
        2. 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
        3. crear un certificado TLS en el espacio de nombres vault para su uso con Vault, utilizando kubectl.
          kubectl create secret tls my-vault-ca --cert=ca.pem --key=private.key -n vault
        4. 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
  2. Modifique los valores de configuración de la implementación, basándose en el archivo values.yamlproporcionado.
    1. Cambie el nombre del arrendatario si desea asignarle un nombre diferente. Si cambia aquí el nombre del arrendatario, también debe cambiar el nombre del arrendatario en los valores de Gráfico de Helm proporcionados de HCL Commerce para que coincidan.
    2. De forma predeterminada, los valores de entrada para Vault no están habilitados. Si desea crear una entrada para acceder a la interfaz de usuario de Vault, establezca enableIngress en true.
      HCL Commerce Version 9.1.7.0 or laterPowerRestriction: La interfaz de usuario de Vault no está disponible para las implementaciones en Power Linux.
    3. Rellene la sección commerceNameSpaces con sus espacios de nombres de HCL Commerce.
      Por ejemplo, si desea desplegar dos entornos de HCL Commercedev y qa en los espacios de nombres commerce-dev y commerce-qa, debe ejecutar los siguientes mandatos:
      kubectl create ns commerce-dev kubectl create ns commerce-qa
      Y añada lo siguiente a la sección commerceNameSpaces:
      commerceNameSpaces: - commerce-dev - commerce-qa
    4. Actualice los siguientes valores de configuración de despliegue de vaultConsul.
      • Actualice los valores de imageRepo, consulImageName, consulImageTag, vaultImageName, y vaultImageTag si desea probar diferentes imágenes de Consul o Vault.

        No se recomienda esta opción.

      • Actualice vaultToken al que desee utilizar.

        Si se modifica a partir del valor predeterminado, debe codificar la señal en Base64 ejecutando echo -n newToken | base64 y utilizarla para actualizar el valor de vaultTokenBase64.

      • HCL Commerce Version 9.1.10.0 or laterHabilite y actualice la sección vaultLoadDataWithSecret para mejorar la seguridad de los datos de Vault. Asegúrese también de que vaultLoadData está habilitado para cargar datos.

        Con esta opción habilitada, puede ignorar la sección vaultData del gráfico de Helm. Los pares de clave-valor sensibles ahora están protegidos para que no se expongan en los archivos de configuración de implementación.

        Si elige este método, debe crear manualmente un secreto y colocar el nombre del secreto en el campo secretName.

        Existe un archivo de configuración yaml de muestra en el directorio sample_secret. Utilice este ejemplo para asegurarse de que la configuración se ha realizado correctamente.

      • Actualice los valores bajo vaultData para que reflejen el entorno.

        Por ejemplo, actualice la información de la base de datos.

  3. 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.
  4. Verifique el despliegue de Vault y Consul y verifique el gráfico.
    • Ejecute kubectl get pods -n vault para asegurarse de que vault-consul-xxxx muestra 2/2 en la columna READY.

      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

Vault está configurado y desplegado.
Puede actualizar su configuración en cualquier momento actualizando la configuración de vaultData y ejecutando el siguiente comando:
helm upgrade vault-consul ./hcl-commerce-vaultconsul -f my-values.yaml -n vault
HCL Commerce Version 9.1.10.0 or laterNote: Si utiliza vaultLoadDataWithSecret para cargar datos, solo puede actualizar los valores de Vault actualizando el secreto de datos y, a continuación, suprimir el pod de Vault existente para forzar un reinicio.

Puede desinstalar el gráfico de Helm en cualquier momento ejecutando helm delete vault-consul -n vault.