{"id":2942,"date":"2020-05-02T21:22:35","date_gmt":"2020-05-03T01:22:35","guid":{"rendered":"http:\/\/arielantigua.com\/weblog\/?p=2942"},"modified":"2020-05-27T14:12:35","modified_gmt":"2020-05-27T18:12:35","slug":"kubernetes-respaldando-volumenes-de-rancher-longhorn-en-minio","status":"publish","type":"post","link":"https:\/\/arielantigua.com\/weblog\/2020\/05\/kubernetes-respaldando-volumenes-de-rancher-longhorn-en-minio\/","title":{"rendered":"Kubernetes \u2013 Respaldando vol\u00famenes de Rancher Longhorn en Minio."},"content":{"rendered":"<p>Kubernetes \u2013 Respaldando vol\u00famenes de Rancher Longhorn en Minio.<\/p>\n<p>Longhorn ha estado en beta desde que le\u00ed sobre este proyecto hace m\u00e1s de un a\u00f1o, actualmente est\u00e1 en la versi\u00f3n 0.8.1, cumple con lo necesario para usarlo como proveedor de almacenamiento en Kubernetes, al menos en mi caso.<\/p>\n<p>Hace ya un tiempo escrib\u00ed sobre esta implementaci\u00f3n desarrollada por Rancher<\/p>\n<p><a href=\"https:\/\/arielantigua.com\/weblog\/2019\/10\/kubernetes-almacenamiento-con-rancher-longhorn-parte2\/\">https:\/\/arielantigua.com\/weblog\/2019\/10\/kubernetes-almacenamiento-con-rancher-longhorn-parte2\/<\/a><\/p>\n<p>En esta ocasi\u00f3n me ha tocado configurar la opci\u00f3n de respaldos ofrecida por Longhorn, actualmente solo respalda los vol\u00famenes provisionados por su engine. Hace unos meses jugu\u00e9 un poco con Velero pero las pruebas no fueron satisfactorias como lo esperaba as\u00ed que mientras tanto respaldare los vol\u00famenes de Longhorn usando su propia implementaci\u00f3n de respaldos.<\/p>\n<p>En Longhorn un respaldo representa el estado de un volumen (un snapshot) en un momento determinado, este es almacenado en un espacio alternativo (backupstore, esto ha creado en Minio) el cual esta localizado fuera del sistema de Longhorn. <a href=\"https:\/\/longhorn.io\/docs\/0.8.0\/concepts\/backups\/\">https:\/\/longhorn.io\/docs\/0.8.0\/concepts\/backups\/<\/a><\/p>\n<p><!--more--><\/p>\n<p>El backupstore puede ser un NFS o una implementaci\u00f3n AWS S3 compatible, en mi caso he decidido probar con Minio que es la implementaci\u00f3n OpenSource de S3 mas conocida. El servicio de Minio que estoy usando est\u00e1 instalado en mi servidor de unRAID usando Docker y provee alrededor de 7TB que pueden ser usados para respaldos. En este espacio no cubrir\u00e9 como montarse un servidor de Minio, la documentaci\u00f3n de Longhorn tiene un peque\u00f1o ejemplo de como correr uno en k8s.<\/p>\n<p>Una vez tenemos las credenciales, URL y el nombre del bucket de nuestro Minio, procederemos a crear un Kind:Secret con dicha informaci\u00f3n.<\/p>\n<blockquote>\n<pre>Minio-secret.yaml :\r\n\r\napiVersion: v1\r\nkind: Secret\r\nmetadata:\r\n  name: minio-secret\r\n  namespace: longhorn-system\r\ntype: Opaque\r\ndata:\r\n  AWS_ACCESS_KEY_ID: bG9uZ2hvcm4tdGVzdC1hY2Nlc3Mta2V5 #\r\n  AWS_SECRET_ACCESS_KEY: bG9uZ2hvcm4tdGVzdC1zZWNyZXQta2V5\r\n  AWS_ENDPOINTS: aHR0cDovL21pbmlvLXNlcnZpY2UuZGVmYXVsdDo5MDAw<\/pre>\n<\/blockquote>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/#creating-a-secret-manually\">https:\/\/kubernetes.io\/docs\/concepts\/configuration\/secret\/#creating-a-secret-manually<\/a><\/p>\n<p><strong>Longhorn UI:<\/strong><\/p>\n<p>En el manager de Longhorn se debe completar la informaci\u00f3n en Settings-&gt;General-&gt;Backup Target<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"764\" height=\"306\" class=\"wp-image-2943\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image.png 764w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-300x120.png 300w\" sizes=\"auto, (max-width: 764px) 100vw, 764px\" \/><\/p>\n<p>Se debe remplazar longhorn por el nombre del bucket creado en Minio, en mi caso se llama longhorn. Ya realizada esta configuraci\u00f3n se puede acceder al \u00e1rea de Backup y no recibiremos mensaje de error.<\/p>\n<p>Para crear respaldos recurrentes debemos hacerlo desde el Volumen que queremos respaldar, procedemos al final donde encontraremos:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1523\" height=\"212\" class=\"wp-image-2944\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-1.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-1.png 1523w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-1-300x42.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-1-768x107.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-1-1024x143.png 1024w\" sizes=\"auto, (max-width: 1523px) 100vw, 1523px\" \/><\/p>\n<p>Hacemos click en Edit:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"360\" class=\"wp-image-2945\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-2.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-2.png 329w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-2-274x300.png 274w\" sizes=\"auto, (max-width: 329px) 100vw, 329px\" \/><\/p>\n<p>Agregaremos un nuevo calendario de backup haciendo click en <strong>+ New<\/strong><\/p>\n<p>Se habilitar\u00e1 una nueva secci\u00f3n y all\u00ed debemos asegurarnos de seleccionar Backup y no snapshot.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1542\" height=\"342\" class=\"wp-image-2946\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-3.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-3.png 1542w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-3-300x67.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-3-768x170.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-3-1024x227.png 1024w\" sizes=\"auto, (max-width: 1542px) 100vw, 1542px\" \/><\/p>\n<p>En este punto tenemos un respaldo que ser\u00e1 creado a las 12:00AM todos los d\u00edas y almacenara la informaci\u00f3n en nuestro Minio. Si deseamos cambiar el horario, podemos hacer click en el mismo:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"369\" class=\"wp-image-2947\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-4.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-4.png 876w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-4-300x126.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-4-768x324.png 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/p>\n<p>Si entendemos Cron con facilidad, podemos llenar la casilla con la configuraci\u00f3n que deseamos, si no, podemos hacer uso de <strong>Generate Cron<\/strong> el cual encontr\u00e9 un poco dif\u00edcil de manipular.<\/p>\n<p>Cuando estemos complacidos con nuestra configuraci\u00f3n, hacemos click en Save.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1550\" height=\"263\" class=\"wp-image-2948\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-5.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-5.png 1550w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-5-300x51.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-5-768x130.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-5-1024x174.png 1024w\" sizes=\"auto, (max-width: 1550px) 100vw, 1550px\" \/><\/p>\n<p>As\u00ed de f\u00e1cil tenemos respaldos con Longhorn.<\/p>\n<p>Para validar que nuestros respaldos est\u00e1n configurados y ejecut\u00e1ndose, lo podemos validar en Volumen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1492\" height=\"308\" class=\"wp-image-2949\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-6.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-6.png 1492w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-6-300x62.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-6-768x159.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-6-1024x211.png 1024w\" sizes=\"auto, (max-width: 1492px) 100vw, 1492px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"611\" height=\"315\" class=\"wp-image-2950\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-7.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-7.png 611w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-7-300x155.png 300w\" sizes=\"auto, (max-width: 611px) 100vw, 611px\" \/><\/p>\n<p>Se puede apreciar que tenemos tres respaldos agendados y que uno de ellos ya fue ejecutado hace una hora.<\/p>\n<p>En Backups se pueden ver con m\u00e1s detalles estos respaldos, al hacer click en el nombre nos despliegue la cantidad de respaldos disponibles, tama\u00f1o y fecha de creaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1561\" height=\"233\" class=\"wp-image-2951\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-8.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-8.png 1561w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-8-300x45.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-8-768x115.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-8-1024x153.png 1024w\" sizes=\"auto, (max-width: 1561px) 100vw, 1561px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1562\" height=\"330\" class=\"wp-image-2952\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-9.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-9.png 1562w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-9-300x63.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-9-768x162.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-9-1024x216.png 1024w\" sizes=\"auto, (max-width: 1562px) 100vw, 1562px\" \/><\/p>\n<p>Estoy cubierto con la creaci\u00f3n del respaldo, para hacer uso de uno de esos respaldos, usaremos la opci\u00f3n de <strong>Create Desaster Recovery Volume<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1565\" height=\"325\" class=\"wp-image-2953\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-10.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-10.png 1565w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-10-300x62.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-10-768x159.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-10-1024x213.png 1024w\" sizes=\"auto, (max-width: 1565px) 100vw, 1565px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"522\" height=\"349\" class=\"wp-image-2954\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-11.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-11.png 522w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-11-300x201.png 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/p>\n<p>Hacemos click en OK<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1563\" height=\"290\" class=\"wp-image-2955\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-12.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-12.png 1563w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-12-300x56.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-12-768x142.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-12-1024x190.png 1024w\" sizes=\"auto, (max-width: 1563px) 100vw, 1563px\" \/><\/p>\n<p>Una vez completado:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1490\" height=\"96\" class=\"wp-image-2956\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-13.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-13.png 1490w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-13-300x19.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-13-768x49.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-13-1024x66.png 1024w\" sizes=\"auto, (max-width: 1490px) 100vw, 1490px\" \/><\/p>\n<p>Se puede ver que el Volumen fue colocado en el mismo Namespace que tiene asignado el Volumen respaldado, incluso nos dice el tiempo en el que esta copia de seguridad fue creada, as\u00ed tenemos una idea de la data que estamos recuperando.<\/p>\n<p>Aun me falta mucho por explorar con relaci\u00f3n a recuperar la data, estar\u00e9 investigando mas si existe una manera de solicitar un respaldo desde k8s para que este sea presentado a un Pod sin tener que intervenir desde el manager de Longhor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes \u2013 Respaldando vol\u00famenes de Rancher Longhorn en Minio. Longhorn ha estado en beta desde que le\u00ed sobre este proyecto hace m\u00e1s de un a\u00f1o, actualmente est\u00e1 en la versi\u00f3n 0.8.1, cumple con lo necesario para usarlo como proveedor de almacenamiento en Kubernetes, al menos en mi caso. Hace ya un tiempo escrib\u00ed sobre esta [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,128,131],"tags":[139,132],"class_list":["post-2942","post","type-post","status-publish","format-standard","hentry","category-general","category-kubernetes","category-rancher","tag-kubernetes","tag-rancher"],"_links":{"self":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/2942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/comments?post=2942"}],"version-history":[{"count":0,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/2942\/revisions"}],"wp:attachment":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/media?parent=2942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/categories?post=2942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/tags?post=2942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}