

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Ejecutar cargas de trabajo con estado y almacenamiento de datos persistente mediante Amazon EFS en Amazon EKS con AWS Fargate
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate"></a>

*Ricardo Morais, Rodrigo Bersa y Lucio Pereira, Amazon Web Services*

## Resumen
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-summary"></a>

Este patrón proporciona orientación para habilitar Amazon Elastic File System (Amazon EFS) como dispositivo de almacenamiento para contenedores que usan Amazon Elastic Kubernetes Service (Amazon EKS), mediante AWS Fargate para aprovisionar sus recursos de computación.

La configuración descrita en este patrón sigue las prácticas recomendadas de seguridad y proporciona seguridad en reposo y seguridad en tránsito de forma predeterminada. Para cifrar su sistema de archivos Amazon EFS, utiliza una clave de AWS Key Management Service (AWS KMS), pero también puede especificar un alias de clave que gestione el proceso de creación de una clave de KMS.

Puede seguir los pasos de este patrón para crear un espacio de nombres y un perfil de Fargate para una aplicación proof-of-concept (PoC), instalar el controlador Amazon EFS Container Storage Interface (CSI) que se utiliza para integrar el clúster de Kubernetes con Amazon EFS, configurar la clase de almacenamiento e implementar la aplicación PoC. Estos pasos dan como resultado un sistema de archivos Amazon EFS que se comparte entre varias cargas de trabajo de Kubernetes y se ejecuta en Fargate. El patrón va acompañado de scripts que automatizan estos pasos.

Puede utilizar este patrón si quiere garantizar la persistencia de los datos en sus aplicaciones contenerizadas y evitar la pérdida de datos en las operaciones de escalado. Por ejemplo:
+ **DevOps herramientas**: un escenario habitual es desarrollar una herramienta de integración y entrega continuas. CI/CD) strategy. In this case, you can use Amazon EFS as a shared file system to store configurations among different instances of the CI/CD tool or to store a cache (for example, an Apache Maven repository) for pipeline stages among different instances of the CI/CD
+ **Servidores web**: un escenario habitual es utilizar Apache como servidor web HTTP. Puede utilizar Amazon EFS como un sistema de archivos compartidos para almacenar archivos estáticos que se comparten entre distintas instancias del servidor web. En este escenario de ejemplo, las modificaciones se aplican directamente al sistema de archivos en lugar de incluir los archivos estáticos en una imagen de Docker.

## Requisitos previos y limitaciones
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-prereqs"></a>

**Requisitos previos **
+ Una cuenta de AWS activa
+ Un clúster de Amazon EKS existente con la versión 1.17 o posterior de Kubernetes (probado hasta la versión 1.27)
+ Un sistema de archivos Amazon EFS existente para vincular un Kubernetes StorageClass y aprovisionar sistemas de archivos de forma dinámica
+ Permisos de administración de clústeres
+ El contexto está configurado para apuntar al clúster de Amazon EKS deseado

