# Usar un chart de Docker Hardened Images


Los charts de Docker Hardened Image (DHI) son [Helm charts](https://helm.sh/docs/) proporcionados por Docker compilados a partir de fuentes ascendentes (upstream) y diseñados para ser compatibles con Docker Hardened Images. Estos charts están disponibles como artefactos OCI dentro del catálogo de DHI en Docker Hub. Para obtener más detalles, consulta [Charts de Docker Hardened Image](/dhi/features/helm/).

Los charts de DHI incorporan múltiples capas de seguridad en la cadena de suministro que no están presentes en los charts ascendentes:

- Cumplimiento de SLSA Nivel 3: Cada chart se compila con los estándares SLSA Build Level 3, lo que incluye procedencia detallada de la compilación.
- Lista de materiales de software (SBOM): SBOM completas que detallan todos los componentes referenciados dentro del chart.
- Firma criptográfica: Todos los metadatos asociados están firmados criptográficamente por Docker para garantizar su integridad y autenticidad.
- Configuración securizada: Los charts hacen referencia automáticamente a Docker Hardened Images para despliegues seguros.
- Compatibilidad probada: Los charts se prueban exhaustivamente para funcionar directamente con Docker Hardened Images.

Puedes usar un chart de DHI como cualquier otro Helm chart almacenado en un registro OCI. Cuando tienes una suscripción a Docker Hardened Images, también puedes personalizar los charts de DHI para hacer referencia a imágenes personalizadas y repositorios replicados. La canalización de compilación de charts personalizados garantiza que tus personalizaciones se compilen de forma segura, utilicen los charts base más recientes e incluyan atestaciones.

## Buscar un Helm chart de Docker

Para buscar un Helm chart de Docker para DHI:

1. Ve al catálogo de Hardened Images en [Docker Hub](https://hub.docker.com/hardened-images/catalog) e inicia sesión.
2. En la barra lateral izquierda, selecciona **Hardened Images** > **Catalog**.
3. Selecciona **Filter by** para **Helm Charts**.
4. Selecciona un repositorio de Helm charts para ver sus detalles.

## Replicar un Helm chart o sus imágenes en un registro de terceros

Si quieres realizar la réplica en tu propio registro de terceros, puedes seguir las instrucciones en [Replicar un repositorio de Docker Hardened Image](/dhi/how-to/mirror/) ya sea para el chart, la imagen o ambos.

La misma herramienta `regctl` que se utiliza para replicar imágenes de contenedor también se puede utilizar para replicar Helm charts, ya que los Helm charts son artefactos OCI.

Por ejemplo:

```console
regctl image copy \
    "${SRC_CHART_REPO}:${TAG}" \
    "${DEST_REG}/${DEST_CHART_REPO}:${TAG}" \
    --referrers \
    --referrers-src "${SRC_ATT_REPO}" \
    --referrers-tgt "${DEST_REG}/${DEST_CHART_REPO}" \
    --force-recursive
```

## Crear un secreto de Kubernetes para descargar imágenes

Necesitas crear un secreto de Kubernetes para descargar imágenes desde `dhi.io`, Docker Hub o tu propio registro. Esto es necesario porque los repositorios de Docker Hardened Image requieren autenticación. Si replicas las imágenes en tu propio registro, de igual manera necesitarás crear este secreto si el registro requiere autenticación.

1. Para `dhi.io` o Docker Hub, crea un [token de acceso personal (PAT)](/security/access-tokens/) usando tu cuenta de Docker o un [token de acceso de organización (OAT)](/enterprise/security/access-tokens/). Asegúrate de que el token tenga al menos acceso de lectura (read-only) a los repositorios de Docker Hardened Image.
2. Crea un secreto en Kubernetes usando el siguiente comando. Reemplaza `<your-secret-name>`, `<your-username>`, `<your-personal-access-token>` y `<your-email>` con tus propios valores.

   > [!NOTE]
   >
   > Debes crear este secreto en cada espacio de nombres de Kubernetes que utilice una DHI. Si has replicado tus DHI en otro registro, reemplaza `dhi.io` por el nombre de host de tu registro. Reemplaza `<your-username>`, `<your-access-token>` y `<your-email>` con tus propios valores. `<your-username>` es tu Docker ID si usas un PAT, o el nombre de tu organización si usas un OAT. `<your-secret-name>` es el nombre que elijas para el secreto.

   ```console
   $ kubectl create secret docker-registry <your-secret-name> \
       --docker-server=dhi.io \
       --docker-username=<your-username> \
       --docker-password=<your-access-token> \
       --docker-email=<your-email>
   ```

   Por ejemplo:

    ```console
    $ kubectl create secret docker-registry dhi-pull-secret \
        --docker-server=dhi.io \
        --docker-username=docs \
        --docker-password=dckr_pat_12345 \
        --docker-email=moby@example.com
   ```

## Instalar un Helm chart

Para instalar un Helm chart desde Docker Hardened Images:

1. Inicia sesión en el registro usando Helm:

   ```console
   $ echo $ACCESS_TOKEN | helm registry login dhi.io --username <your-username> --password-stdin
   ```

    Reemplaza `<your-username>` y establece `$ACCESS_TOKEN`.

2. Instala el chart usando `helm install`. Opcionalmente, también puedes usar la opción `--dry-run` para probar la instalación sin instalar nada realmente.

   ```console
   $ helm install <release-name> oci://dhi.io/<helm-chart-repository> --version <chart-version> \
     --set "imagePullSecrets[0].name=<your-secret-name>"
   ```

   Reemplaza `<helm-chart-repository>` y `<chart-version>` según corresponda. Si el chart está en tu propio registro u otro repositorio, reemplaza `dhi.io/<helm-chart-repository>` con tu propia ubicación. Reemplaza `<your-secret-name>` con el nombre del secreto de descarga de imagen creado en [Crear un secreto de Kubernetes para descargar imágenes](#crear-un-secreto-de-kubernetes-para-descargar-imagenes).

## Personalizar un Helm chart

Puedes personalizar los Helm charts de Docker Hardened Image para hacer referencia a imágenes personalizadas y repositorios replicados. Para obtener más detalles, consulta [Personalizar Docker Hardened Images y charts](/dhi/how-to/customize/).

## Verificar un Helm chart y ver sus atestaciones

Puedes verificar los Helm charts. Para obtener más detalles, consulta [Verificar las atestaciones de Helm charts con Docker Scout](/dhi/how-to/verify/#verify-helm-chart-attestations-with-docker-scout).
