{"componentChunkName":"component---src-pages-mdx-fields-path-tsx","path":"/2018/12/12/i-4-tools-per-sviluppare-in-cloud/","result":{"data":{"post":{"frontmatter":{"title":"I 4 tool Open Source che ogni Sviluppatore Cloud deve conoscere nel 2019","date":"12th December, 2018","description":"I tool Open Source più importanti per lo sviluppo di software e architetture Cloud nel 2019.","headerImage":false,"author":{"name":"Ludovico Russo"},"image":{"childImageSharp":{"resize":{"src":"/static/a22359266e0e861678d9e804236f6340/2a4de/main.png"},"gatsbyImageData":{"layout":"constrained","backgroundColor":"#f8f8f8","images":{"fallback":{"src":"/static/a22359266e0e861678d9e804236f6340/0139d/main.png","srcSet":"/static/a22359266e0e861678d9e804236f6340/19d75/main.png 225w,\n/static/a22359266e0e861678d9e804236f6340/a5858/main.png 450w,\n/static/a22359266e0e861678d9e804236f6340/0139d/main.png 900w","sizes":"(min-width: 900px) 900px, 100vw"},"sources":[{"srcSet":"/static/a22359266e0e861678d9e804236f6340/a90ad/main.webp 225w,\n/static/a22359266e0e861678d9e804236f6340/f657c/main.webp 450w,\n/static/a22359266e0e861678d9e804236f6340/c4412/main.webp 900w","type":"image/webp","sizes":"(min-width: 900px) 900px, 100vw"}]},"width":900,"height":506}}}},"timeToRead":4,"body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"I 4 tool Open Source che ogni Sviluppatore Cloud deve conoscere nel 2019\",\n  \"layout\": \"post\",\n  \"date\": \"2018-12-12T00:00:00.000Z\",\n  \"headerImage\": false,\n  \"read-time\": true,\n  \"tag\": [\"Docker\", \"Kubernetes\", \"Helm\"],\n  \"category\": \"blog\",\n  \"author\": \"ludusrusso\",\n  \"description\": \"I tool Open Source più importanti per lo sviluppo di software e architetture Cloud nel 2019.\",\n  \"path\": \"/2018/12/12/i-4-tools-per-sviluppare-in-cloud/\",\n  \"image\": \"./main.png\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"960px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/a22359266e0e861678d9e804236f6340/d9199/main.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"56.333333333333336%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAABoElEQVQoz6WSz27TQBDG8xY8E0/EGyBx4MQNqTfOCIrEpdCEIFrT/BGOs7Z3vbbXTddugo2dxg5e2zuDkpag8ufEdxpp5jej79P08D/UQ0QAQMQsyyilYRhyzn3fl1IyxqIosm2bECKEoJQyxtI0PSC/4DzPPc+bzWaUUsdxKKXD4dD3fULIeDweDAaGYUwmEynlPRgRO61Ho9F8PjdN0zAMxpgQ0XQ6tSyL7GSHoSCE9Pt9Ka/uwRoQAGUcM8aCIHBdl3O+uk4cx/E8jzHmc75MFkKIIAiKotjDeLgMaalaDYckNOByU9+uR8RW4yJDgL8F9uR89eAZeXy2VG2LCFvVmN7V+xEBrdtOI8Krs/LRUfZxvkXEutEXQRKm6zv4aJY/fL08iSpESJLEdL3j04sXx/04r5XeXfjsqqcv1zxuEPEy2zz/YL354ncaekFanrrxOU9ObLna1IhYFOt3n6ZvDQv2RpJvnX3ZhNets2iKUu/5m2K7m+x9b7qvpUorlVVK/7SlAVSrb2vVQFHpbQ03FTTtH55/E9zpn4916P4AGCpjfanK++gAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"I 4 tool che ogni Sviluppatore Cloud deve conoscere nel 2019\",\n    \"title\": \"I 4 tool che ogni Sviluppatore Cloud deve conoscere nel 2019\",\n    \"src\": \"/static/a22359266e0e861678d9e804236f6340/d9199/main.png\",\n    \"srcSet\": [\"/static/a22359266e0e861678d9e804236f6340/5a46d/main.png 300w\", \"/static/a22359266e0e861678d9e804236f6340/0a47e/main.png 600w\", \"/static/a22359266e0e861678d9e804236f6340/d9199/main.png 960w\"],\n    \"sizes\": \"(max-width: 960px) 100vw, 960px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Da un po' di tempo mi sto dedicando sempre di pi\\xF9 allo sviluppo di software in Cloud, e ho costruito e sviluppato una serie di skills su software, tools e strategie per lo sviluppo di software in cloud in modo semplice e veloce.\"), mdx(\"p\", null, \"In questo post, vi voglio raccontare queli che sono i tool pi\\xF9 importanti che ogni \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Cloud Developer\"), \" deve conoscere, e a cosa servono!\"), mdx(\"h2\", null, \"1. Docker\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"594px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/2cd0317123a80f8c344c745ebaca84bc/5fd3e/docker.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"27%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAFCAYAAABFA8wzAAAACXBIWXMAAAsTAAALEwEAmpwYAAABZ0lEQVQY01WPMWhTYRzE/y/03vcCDq0gDt06ONcIkWqKorPFQIa6iJva3EuxqIFYRBMDtU0D6iCFFkn4f1uGDOLiUCzRJCBaIUUcWhFEwZYS6CCC8MkrFXQ4ftwNd5z4Nxri5194XjIzYO63FsyDzjlTaktQ2ZCB9KwgW48htIJQPTCSPaDKPz4G2lhEidf2xBRbhaDc+WLKXWeKr3P+3dWkKXfTg84Jrj8ThHYI4X6BgPYvjxyU/peLKbXz8fl1589/cObhe2fm3vVNpfc2qH786t9+nsBUbRyhLYB6HtQEqCOgXgT1GqjHQD0B6llQx0CdkPhib81b2nZHV779OrT843ewvOOCJ1s/zZ2Xw8jWTyG0V0GtgjoL2mlQH4F6EtQmqLdAuwLaOqhLoB4Xubl6+nLzcz/3atfh6XcXPN78FNxbS5nSG/FnGodBvQJqKloH7QVQz4B6CdRxUJOgnQRtBtTR6PIfkTqYyRa21rQAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Docker\",\n    \"title\": \"Docker\",\n    \"src\": \"/static/2cd0317123a80f8c344c745ebaca84bc/5fd3e/docker.png\",\n    \"srcSet\": [\"/static/2cd0317123a80f8c344c745ebaca84bc/5a46d/docker.png 300w\", \"/static/2cd0317123a80f8c344c745ebaca84bc/5fd3e/docker.png 594w\"],\n    \"sizes\": \"(max-width: 594px) 100vw, 594px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Ho \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://ludusrusso.cc/tags/#docker\"\n  }, \"parlato di Docker\"), \" in alcuni post in questo blog.\"), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Docker\"), \" \\xE8 probabilmente il progetto Open Source che ha avuto pi\\xF9 impatto nel mondo del Cloud Computing negli ultimi tempi, basti pensare che in meno di 5 anni (Docker \\xE8 stato rilasciato nel 2013) \\xE8 diventato uno standard di fatto accettato ed utilizzato da tutti i Big del mondo Cloud Computing, ma gi\\xE0 in \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.datacenterknowledge.com/archives/2014/08/22/docker-ceo-dockers-impact-data-center-industry-will-huge\"\n  }, \"meno di 2 anni dal rilascio\"), \" era sotto il mirino dei vari cloud provider, per la sua capacit\\xE0 di impacchettare. spostare e distribuire applacazioni tra i vari ambienti Cloud.\"), mdx(\"p\", null, \"Docker \\xE8 basato sulla tecnologia dei Linux container, che possono essere visti (mi scusino i puristi del cloud ma ho bisogno di un esempio pratico) come delle \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"Macchine Virtuali Superleggere\"), \". Docker permette di gestire la creazione, distribuzione, condivisione e gestione di Linux Container.\"), mdx(\"p\", null, \"Impacchettando un'applicazione con Docker all'interno di un Container Linux, siamo sicuri che le dipendenze dell'applicazione e l'ambiente di configurazione sar\\xE0 sempre lo stesso indipendentemente da dove verr\\xE0 deployata l'applicazione stessa, sia sul nostro PC di sviluppo su cui gira Ubuntu, che su un server remoto basato su Debian o un cluster di Server (si veda la voce Kubernetes) in Cloud.\"), mdx(\"p\", null, \"Docker inoltre standardizza il modo in cui un'applicazione viene Buildata e Testata, semplificando notevolmente la gestione del Continuous Integration delle applicazioni in Cloud.\\nIl build delle applicazioni Docker \\xE8 \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"incrementale\"), \", questo vuol dire che docker permette di risparmiare tantissimo tempo in fase di compilazione, in quanto le parti delle immagini gi\\xE0 compilate possono essere riutilizzare nei build futuri.\"), mdx(\"p\", null, \"Per finire, Docker permette di distribuire le immagini tramite Internet con i Container Registry. Questi possono essere utilizzati sia per spostare in modo semplice le applicazioni\\ndal nostro ambiente di test locale all'ambiente di produzione in cloud, ma anche permette di condividere le immagini di progetti in modalit\\xE0 Open (o anche no). Basta fare un giro sul sito \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://hub.docker.com/\"\n  }, \"Docker Hub\"), \" per capire di che parlo.\"), mdx(\"h3\", null, \"1.1 Docker per IoT\"), mdx(\"p\", null, \"Un piccolo bonus, prima di andare avanti, lo voglio dedicare al mondo IoT, che \\xE8 stato anche questo influenzato tantissimo dalla tecnologia Linux Container e quindi da Docker.\"), mdx(\"p\", null, \"Come ho gi\\xE0 detto, i container molto leggeri con un overhead minimo. Per questo motivo, questa tecnologi\\xE0 sta avendo lo stesso impatto che ha avuto la Virtualizzazione all'interno dell IoT. I container Docker possono infatti essere tranquillamente eseguti all'interno di macchine ARM su Embedded Linux. Con i registry Docker, le immagini possono essere distruibuite come aggiornamenti su dispositivi IoT in produzione.\"), mdx(\"p\", null, \"Per approfondimenti, ho trattato il tema su questo blog nell'articolo \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://ludusrusso.cc/2018/06/29/docker-raspberrypi/\"\n  }, \"Buildare e usare container Docker per Raspberry Pi\")), mdx(\"h2\", null, \"2. docker-compose\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"453px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/415163b16f20c885de09426e7262b85c/2108e/compose.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"57.666666666666664%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC9klEQVQoz32Te0iTURjG32+fQZgEWZaCSBKGlJkOkZTUCItUVMos5/2yTxRd2nA6ZbqpSz9vm3mZ27zf80JzX6nN1E1QdJRNk1Ao0RBk/SX2T1S6E9/SSLEeeA4v5xx+vIfnPQBH6JS1NbQ9n4DGPg14Z9XhwH0N9nl9l4La33ZkPO1Rs+4/cIiPioXoFC4G/9NZWzuwtXcAhWoOqlpfAp9UMOj9cLIHLldO+DAlWuQYJfjiff3GBQ8vX/AIjPg30NnLHx6tI8gxIrgpUGCxzbpj2WIZuF29YhOdymMWPqmqKKqQSRFC5vuudyKx5McCICjTQRCGYWbvK0G3Bb4l/RAspcA/mOVS0aze7B2ZQwOaOVTd2LseHHL3YjgrHtIkFE6odzGCMv1tGgiA47gZxl1DkK7/BqGl3R7XqjVR+dJWjUb/EU3Or37XGtZ+qLUGlMTJmaK7DGj5CskjCAgKmbvcNy1LemHg+HGSLhYR+BGCJSeRarugrkszoV9Bw9NLO+NvPu0MTc6j+DT+gk8bOs8ZQ+7soR0mQSFPgjJ5EJSJSVAmC/q5ARiG+QFAEIPBCAQAz/C4FG9+sTTvJIDVwLBuZWp2HqnHZ3cFpAzlkXWD4nZdTFjntlvqMHIhKJPPHoyG4jTQjjYAnDt9xsYBACzq2wbZlbKOiMHRaZB1qBRjc8uoW61FkexMibugayOj+RVK8nJ0ShG1Qrrh0JP3Q9kPhpMtgjyxhCWWKFcKy+tlRVXy1Yae0U1594sNYVnduE+ysD2zsm2Vk5DoyLvnC3GkGj8Uym9ZnrDC0nlChs6wBkKyll9a0/I5t1haUkDWzoiljZs8vlBZrejaqm9oKeKyE5175HJ41tqJqZVle8Ggg+PDTs8CrWEd6x+dgQKyhiOWNt0m5X1N9cpOKkjUlPawdxGFFTZO6o07wIuJAJmyC3uvfwfKvtGjBzuDX/innl02wgfjLhh/IqBHBBW5gp1AVW4Vws0HhCBXtWD+QfTZrcDQA6BfWQVpL/suP+QAAAAASUVORK5CYII=')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Docker Compose\",\n    \"title\": \"Docker Compose\",\n    \"src\": \"/static/415163b16f20c885de09426e7262b85c/2108e/compose.png\",\n    \"srcSet\": [\"/static/415163b16f20c885de09426e7262b85c/5a46d/compose.png 300w\", \"/static/415163b16f20c885de09426e7262b85c/2108e/compose.png 453w\"],\n    \"sizes\": \"(max-width: 453px) 100vw, 453px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Lo sviluppo di applicazioni Docker richiede una certa conoscenza del tool linea di comando \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"docker\"), \", che risulta essere (ve ne accorgerete subito) molto prolisso per compilare, lanciare e gestire applicazioni Docker. Il tutto si complica quando iniziamo ad avere progetti con pi\\xF9 di un container docker in azione (e vi assicuro che \\xE8 normale avere almeno due container che lavorano insieme), e se si vogliono sfruttare le funzionalit\\xE0 di docker come la gestione dei \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"volumi\"), \", il networking virtuale o il semplice passaggio di configurazioni (come variabili d'ambiente) al container.\"), mdx(\"p\", null, mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"docker-compose\"), \" \\xE8 un tool (implementato in Python) che permette di gestire in modo semplice e veloce la gestione dei container. Al posto di gestire l'intera vita dei container a mano da line a di comando, possiamo creare un file di configurazione \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"docker-compose.yaml\"), \" che descrive i nostri container e come questi interagiscono tra loro. Una volta creato ed implementato questo file, possiamo usare dei comandi semplificati per creare, gestire e distruggere i container!\"), mdx(\"h2\", null, \"3. Kubernetes\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/e41528f5257d89d58028ff39c3c2f712/4929c/kubernetes.png\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"21.666666666666668%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAYAAACOXx+WAAAACXBIWXMAAC4jAAAuIwF4pT92AAAA6ElEQVQY042QsUtCYRTFf896ohKOgri5uOoSNjnLG8QhEFR8ImRIkEG2FQpiaggOuoqLg3+CNbQ2RWPQEuQLUQQxkHToiw8+cfXA5dx77rnDuQQLY8O4m3yYrenPyZU1CJWECzjUXR4HOxyxL8JF663/uBQv779/hc5MeLNrA/BpNr0q18ApcA9IPQvEgSQQA3LAGZAGEkCGSOl73BstxdPranPRnYnA+cIE3JrN3gZugApQBmpAQx2m1NwEpL8OXAMP+M2vSPR2Mk81p+L40hrCswaC/KeQAeyqtvF1xZriA/kepcve+Q8C3EC8g2Ea6wAAAABJRU5ErkJggg==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Kubernetes\",\n    \"title\": \"Kubernetes\",\n    \"src\": \"/static/e41528f5257d89d58028ff39c3c2f712/c1b63/kubernetes.png\",\n    \"srcSet\": [\"/static/e41528f5257d89d58028ff39c3c2f712/5a46d/kubernetes.png 300w\", \"/static/e41528f5257d89d58028ff39c3c2f712/0a47e/kubernetes.png 600w\", \"/static/e41528f5257d89d58028ff39c3c2f712/c1b63/kubernetes.png 1200w\", \"/static/e41528f5257d89d58028ff39c3c2f712/4929c/kubernetes.png 1727w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Kubernetes\"), \" (\", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"k8s\"), \" per gli amici) \\xE8 un progetto Open Source nato e spinto da Google, e attualmente matenuto dalla \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Cloud Native Computing Foundation\"), \". Kubernetes \\xE8 il progetto che, dopo Docker, ha radicalmente ridefinito il concetto di Cloud Computing moderno. Kubernetes \\xE8 un sistema che permette di orchestrare e gestire applicazioni basate su container. Permettendo di automatizzare e semplificare il deployment, lo scaling e la gestione di applicazioni i cui \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"building blocks\"), \" sono, appunto, container.\"), mdx(\"p\", null, \"Kuberentes introduce alcuni concetti che richiedono un po' di tempo per essere appresi e digeriti, ma, una volta capiti, ci permettono gestire interamente un'applicazione cloud con uno (o pi\\xF9) file di configurazione e una serie di semplici comandi basati sul tool \", mdx(\"inlineCode\", {\n    parentName: \"p\"\n  }, \"kubeclt\"), \".\"), mdx(\"h2\", null, \"4. Helm\"), mdx(\"p\", null, mdx(\"span\", {\n    parentName: \"p\",\n    \"className\": \"gatsby-resp-image-wrapper\",\n    \"style\": {\n      \"position\": \"relative\",\n      \"display\": \"block\",\n      \"marginLeft\": \"auto\",\n      \"marginRight\": \"auto\",\n      \"maxWidth\": \"1200px\"\n    }\n  }, \"\\n      \", mdx(\"a\", {\n    parentName: \"span\",\n    \"className\": \"gatsby-resp-image-link\",\n    \"href\": \"/static/4d7d91d302eda226e5dbc066f9257889/e5166/helm.jpg\",\n    \"style\": {\n      \"display\": \"block\"\n    },\n    \"target\": \"_blank\",\n    \"rel\": \"noopener\"\n  }, \"\\n    \", mdx(\"span\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-background-image\",\n    \"style\": {\n      \"paddingBottom\": \"52.33333333333333%\",\n      \"position\": \"relative\",\n      \"bottom\": \"0\",\n      \"left\": \"0\",\n      \"backgroundImage\": \"url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFwAAAwEAAAAAAAAAAAAAAAAAAAIEBf/EABQBAQAAAAAAAAAAAAAAAAAAAAP/2gAMAwEAAhADEAAAAduW1UJwDX//xAAaEAACAgMAAAAAAAAAAAAAAAABAgMSABAx/9oACAEBAAEFApGqsctmw8AGv//EABcRAAMBAAAAAAAAAAAAAAAAAAIQERL/2gAIAQMBAT8BK6X/xAAWEQEBAQAAAAAAAAAAAAAAAAARAhD/2gAIAQIBAT8BkM//xAAZEAACAwEAAAAAAAAAAAAAAAAQEQABITH/2gAIAQEABj8CcWnlD//EABoQAQACAwEAAAAAAAAAAAAAAAEAERAhUYH/2gAIAQEAAT8hRwXKG+3cAUO4NsDzH//aAAwDAQACAAMAAAAQY8//xAAXEQADAQAAAAAAAAAAAAAAAAABECER/9oACAEDAQE/EIMMX//EABcRAAMBAAAAAAAAAAAAAAAAAAEQIRH/2gAIAQIBAT8Qp0Vf/8QAGxABAAIDAQEAAAAAAAAAAAAAASExABARUYH/2gAIAQEAAT8QQPyyHmMMAoJB9vRMASk7htYFgNf/2Q==')\",\n      \"backgroundSize\": \"cover\",\n      \"display\": \"block\"\n    }\n  }), \"\\n  \", mdx(\"img\", {\n    parentName: \"a\",\n    \"className\": \"gatsby-resp-image-image\",\n    \"alt\": \"Helm\",\n    \"title\": \"Helm\",\n    \"src\": \"/static/4d7d91d302eda226e5dbc066f9257889/e5166/helm.jpg\",\n    \"srcSet\": [\"/static/4d7d91d302eda226e5dbc066f9257889/f93b5/helm.jpg 300w\", \"/static/4d7d91d302eda226e5dbc066f9257889/b4294/helm.jpg 600w\", \"/static/4d7d91d302eda226e5dbc066f9257889/e5166/helm.jpg 1200w\"],\n    \"sizes\": \"(max-width: 1200px) 100vw, 1200px\",\n    \"style\": {\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"margin\": \"0\",\n      \"verticalAlign\": \"middle\",\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\"\n    },\n    \"loading\": \"lazy\"\n  }), \"\\n  \"), \"\\n    \")), mdx(\"p\", null, \"Per finire, \", mdx(\"strong\", {\n    parentName: \"p\"\n  }, \"Helm\"), \" \\xE8 l'ultimo tool che ho iniziato ad utilizzare in questo periodo, ma che,in pochi giorni, ha rivelato tutta la sua potenza. Come viene definito dagli stessi creatori del progetto, Helm \\xE8 un packet manager per kubernetes, e ci permette di condividere ed utilizzare applicazioni kubernetes in modo semplice e veloce. Il progetto ha permesso di costruire repository di applicazioni \", mdx(\"em\", {\n    parentName: \"p\"\n  }, \"kubernetes-ready\"), \", come \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://hub.kubeapps.com/\"\n  }, \"Kubeapps\"), \", che possiamo installare ed utilizzare sul nostro cluster persone pochi click!\"), mdx(\"h2\", null, \"Conclusioni\"), mdx(\"p\", null, \"Le tecnologie informatiche si evolvono velocemente, le tecnologie web lo fanno molto velocemente e anche il Cloud Computing non \\xE8 da meno. Lo sviluppo di applicazioni Cloud \\xE8 cambiato notevolmente in pochissimi anni (se non mesi), e con questo post ho voluto fare una carrellata sulle tecnologie che, a mio pararere, sono le pi\\xF9 importanti da conoscere per chi vuole lavorare nel mondo del cloud computing.\"), mdx(\"p\", null, \"Voi cosa ne pensate? Ho dimenticato qualcosa? Avete dei suggerimenti o creitiche per migliorare questo post?\"));\n}\n;\nMDXContent.isMDXComponent = true;"}},"pageContext":{"id":"3bad7ed8-98e0-5312-9a96-0758231d11a0","fields__path":"/2018/12/12/i-4-tools-per-sviluppare-in-cloud/","__params":{"fields__path":"2018"}}},"staticQueryHashes":["2958666869","3649515864"]}