{"id":35594,"date":"2019-10-31T22:05:15","date_gmt":"2019-10-31T19:05:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/gitops-sravnenie-metodov-pull-i-push\/"},"modified":"2019-10-31T22:05:15","modified_gmt":"2019-10-31T19:05:15","slug":"gitops-sravnenie-metodov-pull-i-push","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","title":{"rendered":"GitOps: comparaci\u00f3n de m\u00e9todos Pull y Push","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Nota de traducci\u00f3n.<\/b>: En la comunidad de Kubernetes, est\u00e1 ganando una notable popularidad una tendencia llamada GitOps, de la que nos convencimos personalmente, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/454184\/\">al asistir<\/a><\/noindex> a KubeCon Europe 2019. Este t\u00e9rmino fue creado relativamente recientemente <noindex><a rel=\"nofollow\" href=\"https:\/\/www.weave.works\/blog\/gitops-operations-by-pull-request\">por el fundador de Weaveworks, Alexis Richardson, y se refiere a la aplicaci\u00f3n de herramientas familiares para los desarrolladores (principalmente Git, de donde proviene su nombre) para abordar tareas de operaci\u00f3n. En particular, se trata de operar Kubernetes almacenando sus configuraciones en Git y desplegando autom\u00e1ticamente cambios en el cl\u00faster. Matthias Jg explica en este art\u00edculo dos enfoques para este despliegue.<\/a><\/noindex> El a\u00f1o pasado<\/i><\/p>\n<p><img decoding=\"async\" alt=\"GitOps: comparaci\u00f3n de m\u00e9todos Pull y Push\" src=\"\/wp-content\/uploads\/2862627cedb4347679d0c14876a24869.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(de hecho, formalmente ocurri\u00f3 en agosto de 2017 - nota del traductor) <i>apareci\u00f3 un nuevo enfoque para el despliegue de aplicaciones en Kubernetes. Se llama GitOps, y se basa en la idea fundamental de que el seguimiento de versiones de despliegues se realiza en un entorno seguro de repositorio Git.<\/i> ha surgido un nuevo enfoque para el despliegue de aplicaciones en Kubernetes. Se llama GitOps, y se basa en la premisa fundamental de que el seguimiento de las versiones de los despliegues se realiza en un entorno seguro de repositorio Git.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><b>Versionado de despliegues e historial de cambios<\/b>:<\/p>\n<ol>\n<li> <b>Versionado de despliegues e historial de cambios<\/b>. El estado de todo el cl\u00faster se almacena en un repositorio Git, y los despliegues solo se actualizan mediante commits. Adem\u00e1s, todos los cambios se pueden rastrear a trav\u00e9s del historial de commits.<\/li>\n<li> <b>. Un simple<\/b>git reset <code>permite revertir cambios en los despliegues; siempre hay estados anteriores disponibles.<\/code> permite revertir cambios en los despliegues; siempre est\u00e1n disponibles estados anteriores.<\/li>\n<li> <b>. Por lo general, un sistema Git contiene muchos datos confidenciales, por lo que la mayor\u00eda de las empresas prestan especial atenci\u00f3n a su protecci\u00f3n. Por lo tanto, esta protecci\u00f3n se extiende tambi\u00e9n a las operaciones con despliegues.<\/b>. Normalmente, el sistema Git contiene muchos datos confidenciales, por lo que la mayor\u00eda de las empresas presta especial atenci\u00f3n a su protecci\u00f3n. En consecuencia, esta protecci\u00f3n tambi\u00e9n se aplica a las operaciones con los despliegues.<\/li>\n<li> <b>. La mayor\u00eda de los sistemas Git inicialmente soportan pol\u00edticas para diferentes ramas, por ejemplo, solo los pull requests pueden actualizar el master, y otro miembro del equipo debe revisar y aprobar los cambios. Al igual que con el control de acceso, las mismas pol\u00edticas se aplican a las actualizaciones de los despliegues.<\/b>. La mayor\u00eda de los sistemas Git inicialmente admiten pol\u00edticas para diferentes ramas \u2014 por ejemplo, solo los pull requests pueden actualizar master, y los cambios deben ser revisados y aceptados por otro miembro del equipo. Al igual que con el control de acceso, se aplican las mismas pol\u00edticas a las actualizaciones de los despliegues.<\/li>\n<\/ol>\n<p>\nComo pueden ver, el m\u00e9todo GitOps tiene muchas ventajas. En el \u00faltimo a\u00f1o, dos enfoques han ganado especial popularidad. Uno se basa en push, el otro en pull. Antes de examinarlos, veamos primero c\u00f3mo se ven los t\u00edpicos despliegues de Kubernetes.<\/p>\n<h2>En los \u00faltimos a\u00f1os, han surgido varios m\u00e9todos y herramientas para despliegues en Kubernetes:<\/h2>\n<p>\nBasados en plantillas nativas de Kubernetes\/Kustomize<\/p>\n<ol>\n<li> <b>Basado en plantillas nativas de Kubernetes\/Kustomize<\/b>. Esta es la forma m\u00e1s sencilla de desplegar aplicaciones en Kubernetes. El desarrollador crea archivos YAML b\u00e1sicos y los aplica. Para evitar reescribir constantemente las mismas plantillas, se desarroll\u00f3 Kustomize (que convierte las plantillas de Kubernetes en m\u00f3dulos). <i><b>Nota de traducci\u00f3n.<\/b>: Kustomize se ha integrado en kubectl con <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/445196\/\">el lanzamiento de Kubernetes 1.14<\/a><\/noindex>.<\/i><\/li>\n<li> <b>Chartes de Helm<\/b>. Los charts de Helm permiten crear conjuntos de plantillas, init-containers, sidecars, etc., que se utilizan para desplegar aplicaciones con capacidades de configuraci\u00f3n m\u00e1s flexibles que en el enfoque basado en plantillas. Este m\u00e9todo se basa en archivos YAML parametrizados. Helm los completa con varios par\u00e1metros y luego los env\u00eda a Tiller, que es un componente del cl\u00faster que los despliega en el cl\u00faster y permite realizar actualizaciones y retrocesos. Es importante que, en esencia, Helm simplemente inserta los valores necesarios en las plantillas y luego las aplica de la misma manera que se hace en el enfoque tradicional <i>(para m\u00e1s informaci\u00f3n sobre c\u00f3mo funciona todo esto y c\u00f3mo se puede usar, lea nuestro <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/423239\/\">art\u00edculo sobre Helm<\/a><\/noindex> \u2014 nota del traductor)<\/i>. Hay una gran variedad de Chartes de Helm listos que abarcan un amplio espectro de tareas.<\/li>\n<li> <b>Herramientas alternativas<\/b>. Hay muchas herramientas alternativas. Todas ellas comparten el hecho de que convierten algunos archivos de plantilla en comprensibles archivos YAML de Kubernetes y luego los aplican.<\/li>\n<\/ol>\n<p>\nEn nuestro trabajo, usamos constantemente los Chartes de Helm para herramientas importantes (ya que muchos de ellos ya est\u00e1n listos, lo que simplifica mucho la vida) y archivos YAML 'limpios' de Kubernetes para desplegar nuestras propias aplicaciones.<\/p>\n<h2>Pull &amp; Push<\/h2>\n<p>\nEn una de sus publicaciones recientes en el blog, present\u00e9 la herramienta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/weaveworks\/flux\">Weave Flux<\/a><\/noindex>, permitiendo hacer commits de las plantillas en el repositorio Git y actualizar el despliegue despu\u00e9s de cada commit o push del contenedor. Mi experiencia muestra que esta herramienta es una de las principales en la promoci\u00f3n del enfoque pull, por lo que me referir\u00e9 a ella con frecuencia. Si deseas saber m\u00e1s sobre c\u00f3mo usarla, aqu\u00ed tienes <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/@m.k.joerg\/gitops-weave-flux-in-detail-77ce36945646\">el enlace al art\u00edculo<\/a><\/noindex>.<\/p>\n<p><i><b>NB!<\/b> Todas las ventajas del uso de GitOps se mantienen para ambos enfoques.<\/i><\/p>\n<h2>Enfoque basado en Pull<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: comparaci\u00f3n de m\u00e9todos Pull y Push\" src=\"\/wp-content\/uploads\/4ed8e6de36bc37d0e747ff99027f8399.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLa base del enfoque pull radica en el hecho de que todos los cambios se aplican desde dentro del cl\u00faster. Dentro del cl\u00faster hay un operador que verifica regularmente los repositorios de Git y el Docker Registry relacionados. Si hay alg\u00fan cambio en ellos, el estado del cl\u00faster se actualiza desde adentro. Por lo general, se considera que este proceso es bastante seguro, ya que ning\u00fan cliente externo tiene acceso a los derechos de administrador del cl\u00faster.<\/p>\n<p><b>Pros:<\/b><\/p>\n<ol>\n<li> Ning\u00fan cliente externo tiene derechos para realizar cambios en el cl\u00faster; todas las actualizaciones se implementan desde adentro.<\/li>\n<li> Algunas herramientas tambi\u00e9n permiten sincronizar actualizaciones de Helm charts y vincularlas al cl\u00faster.<\/li>\n<li> Se puede escanear el Docker Registry en busca de nuevas versiones. Si aparece una nueva imagen, el repositorio de Git y el despliegue se actualizan a la nueva versi\u00f3n.<\/li>\n<li> Las herramientas pull pueden estar distribuidas en diferentes espacios de nombres con diferentes repositorios de Git y derechos de acceso. Esto permite aplicar un modelo multicliente (multitenant). Por ejemplo, el equipo A puede usar el espacio de nombres A, el equipo B utiliza el espacio de nombres B, y el equipo encargado de la infraestructura puede usar un espacio global.<\/li>\n<li> Por lo general, las herramientas son bastante ligeras.<\/li>\n<li> En combinaci\u00f3n con herramientas como el operador <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bitnami-labs\/sealed-secrets\">Bitnami Sealed Secrets<\/a><\/noindex>, los secretos pueden almacenarse encriptados en el repositorio de Git y ser extra\u00eddos dentro del cl\u00faster.<\/li>\n<li> No hay conexi\u00f3n con las canalizaciones de CD, ya que los despliegues ocurren dentro del cl\u00faster.<\/li>\n<\/ol>\n<p>\n<b>Desventajas<\/b>:<\/p>\n<ol>\n<li> Gestionar los secretos de los despliegues a partir de gr\u00e1ficos Helm es m\u00e1s complicado que con los convencionales, ya que primero hay que generarlos como, digamos, secretos sellados, luego desencriptarlos con un operador interno y solo despu\u00e9s estar\u00e1n disponibles para la herramienta de pull. Despu\u00e9s se puede ejecutar el lanzamiento en Helm con los valores ya dentro de los secretos desplegados. La forma m\u00e1s simple es crear un secreto con todos los valores de Helm utilizados para el despliegue, desencriptarlo y hacer un commit en Git.<\/li>\n<li> Al aplicar un enfoque de pull, est\u00e1s atado a herramientas que operan con pull. Esto limita la capacidad de personalizar el proceso de despliegue en el cl\u00faster. Por ejemplo, trabajar con Kustomize se complica porque debe ejecutarse antes de que las plantillas finales lleguen a Git. No digo que no se puedan usar herramientas separadas, pero es m\u00e1s dif\u00edcil integrarlas en el proceso de despliegue.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Enfoque basado en Push<\/h2>\n<p>\n<img decoding=\"async\" alt=\"GitOps: comparaci\u00f3n de m\u00e9todos Pull y Push\" src=\"\/wp-content\/uploads\/533fc0bd107c3338d323e908ae9e75ab.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEn el enfoque push, un sistema externo (principalmente tuber\u00edas CD) inicia despliegues en el cl\u00faster despu\u00e9s de un commit en el repositorio de Git o en caso de que una tuber\u00eda CI anterior se ejecute con \u00e9xito. En este enfoque, el sistema tiene acceso al cl\u00faster.<\/p>\n<p><b>Ventajas<\/b>:<\/p>\n<ol>\n<li> La seguridad est\u00e1 definida por el repositorio de Git y la tuber\u00eda de construcci\u00f3n.<\/li>\n<li> Es m\u00e1s f\u00e1cil desplegar gr\u00e1ficos de Helm, hay soporte para plugins de Helm.<\/li>\n<li> Es m\u00e1s sencillo gestionar secretos, ya que se pueden aplicar en las tuber\u00edas y tambi\u00e9n almacenar en Git de manera cifrada (dependiendo de las preferencias del usuario).<\/li>\n<li> No hay dependencia de una herramienta espec\u00edfica, ya que se pueden utilizar cualquier tipo de ellas.<\/li>\n<li> Las actualizaciones de versiones de contenedores pueden ser iniciadas por la tuber\u00eda de construcci\u00f3n.<\/li>\n<\/ol>\n<p>\n<b>Desventajas<\/b>:<\/p>\n<ol>\n<li> Los datos de acceso al cl\u00faster se encuentran dentro del sistema de construcci\u00f3n.<\/li>\n<li> Actualizar los contenedores de despliegue sigue siendo m\u00e1s f\u00e1cil con el proceso de pull.<\/li>\n<li> Fuerte dependencia del sistema CD, ya que las tuber\u00edas necesarias pueden haber sido inicialmente escritas para Gitlab Runners, y luego el equipo decide migrar a Azure DevOps o Jenkins\u2026 y habr\u00e1 que realizar una migraci\u00f3n de un gran n\u00famero de tuber\u00edas de construcci\u00f3n.<\/li>\n<\/ol>\n<p><\/p>\n<h2>Conclusiones: \u00bfPush o Pull?<\/h2>\n<p>\nComo suele suceder, cada enfoque tiene sus ventajas y desventajas. Algunas tareas son m\u00e1s f\u00e1ciles de realizar con uno y m\u00e1s dif\u00edciles con otro. Al principio, realizaba implementaciones manualmente, pero tras encontrar varios art\u00edculos sobre Weave Flux, decid\u00ed adoptar procesos GitOps para todos los proyectos. Para las plantillas b\u00e1sicas esto result\u00f3 f\u00e1cil, pero luego empec\u00e9 a enfrentar dificultades al trabajar con gr\u00e1ficos de Helm. En ese momento, Weave Flux solo ofrec\u00eda una versi\u00f3n incipiente del Helm Chart Operator, pero incluso ahora algunas tareas son m\u00e1s complicadas debido a la necesidad de crear secretos manualmente y aplicarlos. Se podr\u00eda argumentar que el enfoque pull es mucho m\u00e1s seguro, ya que las credenciales del cl\u00faster no est\u00e1n disponibles fuera de \u00e9l, lo que aumenta la seguridad lo suficiente como para justificar el esfuerzo adicional.<\/p>\n<p>Despu\u00e9s de reflexionar un poco, llegu\u00e9 a la conclusi\u00f3n inesperada de que no es as\u00ed. En cuanto a los componentes que requieren m\u00e1xima protecci\u00f3n, esta lista incluir\u00eda los almacenes de secretos y los sistemas de CI\/CD, as\u00ed como los repositorios de Git. La informaci\u00f3n dentro de ellos es bastante vulnerable y necesita la m\u00e1xima protecci\u00f3n. Adem\u00e1s, si alguien logra infiltrarse en tu repositorio de Git y puede hacer push de c\u00f3digo, podr\u00e1 desplegar lo que desee (independientemente del enfoque elegido, ya sea pull o push), e infiltrarse en los sistemas del cl\u00faster. Por lo tanto, los componentes m\u00e1s importantes que requieren protecci\u00f3n son el repositorio de Git y los sistemas de CI\/CD, y no las credenciales del cl\u00faster. Si tienes pol\u00edticas y medidas de seguridad bien configuradas para sistemas de este tipo y las credenciales del cl\u00faster se extraen en los pipelines solo como secretos, la seguridad adicional del enfoque de pull podr\u00eda resultar no tan valiosa como se supon\u00eda originalmente.<\/p>\n<p>Entonces, si el enfoque pull es m\u00e1s laborioso y no ofrece una ventaja en seguridad, \u00bfno ser\u00eda l\u00f3gico usar solo el enfoque push? Pero alguien podr\u00eda argumentar que en el enfoque push est\u00e1s demasiado atado al sistema de CD y, quiz\u00e1s, ser\u00eda mejor evitarlo para facilitar futuras migraciones.<\/p>\n<p>En mi opini\u00f3n (como siempre), se debe utilizar lo que mejor se adapte a cada caso o combinar ambos. Personalmente, utilizo ambos enfoques: Weave Flux para despliegues basados en pull, que principalmente incluyen nuestros propios servicios, y el enfoque push con Helm y complementos, que simplifica la aplicaci\u00f3n de gr\u00e1ficos Helm al cl\u00faster y permite crear secretos sin problemas. Creo que nunca habr\u00e1 una \u00fanica soluci\u00f3n que funcione para todos los casos, porque siempre hay muchos matices y dependen del caso de uso espec\u00edfico. Por lo tanto, recomiendo encarecidamente GitOps: facilita mucho las cosas y mejora la seguridad.<\/p>\n<p>Espero que mi experiencia sobre este tema ayude a decidir qu\u00e9 m\u00e9todo es m\u00e1s adecuado para su tipo de despliegues, y estar\u00e9 encantado de conocer su opini\u00f3n.<\/p>\n<h2>P.D. Nota del traductor<\/h2>\n<p>\nEn las desventajas del modelo pull hay un punto sobre lo dif\u00edcil que es poner en Git los manifiestos renderizados, sin embargo, no hay desventaja en que el pipeline de CD en el modelo pull vive por separado del despliegue y esencialmente se convierte en un pipeline de la categor\u00eda <i>Continuous Apply<\/i>. Por lo tanto, se requerir\u00e1n a\u00fan m\u00e1s esfuerzos para recopilar el estado de todos los despliegues y proporcionar acceso a los registros\/estados, preferiblemente vinculado al sistema CD.<\/p>\n<p>En este sentido, el modelo push permite dar algunas garant\u00edas sobre el lanzamiento, porque se puede igualar la vida \u00fatil del pipeline con el tiempo de vida del lanzamiento.<\/p>\n<p>Hemos probado ambos modelos y llegamos a las mismas conclusiones que el autor del art\u00edculo:<\/p>\n<ol>\n<li> El modelo pull es adecuado para organizar la actualizaci\u00f3n de componentes del sistema en un gran n\u00famero de cl\u00fasteres (ver <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/455543\/\">el art\u00edculo sobre addon-operator<\/a><\/noindex>).<\/li>\n<li> El modelo push basado en GitLab CI es muy adecuado para el lanzamiento de aplicaciones usando gr\u00e1ficos Helm. Al mismo tiempo, el lanzamiento de despliegues en el marco de los pipelines se monitorea con la herramienta <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/flant\/werf\">werf<\/a><\/noindex>. Vale la pena mencionar que en el contexto de este proyecto escuchamos constantemente 'GitOps' cuando discut\u00edamos los problemas actuales de los ingenieros DevOps en nuestro stand en KubeCon Europe '19.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P.P.D. del traductor<\/h2>\n<p>\nTambi\u00e9n puedes leer en nuestro blog:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/441964\/\">Consejos y trucos de Kubernetes: traducci\u00f3n de recursos en cl\u00faster bajo la gesti\u00f3n de Helm 2<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/434160\/\">Presentamos la biblioteca kubedog para hacer seguimiento de los recursos de Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/449096\/\">Ampliando y complementando Kubernetes (rese\u00f1a y video de la presentaci\u00f3n)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/436910\/\">Consejos para crear flujos de trabajo no convencionales en GitLab CI<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p class=\"for_users_only_msg\">Solo los usuarios registrados pueden participar en la encuesta. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Inicie sesi\u00f3n<\/a><\/noindex>, por favor.<\/p>\n<h2 class=\"default-block__polling-title\">\u00bfUtiliza GitOps?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ed, enfoque pull<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ed, enfoque push<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ed, pull + push<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    S\u00ed, algo diferente<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    No<\/p>\n<\/li>\n<\/ul>\n<p>    30 usuarios votaron. 10 usuarios se abstuvieron.<br \/>\n<br \/>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/456754\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 Kubernetes \u044f\u0432\u043d\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0442\u0440\u0435\u043d\u0434 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c GitOps, \u0432 \u0447\u0451\u043c \u043c\u044b \u043b\u0438\u0447\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u043b\u0438\u0441\u044c, \u043f\u043e\u0441\u0435\u0442\u0438\u0432 KubeCon Europe 2019. \u042d\u0442\u043e\u0442 \u0442\u0435\u0440\u043c\u0438\u043d \u0431\u044b\u043b \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d \u0433\u043b\u0430\u0432\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 Weaveworks \u2014 Alexis Richardson \u2014 \u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0445 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 (\u0432 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u2014 Git, \u043e\u0442\u043a\u0443\u0434\u0430 \u0438 \u0441\u0430\u043c\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435) \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438. \u0412 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-35594","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47GitOps: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Pull \u0438 Push | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:05:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:05:15+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47GitOps: comparaci\u00f3n de los m\u00e9todos Pull y Push | ProHoster","description":"Ej.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47GitOps: \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 Pull \u0438 Push | ProHoster","og:description":"\u041f\u0440\u0438\u043c.","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/gitops-sravnenie-metodov-pull-i-push","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:05:15+00:00","article:modified_time":"2019-10-31T19:05:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"35594","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 23:54:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:05:10","updated":"2026-01-21 23:54:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/35594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=35594"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/35594\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=35594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=35594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=35594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}