Primeramente, veremos que significa Kubernetes (Piloto en griego), este es un sistema de código abierto para poder automatizar los despliegues, los ajustes de escala y los manejos de aplicaciones en contenedores, que en inglés es conocido como K8s, este fue fundado por Joe Beda y otros ingenieros a quienes se les unieron personal de Google y se asociaron con Fundación de Linux para formar la Fundación de Computación Nativa en la Nube y se ofreció como la tecnología de semilla.
Esta tecnología la están utilizando los Laboratorios Rancher en una plataforma de mejoramiento de contenedores, Red Hat para la utilización de su producto OpenShift, otros como CoreOS e IBM, AWS, Microsoft Azure.
Ahora la mayoría de las empresas están trabajando enfocados en contenedores en todos los entornos y los están eligiendo en lugar de las máquinas virtuales ya que los contenedores son más flexibles, sus costos y rendimientos son mejores, pero a medida que estos son más utilizados va creciendo también la preocupación por los procesos de seguridad y restauración.
No todas las empresas son iguales, así como su infraestructura también es diferente a la hora de administrar las copias de seguridad en varios clústeres por lo tanto se requiere un enfoque diferente y único de las soluciones de copia de seguridad tradicionales, debido a que las aplicaciones son implementadas en varios contenedores entro nodos de un clúster, debemos tener en cuenta que la solución para la copia de seguridad se haya incluido todos los tipos de objetos y las configuraciones de los Kubernetes, también hay tomar en cuenta los ciclos del desarrollo, la filosofía de DevOps, los requisitos de seguridad entre otros. Aunque todo esto parezca imposible debido a los requisitos hay unas buenas prácticas que pueden ayudarlo a realizar los respaldos o copias de seguridad de los Kubernetes.
1. Arquitectura de los Kubernetes.
Como sabemos que todas las aplicaciones de Kubernetes pueden estar configuradas en la nube multiinbridez, también pueden estar configuradas localmente y tener varios clústeres, también se componen de servicios, certificados, pods, etcd. Entonces una solución de copia de seguridad debe lograr proporcionar las capacidades para realizar la copia de todos los componentes y en todos los entornos sin problemas de cargas de trabajo en caso de perdidas e interrupción de datos.
2. Recuperación.
Deberíamos de verificar cual es la dependencia de los clústeres, también lograr identificar el origen de la copia de seguridad y preparar el destino de la copia, ya sea local o en la nube pero sin olvidarse de actualizar todos los componentes para todos aquellos recursos que fueron creados recientemente, para todo esto existen soluciones que pueden hacer todo el trabajo de manera automatizada asegurándose que la plataforma de la solución de copia de seguridad pueda traducir todas las llamadas de las API de los Kubernetes para garantizar que todos los recursos estén disponibles.
3. Simplificación de las operaciones.
Para simplificar las operaciones debemos asegurarnos de que las copias de seguridad estén basadas en las API, que cuenten con políticas de copias de seguridad, tener la capacidad de detectar y realizar todas las copias de seguridad de las nuevas aplicaciones a medidas que los desarrolladores van realizándolas e implementándolas, también las soluciones de copias de seguridad deben de ofrecer un flujo de trabajo sencillo que le permita a los equipos de operaciones lograra monitorear todo el proceso.
4. Seguridad.
Dependiendo de la escala y los requisitos de la organización, las copias de seguridad pueden crecer exponencialmente, lo que nos plantea preocupaciones ante la seguridad de las grandes copias de datos ante las amenazas y vulnerabilidades.
Las copias de seguridad deben de proporcionar flexibilidad al equipo de operaciones para poder realizar un escaneo a fondo antes de restaurar una copia y poder erradicar el malware.
También el tiempo de recuperación debe de ser mínimo para evitar un ataque y se pueda producir riesgos y vulnerabilidades en el entorno; también se debe implementar el cifrado en reposo y en tránsito de los datos para poder garantizar las seguridades de las copias. Las copias granulares de los componentes ayudarían a reducir el tiempo en la restauración y así se reduce las vulnerabilidades.
5. Portabilidad de Kubernetes
Con respecto a la portabilidad es una característica de los Kubernetes, que para ser aprovechada la copia de seguridad debe lograr realizar todas las restauraciones en las distintas distribuciones y configuraciones de la infraestructura, logrando transformar las versiones de forma automática para que se ejecute en el nuevo entorno, zonas y regiones de disponibilidad. Logrando traducir todas las dependencias para que se pueda utilizar en los nuevos entornos.
6. Solución nativa de Kubernetes
Como la mayoría de las copias de seguridad tradicionales nunca toman en cuenta la complejidad de la semántica de las aplicaciones de Kubernetes y las terminan respaldando de forma individual, mientras tanto que los componentes de Kubernetes tienen sus configuraciones de clústeres, secretos y el estado de los volúmenes persistentes, todo esto comprendido dentro de una clave como etcd, así que cada cambio realizado con su entorno se verá reflejado directamente en esta clave, una de las mejores prácticas es que la copia de seguridad pueda tomar la parte robusta de toda la clave y así pueda tener la capacidad de poder descubrir todos los componentes y poder tomarlos como una sola unidad para una recuperación optima más adelante.
7. Comparación de soluciones.
Ya que hemos revisado algunas de las mejores prácticas para realizar las copias de seguridad de los Kubernetes, es esencial que podamos realizar una comparación entre las soluciones de copia de seguridad más populares de Kubernetes, en este apartado solo las mencionáremos.
Soluciones:
Ø Copia de seguridad PX
Ø Copia de seguridad Kasten K10
Ø Copia de seguridad Velero