**Limitaciones**
+ Hay algunas limitaciones que se deben tener en cuenta al utilizar Amazon EKS con Fargate. Por ejemplo, no se admite el uso de algunas construcciones de Kubernetes, como los contenedores DaemonSets privilegiados. Para obtener más información sobre las limitaciones de Fargate, consulte [Consideraciones sobre AWS Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html#fargate-considerations) en la documentación de Amazon EKS.
+ El código que se proporciona con este patrón es compatible con estaciones de trabajo que ejecutan Linux o macOS.

**Versiones de producto**
+ Interfaz de la línea de comandos de AWS (AWS CLI) versión 2 o posterior
+ La versión 1.0 o posterior del controlador de CSI de Amazon EFS (probado hasta la versión 2.4.8)
+ La versión 0.24.0 o posterior de eksctl (probado hasta la versión 0.158.0)
+ La versión 1.6 o posterior de jq
+ La versión 1.17 o posterior de kubectl (probado hasta la versión 1.27)
+ La versión 1.17 o posterior de Kubernetes (probado hasta la versión 1.27)

## Arquitectura
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-architecture"></a>

![Diagrama de arquitectura de la puesta en marcha de cargas de trabajo con estado y almacenamiento de datos persistente mediante Amazon EFS](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/images/pattern-img/2487e285-269b-415b-a270-877f973e3aaf/images/ec8de63c-3307-4010-9e03-2bd7b9881fff.png)


La arquitectura de destino consta de la siguiente infraestructura:
+ Una nube privada virtual (VPC)
+ Dos zonas de disponibilidad.
+ Una subred pública con una puerta de enlace de NAT que proporciona acceso a Internet.
+ Una subred privada con un clúster de Amazon EKS y destinos de montaje de Amazon EFS (también conocidos como *puntos de montaje*)
+ Amazon EFS para VPC

La siguiente es la infraestructura del entorno del clúster de Amazon EKS:
+ Perfiles de AWS Fargate que admitan los constructos de Kubernetes en el espacio de nombres.
+ Un espacio de nombres de Kubernetes con lo siguiente:
  + Dos pods de aplicaciones distribuidos en las zonas de disponibilidad.
  + Una solicitud de volumen persistente (PVC) vinculada a un volumen persistente (PV) en el clúster.
+ Un PV de todo el clúster que esté enlazado a la PVC del espacio de nombres y que apunte a los destinos de montaje de Amazon EFS en la subred privada, fuera del clúster.

## Tools (Herramientas)
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-tools"></a>

**Servicios de AWS**
+ [Interfaz de la línea de comandos de AWS (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) es una herramienta de código abierto que puede usar para interactuar con los servicios de AWS desde la línea de comandos.
+ [Amazon Elastic File System (Amazon EFS)](https://docs.aws.amazon.com/efs/latest/ug/whatisefs.html) le ayuda a crear y configurar sistemas de archivos compartidos en la nube de AWS. Siguiendo este patrón, proporciona un sistema de archivos simple, escalable, completamente administrado y compartido para su uso con Amazon EKS.
+ [Amazon Elastic Kubernetes Service (Amazon EKS)](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html) le permite poner en marcha Kubernetes en AWS sin necesidad de instalar ni operar sus propios clústeres.
+ [AWS Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) es un motor de computación sin servidor para Amazon EKS. Crea y administra recursos de computación para sus aplicaciones de Kubernetes.
+ [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) facilita poder crear y controlar claves criptográficas para proteger los datos.

**Otras herramientas**
+ [Docker](https://www.docker.com/) es un conjunto de productos de plataforma como servicio (PaaS) que utiliza la virtualización a nivel del sistema operativo para entregar software en contenedores.
+ [eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html): es una utilidad sencilla de línea de comandos para crear y administrar clústeres de Kubernetes en Amazon EKS.
+ [kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html): una interfaz de la línea de comandos que le ayuda en la ejecución de comandos en clústeres de Kubernetes.
+ [jq](https://stedolan.github.io/jq/download/) es una herramienta de línea de comandos para analizar JSON.

**Código**

El código de este patrón se proporciona en la [configuración de GitHub persistencia con Amazon EFS en Amazon EKS mediante el repositorio de AWS Fargate](https://github.com/aws-samples/eks-efs-share-within-fargate). Los scripts están organizados por epic, en las carpetas desde `epic01` hasta `epic06`, según el orden de la sección [Epics](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-epics) de este patrón.

## Prácticas recomendadas
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-best-practices"></a>

La arquitectura de destino incluye los siguientes servicios y componentes, y sigue las prácticas recomendadas de [Marco de AWS Well-Architected](https://aws.amazon.com/architecture/well-architected/):
+ Amazon EFS, que proporciona un sistema de archivos NFS elástico, simple, escalable y completamente administrado. Se utiliza como un sistema de archivos compartido entre todas las replicaciones de la aplicación PoC que se ejecutan en pods, que se distribuyen en las subredes privadas del clúster de Amazon EKS elegido.
+ Un destino de montaje de Amazon EFS para cada subred privada. Esto proporciona redundancia por zona de disponibilidad dentro de la nube privada virtual (VPC) del clúster.
+ Amazon EKS, que ejecuta las cargas de trabajo de Kubernetes. [Debe aprovisionar un clúster de Amazon EKS antes de utilizar este patrón, tal y como se describe en la sección Requisitos previos](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-prereqs).
+ AWS KMS, que proporciona cifrado en reposo para el contenido almacenado en el sistema de archivos Amazon EFS.
+ Fargate, que administra los recursos informáticos de los contenedores para que pueda centrarse en los requisitos empresariales y no en la carga de la infraestructura. El perfil de Fargate se crea para todas las subredes privadas. Esto proporciona redundancia por zona de disponibilidad dentro de la nube privada virtual (VPC) del clúster.
+ Los pods de Kubernetes permiten validar que distintas instancias de una aplicación puedan compartir, consumir y escribir contenido.

## Epics
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-epics"></a>

### Aprovisionamiento de un clúster de Amazon EKS (opcional)
<a name="provision-an-amazon-eks-cluster-optional"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un clúster de Amazon EKS. | Si ya dispone de un clúster, continúe con la siguiente epic. Cree un clúster de Amazon EKS en su cuenta de AWS. En el [GitHub directorio](https://github.com/aws-samples/eks-efs-share-within-fargate/tree/master/bootstrap), utilice uno de los patrones para implementar un clúster de Amazon EKS mediante Terraform o eksctl. Para obtener más información, consulte [Creación de un clúster de Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) en la documentación de Amazon EKS. En el patrón de Terraform, también hay ejemplos que muestran cómo: vincular los perfiles de Fargate a su clúster de Amazon EKS, crear un sistema de archivos de Amazon EFS e implementar el controlador de CSI de Amazon EFS en su clúster de Amazon EKS. | Administrador de AWS, administrador de Terraform o eksctl, administrador de Kubernetes | 
| Exporte variables de entorno. | Use el script env.sh. Esto proporciona la información necesaria en los siguientes pasos.<pre>source ./scripts/env.sh<br />Inform the AWS Account ID:<br /><13-digit-account-id><br />Inform your AWS Region:<br /><aws-Region-code><br />Inform your Amazon EKS Cluster Name:<br /><amazon-eks-cluster-name><br />Inform the Amazon EFS Creation Token:<br /><self-genereated-uuid></pre><br />Si aún no lo ha indicado, puede obtener toda la información solicitada anteriormente con los siguientes comandos de CLI.<pre># ACCOUNT ID<br />aws sts get-caller-identity --query "Account" --output text</pre><pre># REGION CODE<br />aws configure get region</pre><pre># CLUSTER EKS NAME<br />aws eks list-clusters --query "clusters" --output text</pre><pre># GENERATE EFS TOKEN<br />uuidgen</pre> | Administrador de sistemas de AWS | 

### Crear un espacio de nombres de Kubernetes y un perfil de Fargate vinculado
<a name="create-a-kubernetes-namespace-and-a-linked-fargate-profile"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Cree un espacio de nombres de Kubernetes y perfil de Fargate para las cargas de trabajo de las aplicaciones. | Cree un espacio de nombres para recibir las cargas de trabajo de las aplicaciones que interactúan con Amazon EFS. Ejecute el script `create-k8s-ns-and-linked-fargate-profile.sh`. Puede elegir usar un nombre para el espacio de nombres personalizado o el espacio de nombres proporcionado por defecto `poc-efs-eks-fargate`.<br />**Con un nombre para el espacio de nombres de la aplicación personalizado:**<pre>export $APP_NAMESPACE=<CUSTOM_NAME><br />./scripts/epic01/create-k8s-ns-and-linked-fargate-profile.sh \<br />-c "$CLUSTER_NAME" -n "$APP_NAMESPACE"</pre><br />**Sin un nombre para el espacio de nombres de la aplicación personalizado:**<pre>./scripts/epic01/create-k8s-ns-and-linked-fargate-profile.sh \<br />    -c "$CLUSTER_NAME"</pre><br />donde `$CLUSTER_NAME` es el nombre de su clúster de Amazon EKS. El parámetro `-n <NAMESPACE>` es opcional; si no se indica, se proporcionará un nombre para el espacio de nombres generado por defecto. | Usuario de Kubernetes con permisos concedidos | 

### Crear un sistema de archivos de Amazon EFS
<a name="create-an-amazon-efs-file-system"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Genere un token único. | Amazon EFS requiere la creación de un token para garantizar la operación de idempotencia (llamar a la operación con el mismo token de creación no tiene ningún efecto). Para cumplir con este requisito, debe generar un token único mediante una técnica disponible. Por ejemplo, puede generar un identificador único universal (UUID) para usarlo como token de creación. | Administrador de sistemas de AWS | 
| Crear un sistema de archivos de Amazon EFS. | Cree el sistema de archivos para recibir los archivos de datos que leen y escriben las cargas de trabajo de la aplicación. Puede crear un sistema de archivos cifrado o no cifrado. (Como práctica recomendada, el código de este patrón crea un sistema cifrado para habilitar el cifrado en reposo de forma predeterminada). Puede utilizar una clave de AWS KMS simétrica y única para cifrar su sistema de archivos. Si no se especifica, se utiliza una clave administrada de AWS.<br />Utilice el script create-efs.sh para crear un sistema de archivos Amazon EFS cifrado o no cifrado, después de generar un token único para Amazon EFS.<br />**Con el cifrado en reposo, sin clave KMS:**<pre>./scripts/epic02/create-efs.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN"</pre><br />donde `$CLUSTER_NAME` es el nombre de su clúster de Amazon EKS y `$EFS_CREATION_TOKEN` es un token de creación único para el sistema de archivos.<br />**Con el cifrado en reposo, con una clave KMS:**<pre>./scripts/epic02/create-efs.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN" \<br />    -k "$KMS_KEY_ALIAS"</pre><br />donde `$CLUSTER_NAME` es el nombre de su clúster de Amazon EKS, `$EFS_CREATION_TOKEN` es un token de creación único para el sistema de archivos y `$KMS_KEY_ALIAS` es el alias para la clave KMS.<br />**Sin cifrado:**<pre>./scripts/epic02/create-efs.sh -d \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN"</pre><br />donde `$CLUSTER_NAME` es el nombre de su clúster de Amazon EKS, `$EFS_CREATION_TOKEN` es un token de creación único para el sistema de archivos y `–d` deshabilita el cifrado en reposo. | Administrador de sistemas de AWS | 
| Crear un grupo de seguridad. | Cree un grupo de seguridad para permitir al clúster de Amazon EKS acceder al sistema de archivos de Amazon EFS. | Administrador de sistemas de AWS | 
| Actualizar la regla de entrada del grupo de seguridad. | Actualice las reglas de entrada del grupo de seguridad para permitir el tráfico entrante para las siguientes configuraciones:[See the AWS documentation website for more details](http://docs.aws.amazon.com/es_es/prescriptive-guidance/latest/patterns/run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate.html) | Administrador de sistemas de AWS | 
| Agregar un destino de montaje para cada subred privada. | Para cada subred privada del clúster de Kubernetes, cree un destino de montaje para el sistema de archivos y el grupo de seguridad. | Administrador de sistemas de AWS | 

### Instalar los componentes de Amazon EFS en el clúster de Kubernetes
<a name="install-amazon-efs-components-into-the-kubernetes-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implementar el controlador de CSI de Amazon EFS. | Implemente el controlador de CSI de Amazon EFS en el clúster. El controlador aprovisiona el almacenamiento de acuerdo con las demandas de volumen persistentes creadas por las aplicaciones. Use el script `create-k8s-efs-csi-sc.sh` para implementar el controlador de CSI de Amazon EFS y la clase de almacenamiento en el clúster:<pre>./scripts/epic03/create-k8s-efs-csi-sc.sh</pre><br />Este script usa la utilidad `kubectl`, así que asegúrese de que el contexto se haya configurado y que apunte al clúster de Amazon EKS deseado. | Usuario de Kubernetes con permisos concedidos | 
| Implementar la clase de almacenamiento. | Implemente la clase de almacenamiento en el clúster del aprovisionador de Amazon EFS (efs.csi.aws.com). | Usuario de Kubernetes con permisos concedidos | 

### Instalear la aplicación PoC en el clúster de Kubernetes
<a name="install-the-poc-application-into-the-kubernetes-cluster"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Implementar el volumen persistente. | Implemente el volumen persistente y vincúlelo a la clase de almacenamiento creada y al ID del sistema de archivos Amazon EFS. La aplicación utiliza el volumen persistente para leer y escribir contenido. Puede especificar cualquier tamaño para el volumen persistente en el campo de almacenamiento. Kubernetes requiere este campo, pero dado que Amazon EFS es un sistema de archivos elástico, no aplica ningún límite de capacidad del sistema de archivos. Puede implementar el volumen persistente con o sin cifrado. (El controlador CSI de Amazon EFS habilita el cifrado de forma predeterminada, como práctica recomendada). Use el script `deploy-poc-app.sh` para implementar el volumen persistente, la demanda de volumen persistente y las dos cargas de trabajo.<br />**Con cifrado en tránsito:**<pre>./scripts/epic04/deploy-poc-app.sh \<br />    -t "$EFS_CREATION_TOKEN"</pre><br />donde `$EFS_CREATION_TOKEN` es el token de creación único para el sistema de archivos.<br />**Sin cifrado en tránsito:**<pre>./scripts/epic04/deploy-poc-app.sh -d \<br />    -t "$EFS_CREATION_TOKEN"</pre><br />donde `$EFS_CREATION_TOKEN` es el token de creación único para el sistema de archivos y `–d` desactiva el cifrado en tránsito. | Usuario de Kubernetes con permisos concedidos | 
| Implementar la demanda de volumen persistente solicitada por la aplicación. | Implemente la demanda de volumen persistente solicitada por la aplicación y vincúlela a la clase de almacenamiento. Utilice el mismo modo de acceso que el volumen persistente que creó anteriormente. Puede especificar cualquier tamaño para la demanda de volumen persistente en el campo de almacenamiento. Kubernetes requiere este campo, pero dado que Amazon EFS es un sistema de archivos elástico, no aplica ningún límite de capacidad del sistema de archivos. | Usuario de Kubernetes con permisos concedidos | 
| Implementar la carga de trabajo 1. | Implemente el pod que representa la carga de trabajo 1 de la aplicación. Esta carga de trabajo escribe el contenido en el archivo `/data/out1.txt`. | Usuario de Kubernetes con permisos concedidos | 
| Implementar la carga de trabajo 2. | Implemente el pod que representa la carga de trabajo 2 de la aplicación. Esta carga de trabajo escribe el contenido en el archivo `/data/out2.txt`. | Usuario de Kubernetes con permisos concedidos | 

### Validar la persistencia, durabilidad y compartibilidad del sistema de archivos
<a name="validate-file-system-persistence-durability-and-shareability"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Compruebe el estado de `PersistentVolume`. | Ingrese el siguiente comando para verificar el estado de `PersistentVolume`.<pre>kubectl get pv</pre><br />Para obtener un ejemplo de salida, consulte la sección [Información adicional](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-additional). | Usuario de Kubernetes con permisos concedidos | 
| Compruebe el estado de `PersistentVolumeClaim`. | Ingrese el siguiente comando para verificar el estado de `PersistentVolumeClaim`.<pre>kubectl -n poc-efs-eks-fargate get pvc</pre><br />Para obtener un ejemplo de salida, consulte la sección [Información adicional](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-additional). | Usuario de Kubernetes con permisos concedidos | 
| Validar que la carga de trabajo 1 pueda escribir en el sistema de archivos. | Ingrese el siguiente comando para validar que la carga de trabajo 1 esté escribiendo en `/data/out1.txt`.<pre>kubectl exec -ti poc-app1 -n poc-efs-eks-fargate -- tail -f /data/out1.txt</pre><br />Los resultados son similares a los siguientes:<pre>...<br />Thu Sep  3 15:25:07 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:25:12 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:25:17 UTC 2023 - PoC APP 1<br />...</pre> | Usuario de Kubernetes con permisos concedidos | 
| Validar que la carga de trabajo 2 pueda escribir en el sistema de archivos. | Ingrese el siguiente comando para validar que la carga de trabajo 2 esté escribiendo en `/data/out2.txt`.<pre>kubectl -n $APP_NAMESPACE exec -ti poc-app2 -- tail -f /data/out2.txt</pre><br />Los resultados son similares a los siguientes:<pre>...<br />Thu Sep  3 15:26:48 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:53 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:58 UTC 2023 - PoC APP 2<br />...</pre> | Usuario de Kubernetes con permisos concedidos | 
| Validar que la carga de trabajo 1 pueda leer el archivo escrito por la carga de trabajo 2. | Ingrese el siguiente comando para validar que la carga de trabajo 1 pueda leer el archivo `/data/out2.txt` escrito por la carga de trabajo 2.<pre>kubectl exec -ti poc-app1 -n poc-efs-eks-fargate -- tail -n 3 /data/out2.txt</pre><br />Los resultados son similares a los siguientes:<pre>...<br />Thu Sep  3 15:26:48 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:53 UTC 2023 - PoC APP 2<br />Thu Sep  3 15:26:58 UTC 2023 - PoC APP 2<br />...</pre> | Usuario de Kubernetes con permisos concedidos | 
| Validar que la carga de trabajo 2 pueda leer el archivo escrito por la carga de trabajo 1. | Ingrese el siguiente comando para validar que la carga de trabajo 2 pueda leer el archivo `/data/out1.txt` escrito por la carga de trabajo 1.<pre>kubectl -n $APP_NAMESPACE exec -ti poc-app2 -- tail -n 3 /data/out1.txt</pre><br />Los resultados son similares a los siguientes:<pre>...<br />Thu Sep  3 15:29:22 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:29:27 UTC 2023 - PoC APP 1<br />Thu Sep  3 15:29:32 UTC 2023 - PoC APP 1<br />...</pre> | Usuario de Kubernetes con permisos concedidos | 
| Validar que los archivos se conserven después de eliminar los componentes de la aplicación. | A continuación, utilice un script para eliminar los componentes de la aplicación (volumen persistente, solicitud de volumen persistente y pods) y comprobar que los archivos `/data/out1.txt` y `/data/out2.txt` se retienen en el sistema de archivos. Ejecute el script `validate-efs-content.sh` mediante el comando siguiente.<pre>./scripts/epic05/validate-efs-content.sh \<br />    -t "$EFS_CREATION_TOKEN"</pre><br />donde `$EFS_CREATION_TOKEN` es el token de creación único para el sistema de archivos.<br />Los resultados son similares a los siguientes:<pre>pod/poc-app-validation created<br />Waiting for pod get Running state...<br />Waiting for pod get Running state...<br />Waiting for pod get Running state...<br />Results from execution of 'find /data' on validation process pod:<br />/data<br />/data/out2.txt<br />/data/out1.txt</pre> | Usuario de Kubernetes con permisos concedidos, administrador de sistemas | 

### Operaciones de supervisión
<a name="monitor-operations"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Supervisar los registros de aplicación. | Como parte de una operación de dos días, envía los registros de la aplicación a Amazon CloudWatch para que los supervisen. | Administrador de sistemas de AWS, usuario de Kubernetes con permisos concedidos | 
| Supervisar contenedores de Amazon EKS y de Kubernetes con Container Insights. | Como parte de una operación de dos días, supervise los sistemas Amazon EKS y Kubernetes mediante Amazon Container Insights. CloudWatch Esta herramienta recopila, agrega y resume métricas de aplicaciones en contenedores en diferentes niveles y dimensiones. Para obtener más información, consulte la sección [Recursos relacionados](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-resources). | Administrador de sistemas de AWS, usuario de Kubernetes con permisos concedidos | 
| Supervise Amazon EFS con CloudWatch. | Como parte de una operación de dos días, supervise los sistemas de archivos con Amazon CloudWatch, que recopila y procesa datos sin procesar de Amazon EFS para convertirlos en métricas legibles y prácticamente en tiempo real. Para obtener más información, consulte la sección [Recursos relacionados](#run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-resources). | Administrador de sistemas de AWS | 

### Eliminar recursos
<a name="clean-up-resources"></a>


| Tarea | Descripción | Habilidades requeridas | 
| --- | --- | --- | 
| Limpiar todos los recursos creados para el patrón. | Tras completar este patrón, limpie todos los recursos para evitar incurrir en cargos de AWS. Use el script `clean-up-resources.sh` para eliminar todos los recursos una vez que haya terminado de usar la aplicación PoC. Complete una de las siguientes opciones:<br />**Con el cifrado en reposo, con una clave KMS:**<pre>./scripts/epic06/clean-up-resources.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN" \<br />    -k "$KMS_KEY_ALIAS"</pre><br />donde `$CLUSTER_NAME` es el nombre de su clúster de Amazon EKS, `$EFS_CREATION_TOKEN` es un token de creación único para el sistema de archivos y `$KMS_KEY_ALIAS` es el alias para la clave KMS.<br />**Sin cifrado en reposo:**<pre>./scripts/epic06/clean-up-resources.sh \<br />    -c "$CLUSTER_NAME" \<br />    -t "$EFS_CREATION_TOKEN"</pre><br />donde `$CLUSTER_NAME` es el nombre de su clúster de Amazon EKS y `$EFS_CREATION_TOKEN` es un token de creación único para el sistema de archivos. | Usuario de Kubernetes con permisos concedidos, administrador de sistemas | 

## Recursos relacionados
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-resources"></a>

**Referencias**
+ [AWS Fargate for Amazon EKS now supports Amazon EFS](https://aws.amazon.com/blogs/aws/new-aws-fargate-for-amazon-eks-now-supports-amazon-efs/) (anuncio)
+ [Cómo capturar los registros de las aplicaciones al usar Amazon EKS en AWS Fargate](https://aws.amazon.com/blogs/containers/how-to-capture-application-logs-when-using-amazon-eks-on-aws-fargate/) (entrada del blog)
+ [Uso de Container Insights](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ContainerInsights.html) ( CloudWatch documentación de Amazon)
+ [Configuración de Container Insights en Amazon EKS y Kubernetes (documentación de Amazon)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/deploy-container-insights-EKS.html) CloudWatch 
+ Métricas de [Amazon EKS y Kubernetes Container Insights (documentación de Amazon)](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-EKS.html) CloudWatch 
+ [Supervisión de Amazon EFS con Amazon CloudWatch](https://docs.aws.amazon.com/efs/latest/ug/monitoring-cloudwatch.html) (documentación de Amazon EFS)

**GitHub tutoriales y ejemplos**
+ [Aprovisionamiento estático](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/static_provisioning/README.md)
+ [Cifrado en tránsito](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/encryption_in_transit/README.md)
+ [Acceder al sistema de archivos desde varios pods](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/multiple_pods/README.md)
+ [Consumir Amazon EFS en StatefulSets](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/statefulset/README.md)
+ [Montaje de subrutas](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/volume_path/README.md)
+ [Uso de puntos de acceso de Amazon EFS](https://github.com/kubernetes-sigs/aws-efs-csi-driver/blob/master/examples/kubernetes/access_points/README.md)
+ [Amazon EKS Blueprints for Terraform](https://aws-ia.github.io/terraform-aws-eks-blueprints/)

**Herramientas necesarias**
+ [Instalación de la versión 2 de la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html)
+ [Instalación de eksctl](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html)
+ [Instalación de kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)
+ [Instalación de jq](https://stedolan.github.io/jq/download/)

## Información adicional
<a name="run-stateful-workloads-with-persistent-data-storage-by-using-amazon-efs-on-amazon-eks-with-aws-fargate-additional"></a>

A continuación, se muestra un ejemplo de la salida del comando `kubectl get pv`.

```
NAME         CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                             STORAGECLASS   REASON   AGE
poc-app-pv   1Mi        RWX            Retain           Bound    poc-efs-eks-fargate/poc-app-pvc   efs-sc                  3m56s
```

A continuación, se muestra un ejemplo de la salida del comando `kubectl -n poc-efs-eks-fargate get pvc`.

```
NAME          STATUS   VOLUME       CAPACITY   ACCESS MODES   STORAGECLASS   AGE
poc-app-pvc   Bound    poc-app-pv   1Mi        RWX            efs-sc         4m34s
```