{"id":5163,"date":"2019-02-24T15:00:41","date_gmt":"2019-02-24T14:00:41","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=5163"},"modified":"2023-06-09T12:08:21","modified_gmt":"2023-06-09T10:08:21","slug":"migrating-to-kubernetes-part-1-introduction","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/02\/24\/migrating-to-kubernetes-part-1-introduction\/","title":{"rendered":"Migrating to Kubernetes Part 1 &#8211; Introduction"},"content":{"rendered":"\n<p>Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1280\" height=\"853\" data-attachment-id=\"5183\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/02\/24\/migrating-to-kubernetes-part-1-introduction\/pexels-photo-379964\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg\" data-orig-size=\"1280,853\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"pexels-photo-379964\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964-1024x682.jpeg\" src=\"https:\/\/i2.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg?fit=656%2C437&amp;ssl=1\" alt=\"\" class=\"wp-image-5183\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg 1280w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964-300x200.jpeg 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964-768x512.jpeg 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964-1024x682.jpeg 1024w\" sizes=\"auto, (max-width: 1280px) 100vw, 1280px\" \/><\/figure>\n\n\n\n<div class=\"wp-block-jetpack-markdown\"><h2>Introduction<\/h2>\n<p>The great challenge of collaborative working in a software developer team is to enable a high level of developer activity while ensuring a high product quality. In order to achieve this often CI\/CD processes are utilized.<\/p>\n<p>Talking about modern development techniques the terms Continuous Integration (CI) and Continuous Delivery (CD) are frequently used. CI\/CD provide automation and monitoring throughout an application life-cycle. The integration phase, test phase, deployment and implementation phase are packed together in a CI\/CD pipeline.<\/p>\n<\/div>\n\n\n\n<!--more-->\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a href=\"https:\/\/gitlab.mi.hdm-stuttgart.de\/sys-eng\/migrate-to-kubernetes\">This blog article is based on the source code of a client\/server application that can be found here<\/a>.<\/p><\/blockquote>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-jetpack-markdown\"><h3>Scenario<\/h3>\n<p>The exemplary single page application is written with Angular and has a NodeJS backend. It is built in a classic 3-tier-architecture, consisting of Client Tier (Client), Logic Tier (Server) and Data Tier (DB).<\/p>\n<p>The plan was to create a  CI\/CD pipeline for this exemplary application. The project ought to be deployed on Kubernetes and Gitlab CI had to be used as CI tool. To manage Kubernetes the package manager Helm, respectively Helm-Charts, are used.<\/p>\n<p>Tests will be executed automatically including a readyness probe. Multiple internal test environments should be created: an internal test environment identical to the current live state of the application (staging), an internal test environment for the master branch (dev), and an internal test environment for each feature branch (\/feature).\nThis is intended to create a special Developer Experience having a separate environment for production, staging and each review branch. This way, each new feature can be viewed individually and it is possible to see which effects each feature has on the application as a whole. New features can be presented to third parties, such as customers, in their own review app.<\/p>\n<h3>Continuous Integration<\/h3>\n<p>In the concept of Continuous Integration each developer in a team merges their local changes in the main branch as often as possible. The developers should commit their changes at least once a day. A build is created that runs through automated tests. The fast build gives developers a quick feedback. This prevents integration problems which usually occur when developers are waiting to merge changes until the release date.<\/p>\n<h3>Continuous Delivery<\/h3>\n<p>Continuous Delivery extends Continuous Integration. It ensures that changes in code can be deployed quickly and sustainably. Release-processes are automated and applications can be deployed by pushing a button. In the concept of CD the created application is automatically imported into a development, test and (if wanted) production environment after the CI build.\nThe creation of a CI\/CD pipeline can lead to reliable, fast and repeatable deployments.<\/p>\n<h3>Kubernetes<\/h3>\n<p>Recently more and more web application companies are discovering the advantages of working with containers. Using containers can facilitate the development, deployment and orchestration of web applications. But working with containers is also often associated with a huge management effort. Administration tools, such as the open source application Kubernetes, can simplify this process.\nKubernetes is a platform-independent orchestration tool. It supports developers during maintenance and scaling of applications organized in containers and their automated execution. A variety of container tools are supported, including Docker.<\/p>\n<p>The System Engineering and Management lecture provided practical insight into these processes and allowed new experiences to be gained. The goal of the semester project was to set up a CI\/CD pipeline and to deploy the project on Kubernetes. The scenario was realized with an exemplary single page application.<\/p>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Parts:<\/h2>\n\n\n\n<div class=\"wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\ufeffPart 1 &#8211; Introduction<\/p><\/blockquote>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/?p=5175\"><strong>Part 2 &#8211; Deploy&nbsp;with&nbsp;Kubectl<\/strong><\/a><\/p><\/blockquote>\n\n\n\n<p><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns has-2-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/?p=5177\">Part 3 &#8211; Creating Environments with Helm<\/a><\/strong><\/p><\/blockquote>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/?p=5179\">Part 4 &#8211; Creating Environments via&nbsp;Gitlab<\/a><\/strong><\/p><\/blockquote>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Related Sources<\/h3>\n\n\n\n<ol class=\"wp-block-list\"><li>https:\/\/de.atlassian.com\/continuous-delivery\/principles\/continuous-integration-vs-delivery-vs-deployment<\/li><li>https:\/\/kubernetes.io\/<\/li><\/ol>\n\n\n\n<p><\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat<\/p>\n","protected":false},"author":909,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,651,2],"tags":[],"ppma_author":[776],"class_list":["post-5163","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-system-designs","category-system-engineering"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":2143,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/03\/08\/of-apache-spark-hadoop-vagrant-virtualbox-and-ibm-bluemix-services\/","url_meta":{"origin":5163,"position":0},"title":"Of Apache Spark, Hadoop, Vagrant, VirtualBox and IBM Bluemix Services &#8211; Part 1 &#8211; Introduction","author":"bh051, cz022, ds168","date":"8. March 2017","format":false,"excerpt":"As part of the lecture \u201cSystem Engineering and Management\u201d in the winter semester 2016\/17, we run a project with Apache Spark and the Apache Hadoop Ecosystem. In this article series firstly we want to introduce Apache Spark and the Apache Hadoop Ecosystem. Furthermore we want to give an overview of\u2026","rel":"","context":"In &quot;Student Projects&quot;","block_context":{"text":"Student Projects","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/student-projects\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":26160,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2024\/02\/29\/why-system-monitoring-is-important-and-how-we-approached-it\/","url_meta":{"origin":5163,"position":1},"title":"Why system monitoring is important and how we approached it","author":"Michelle Becher","date":"29. February 2024","format":false,"excerpt":"Introduction Imagine building a service that aims to generate as much user traffic as possible to be as profitable as possible. The infrastructure of your service usually includes some kind of backend, a server and other frameworks. One day, something is not working as it should and you can't seem\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/monitoring.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/monitoring.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/monitoring.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2024\/02\/monitoring.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1758,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2017\/01\/12\/snakes-exploring-pipelines-a-system-engineering-and-management-project-5\/","url_meta":{"origin":5163,"position":2},"title":"Snakes exploring Pipelines &#8211; A \u201cSystem Engineering and Management\u201d Project","author":"Yann Loic Philippczyk","date":"12. January 2017","format":false,"excerpt":"Part 4: Jenkins and Wrap Up This series of blog entries describes a student project focused on developing an application by using methods like pair programming, test driven development and deployment pipelines. Our first blog entry for this year will at the same time be the final one for this\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/01\/jenkins_code-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/01\/jenkins_code-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2017\/01\/jenkins_code-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":10877,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/09\/04\/system-theory-and-introduction-to-complexity\/","url_meta":{"origin":5163,"position":3},"title":"System Theory and an Introduction to Complexity","author":"Alexander Merker","date":"4. September 2020","format":false,"excerpt":"This article gives an introduction to some important aspects of system theory and system analysis. We present some frameworks and toolsets used for system analysis and summarize some key points of these tools. The article aims to show some of the complexity behind system analysis and why there often is\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/09\/fourpestscampaign.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/09\/fourpestscampaign.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/09\/fourpestscampaign.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2020\/09\/fourpestscampaign.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1711,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/11\/26\/snakes-exploring-pipelines-a-system-engineering-and-management-project\/","url_meta":{"origin":5163,"position":4},"title":"Snakes exploring Pipelines &#8211; A \u201cSystem Engineering and Management\u201d Project","author":"Yann Loic Philippczyk","date":"26. November 2016","format":false,"excerpt":"Part 0: Introduction This series of blog entries describes a student project focused on developing an application by using methods like pair programming, test driven development and deployment pipelines. Once upon a time, which was about one and a half months ago, an illustrious group of three students found together,\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"A python. (Because snakes. Not the language.) Source: https:\/\/rashmanly.files.wordpress.com\/2008\/10\/1439659.jpg","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2016\/11\/0_1-300x300.jpg?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":902,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2016\/07\/22\/defense-in-depth-a-present-time-example\/","url_meta":{"origin":5163,"position":5},"title":"Defense in Depth: a present time example","author":"Benjamin Binder","date":"22. July 2016","format":false,"excerpt":"In this post, we want to take a look on the concept of defense in depth. Therefore we are going to examine Chrome OS, the niche operation system for web users.","rel":"","context":"In &quot;Secure Systems&quot;","block_context":{"text":"Secure Systems","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/system-designs\/secure-systems\/"},"img":{"alt_text":"Dark castle walls reaching in the sky","src":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg","width":350,"height":200,"srcset":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 1x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 1.5x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 2x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 3x, https:\/\/upload.wikimedia.org\/wikipedia\/commons\/3\/32\/Caernarfon_Castle_Walls.jpg 4x"},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":776,"user_id":909,"is_guest":0,"slug":"ck165","display_name":"Can Kattwinkel","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/fee91281984251136fef4fca33c3971708c9d5c8d099574e76a2b06ff55ae77a?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/5163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/909"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=5163"}],"version-history":[{"count":34,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/5163\/revisions"}],"predecessor-version":[{"id":5253,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/5163\/revisions\/5253"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=5163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=5163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=5163"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=5163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}