{"id":2958,"date":"2020-05-09T15:06:50","date_gmt":"2020-05-09T19:06:50","guid":{"rendered":"http:\/\/arielantigua.com\/weblog\/?p=2958"},"modified":"2020-05-27T14:11:29","modified_gmt":"2020-05-27T18:11:29","slug":"kubernetes-respaldando-volumenes-y-configuraciones-de-kubernetes-con-velero","status":"publish","type":"post","link":"https:\/\/arielantigua.com\/weblog\/2020\/05\/kubernetes-respaldando-volumenes-y-configuraciones-de-kubernetes-con-velero\/","title":{"rendered":"Kubernetes \u2013 Respaldando vol\u00famenes y configuraciones de Kubernetes con Velero."},"content":{"rendered":"<p>Kubernetes \u2013 Respaldando vol\u00famenes y configuraciones de Kubernetes con Velero.<\/p>\n<p>\u00bfOtro post sobre respaldos?<\/p>\n<p>Si, pero esta vez adem\u00e1s de poder respaldar la data de un volumen, tambi\u00e9n podremos respaldar la informaci\u00f3n necesaria de un Deployment para ser recuperado o migrado mas adelante en caso de fallas o en una migraci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-2959\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-14.png\" width=\"484\" height=\"150\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-14.png 1435w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-14-300x93.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-14-768x238.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-14-1024x318.png 1024w\" sizes=\"auto, (max-width: 484px) 100vw, 484px\" \/><\/p>\n<p><strong>Velero<\/strong><\/p>\n<p>Anteriormente conocido como Heptio Ark, nos permite realizar respaldos tanto como de los vol\u00famenes as\u00ed tambi\u00e9n de los recursos en un cluster de Kubernetes. \u00bfQu\u00e9 me permite hacer?<\/p>\n<ul>\n<li>Respaldos de un cluster y restaurarlos en caso de perdidas.<\/li>\n<li>Migraci\u00f3n de un cluster a otro, sin importar que sea en premisa o en la nube.<\/li>\n<li>Replicar un ambiente de producci\u00f3n a desarrollo o QA.<\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p><strong>Instalaci\u00f3n<\/strong><\/p>\n<p>Los requisitos para realizar una instalaci\u00f3n de Velero son:<\/p>\n<ul>\n<li>Acceso a un cluster de Kubernetes mayor a v1.10 con DNS y CNI habilitado.<\/li>\n<li>kubectl instalado en la misma maquina donde se realizar\u00e1 la instalaci\u00f3n.<\/li>\n<\/ul>\n<p>Velero usa object Storage para almacenar los respaldos asociados a las tareas de backup, en mi caso estar\u00e9 usando MinIO. Como en el caso anterior, no se mostrar\u00e1 la instalaci\u00f3n de un servidor Minio.<\/p>\n<p>Lo primero es que necesitamos la utilidad cli de velero para inicializar sus componentes en el cluster de Kubernetes.<\/p>\n<p><a href=\"https:\/\/github.com\/vmware-tanzu\/velero\/releases\/latest\">https:\/\/github.com\/vmware-tanzu\/velero\/releases\/latest<\/a><\/p>\n<p>Descargamos la \u00faltima versi\u00f3n de dicha utilidad y la colocamos en nuestro path de ejecuci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1571\" height=\"137\" class=\"wp-image-2960\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-15.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-15.png 1571w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-15-300x26.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-15-768x67.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-15-1024x89.png 1024w\" sizes=\"auto, (max-width: 1571px) 100vw, 1571px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1071\" height=\"364\" class=\"wp-image-2961\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-16.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-16.png 1071w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-16-300x102.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-16-768x261.png 768w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-16-1024x348.png 1024w\" sizes=\"auto, (max-width: 1071px) 100vw, 1071px\" \/><\/p>\n<p>Como aun no se han instalado los componentes de Velero en el cluster, tenemos un mensaje de error validando la versi\u00f3n que deber\u00eda de estar en \u00e9l.<\/p>\n<p>Algo que tenemos que saber es que, para tener respaldos de vol\u00famenes debemos inicializar Velero con soporte Restic, esto lo podemos indicar mientras lo inicializamos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"893\" height=\"187\" class=\"wp-image-2962\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-17.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-17.png 893w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-17-300x63.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-17-768x161.png 768w\" sizes=\"auto, (max-width: 893px) 100vw, 893px\" \/><\/p>\n<p><a href=\"https:\/\/velero.io\/docs\/master\/restic\/\">https:\/\/velero.io\/docs\/master\/restic\/<\/a><\/p>\n<p>En el enlace anterior se puede encontrar informaci\u00f3n de esta integraci\u00f3n y cu\u00e1les son sus limitantes.<\/p>\n<p>\u00bfQue nos est\u00e1 pidiendo la instalaci\u00f3n de Velero?<\/p>\n<p><strong>&#8211;provider<\/strong> aws \u2013 Ya que Minio es una implementaci\u00f3n del s3 de AWS necesitamos especificar este valor.<\/p>\n<p><strong>&#8211;plugins<\/strong> \u2013 al igual que el valor anterior, estamos usando una alternativa a s3.<\/p>\n<p><strong>&#8211;bucket<\/strong> \u2013 el nombre del bucket en Minio ser\u00e1 velero.<\/p>\n<p><strong>&#8211;secret-file<\/strong> \u2013 un archivo con la informaci\u00f3n de login de Minio.<\/p>\n<p><strong>&#8211;use-volume-snapshots<\/strong> \u2013 hace falta investigar un poco m\u00e1s, pero entiendo que esto indica que si necesita hacer un respaldo de un volumen que no use la opci\u00f3n de snapshot proporcionada por el CSI.<\/p>\n<p><strong>&#8211;backup-location-config<\/strong> \u2013 informaci\u00f3n refernete a nuestro servidor Minio.<\/p>\n<p><strong>&#8211;use-restic<\/strong> \u2013 esto instalara un pod con restic para poder hacer respaldos de vol\u00famenes.<\/p>\n<p>&nbsp;<\/p>\n<p>Luego de ejecutar el comando de instalaci\u00f3n, podemos validar que todo termino bien:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"919\" height=\"253\" class=\"wp-image-2963\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-18.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-18.png 919w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-18-300x83.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-18-768x211.png 768w\" sizes=\"auto, (max-width: 919px) 100vw, 919px\" \/><\/p>\n<p><strong>Uso de Velero en mi ambiente<\/strong><\/p>\n<p>En la implementaci\u00f3n que he decido hacer, aunque velero fue instalado con soporte Restic, no estar\u00e9 usando esa funcionalidad y solo realizare respaldos de los resources\/recursos del cluster en caso de p\u00e9rdida poder recrear todo lo que esta corriendo en el y restaurar desde Lonhorn+Minio.<\/p>\n<p><strong>velero backup create nxcloud-backup &#8211;selector app=nxcloud<\/strong><\/p>\n<p>Se le est\u00e1 instruyendo a velero que realice un respaldo de todo lo relacionado a la aplicaci\u00f3n con el label app=nxcloud<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"136\" class=\"wp-image-2964\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-19.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-19.png 807w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-19-300x51.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-19-768x129.png 768w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"924\" height=\"113\" class=\"wp-image-2965\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-20.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-20.png 924w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-20-300x37.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-20-768x94.png 768w\" sizes=\"auto, (max-width: 924px) 100vw, 924px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"940\" height=\"106\" class=\"wp-image-2966\" src=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-21.png\" srcset=\"https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-21.png 940w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-21-300x34.png 300w, https:\/\/arielantigua.com\/weblog\/wp-content\/uploads\/2020\/05\/word-image-21-768x87.png 768w\" sizes=\"auto, (max-width: 940px) 100vw, 940px\" \/><\/p>\n<p>Debemos recordar que solo est\u00e1 respaldando la informaci\u00f3n relacionada a configuraciones y no vol\u00famenes.<\/p>\n<p>Por el momento es suficiente y m\u00e1s adelante estar\u00e9 probando las recuperaciones de Velero junto a longhorn.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kubernetes \u2013 Respaldando vol\u00famenes y configuraciones de Kubernetes con Velero. \u00bfOtro post sobre respaldos? Si, pero esta vez adem\u00e1s de poder respaldar la data de un volumen, tambi\u00e9n podremos respaldar la informaci\u00f3n necesaria de un Deployment para ser recuperado o migrado mas adelante en caso de fallas o en una migraci\u00f3n. Velero Anteriormente conocido como [&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,119],"class_list":["post-2958","post","type-post","status-publish","format-standard","hentry","category-general","category-kubernetes","category-rancher","tag-kubernetes","tag-vmware"],"_links":{"self":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/2958","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=2958"}],"version-history":[{"count":0,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/posts\/2958\/revisions"}],"wp:attachment":[{"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/media?parent=2958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/categories?post=2958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arielantigua.com\/weblog\/wp-json\/wp\/v2\/tags?post=2958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}