{"id":35571,"date":"2018-08-17T19:55:05","date_gmt":"2018-08-17T16:55:05","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=35571"},"modified":"2018-08-20T12:37:18","modified_gmt":"2018-08-20T09:37:18","slug":"kubernetes-cluster-ops-options-for-configuration-management","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/","title":{"rendered":"Kubernetes Cluster Ops: Options for Configuration Management"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#Managing_multiple_clusters_is_a_challenge\" >Managing multiple clusters is a challenge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#Starting_with_the_usual_choices\" >Starting with the usual choices<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#What_about_Helm\" >What about Helm?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#What_other_options_were_used\" >What other options were used?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#Positive_results_with_a_home-brewed_tool\" >Positive results with a home-brewed tool<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#Want_details_Watch_the_video\" >Want details? Watch the video!<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#Related_slides\" >Related slides<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#Further_reading\" >Further reading<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#About_the_expert\" >About the expert<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Managing_multiple_clusters_is_a_challenge\"><\/span>Managing multiple clusters is a challenge<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Operators have had struggles with Kubernetes in the past. Kubernetes v1.0, which made its appearance in 2015, was rudimentary. Yet the pioneers creating on-premises virtualization (aka private cloud) and reaching out to a public cloud (especially AWS then) persisted, as Kubernetes was at least built around the then-revolutionary concept of orchestrating containers and managing clusters.<\/p>\n<p>Today, Kubernetes is evolving into a more full-featured environment and is being deployed in more complex environments. The problem now is when organizations scale the number of Kubernetes clusters deployed, cluster management becomes more complicated.<\/p>\n<p>During a <a href=\"https:\/\/www.meetup.com\/Seattle-Cloud-Native-and-Kubernetes-Meetup\/events\/251173592\/\" rel=\"noopener\" target=\"_blank\">recent meetup<\/a> in Seattle, <a href=\"https:\/\/www.linkedin.com\/in\/briggsl\/\" rel=\"noopener\" target=\"_blank\">Lee Briggs<\/a> of Apptio outlined a journey of the company&#8217;s team, in which many options were tested to address the scalability-related issues, and how a homegrown solution ultimately played a key role.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs-1024x576.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-35592\" \/><\/a><small>Lee Briggs at the meetup in Seattle (Photo credit: Altoros)<\/small><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Starting_with_the_usual_choices\"><\/span>Starting with the usual choices<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Today&#8217;s scaling challenges are horizontal, accomplished by adding distributed servers throughout an enterprise&#8217;s on-prem infrastructure or through public-cloud availability zones. This is in contrast to the vertical scaling found in pre-cloud, mainframe-driven IT (and yes, despite all of the cloud migration over the past decade, legacy scaling is still common).<\/p>\n<p>The Apptio&#8217;s team initial challenge was to remove \u201csnowflakes,\u201d i.e., unique servers that have their own specific configurations and were not originally designed to work in synchronized groups. Then, there&#8217;s the matter of establishing version control within your server environments and replicating them.<\/p>\n<p>This is where thorns start to appear, as operations people don&#8217;t work with just infrastructure, but with the applications that run on it, as well.<\/p>\n<p>Lee took his audience through the challenges the Apptio team has faced over the past 2.5 years. He started with a comparison of the \u201cbig three\u201d configuration management players: Ansible, Puppet, and Chef.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Apptio-Ansible-Puppet-Chef.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Apptio-Ansible-Puppet-Chef.png\" alt=\"\" width=\"498\" height=\"393\" class=\"aligncenter size-full wp-image-35577\" \/><\/a><small>The &#8220;Big Three&#8221; configuration managers (<a href=\"https:\/\/www.slideshare.net\/altoros\/kubernetes-configuration-management\/secret\/yYGEs1hP48my0G\" rel=\"noopener\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>Simply choosing one of these configuration managers and forging ahead proved to be problematical. First off, with the use of Kubernetes, the configuration level shifts up one level, Lee pointed out, from the individual server level to Kubernetes itself. Kubernetes is API-driven, convergent, and <a href=\"https:\/\/www.restapitutorial.com\/lessons\/idempotency.html\">idempotent<\/a> (consistent), which is all good, until the number of clusters starts to increase. <\/p>\n<p>In Apptio&#8217;s case, a large number of clusters also involved a large number of \u201ccomponents\u201d to be handled. Lee&#8217;s team defines a component as \u201ca thing that runs on Kubernetes that is needed for a cluster to be useful.\u201d Examples of this in his world include an <a href=\"https:\/\/github.com\/kubernetes\/ingress-nginx\" rel=\"noopener\" target=\"_blank\">Ingress Controller<\/a>, <a href=\"https:\/\/github.com\/kubernetes\/autoscaler\" rel=\"noopener\" target=\"_blank\">Cluster Autoscaler<\/a>, <a href=\"https:\/\/github.com\/bitnami-labs\/sealed-secrets\" rel=\"noopener\" target=\"_blank\">Sealed Secrets,<\/a> <a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/\" rel=\"noopener\" target=\"_blank\">RBAC Config<\/a>, and <a href=\"https:\/\/prometheus.io\/\" rel=\"noopener\" target=\"_blank\">Prometheus<\/a>.<\/p>\n<p>So, many aspects of these components vary slightly from cluster to cluster (for instance, SSL certificate paths, endpoint scraping for Prometheus, and namespaces) that another piece of software is needed.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_about_Helm\"><\/span>What about Helm?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Optimism returns at this point in the story, as the open-source <a href=\"https:\/\/helm.sh\" rel=\"noopener\" target=\"_blank\">Helm<\/a> package manager sails to the rescue. Helm applies \u201c<a href=\"https:\/\/v2.helm.sh\/docs\/developing_charts\/#charts\" rel=\"noopener\" target=\"_blank\">charts<\/a>\u201d to package resources (including applications). <\/p>\n<p>Helm has begun as an initiative within Kubernetes, an since then it found enough success to be liberated as a <a href=\"https:\/\/github.com\/helm\/helm\" rel=\"noopener\" target=\"_blank\">standalone project<\/a>. <\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Apptio-Chart-YAML-File.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Apptio-Chart-YAML-File.png\" alt=\"\" width=\"640\" class=\"aligncenter size-full wp-image-35581\" \/><\/a><small>A Helm Chart YAML file (<a href=\"https:\/\/v2.helm.sh\/docs\/developing_charts\/#the-chart-yaml-file\" rel=\"noopener\" target=\"_blank\">Image credit<\/a>)<\/small><\/center><\/p>\n<p>However, the Apptio team found out that by using Helm, they were \u201cjust moving the problem to another tool.\u201d Furthermore, Helm is currently \u201ca security nightmare,\u201d according to Lee, as it is far too generous in granting access throughout what it manages.<\/p>\n<p>The Helm community addressed <a href=\"https:\/\/github.com\/helm\/helm\/issues\/3255\" rel=\"noopener\" target=\"_blank\">this issue<\/a> with its version 3, but the Apptio team encountered other problems, too. <\/p>\n<blockquote><p><em>&#8220;The YAML values were different among clusters, and the Golang templates found in Helm become a nightmare when you get sophisticated. Having to range through values with templates became a chore, and once you do have all the config, how do you apply it to multiple clusters?\u201d \u2014Lee Briggs, Apptio<\/em><\/p><\/blockquote>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_other_options_were_used\"><\/span>What other options were used?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The objective was thus to leverage the Helm charts available with a module that could do this. The team also had a need to produce the JSON scripting easily. They tried using Helm with Ansible and with Puppet, but couldn&#8217;t make things work. Ansible&#8217;s Helm model \u201cis very broken,\u201d Lee said, and the Helm module for Puppet needed to be run through every node, and \u201cit just didn&#8217;t work.\u201d<\/p>\n<p>So, they moved to many other potential approaches, the first of which was <a href=\"https:\/\/terraform.io\" rel=\"noopener\" target=\"_blank\">Terraform<\/a>.<\/p>\n<p>Terraform&#8217;s developers describe it as \u201c<a href=\"https:\/\/en.wikipedia.org\/wiki\/Infrastructure_as_Code\" rel=\"noopener\" target=\"_blank\">infrastructure as code<\/a>,\u201d and it can be thought of in the same group as Ansible, Puppet, and Chef. The Apptio team found that Terraform&#8217;s developer created its own <a href=\"https:\/\/github.com\/hashicorp\/hcl\" rel=\"noopener\" target=\"_blank\">HashiCorp Configuration Language<\/a>, which makes it easy to write JSON scripts. Terraform also has Kubernetes and Helm providers.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs-v2.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs-v2-1024x576.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-35595\" \/><\/a><small>Lee Briggs talking about Kubernetes configuration options (Photo credit: Altoros)<\/small><\/center><\/p>\n<p>But, according to Lee, Terraform seemed \u201cextremely buggy,\u201d and the provider communities are not active in addressing such issues. Additionally, Kubernetes is updated frequently, and when this happened, the Apptio team would have to deal manually with bringing all the Terraform code up-to-date.<\/p>\n<p>Along the way, the team discovered <a href=\"https:\/\/github.com\/google\/jsonnet\" rel=\"noopener\" target=\"_blank\">Jsonnet<\/a>, a data templating language that generates config data and extends JSON. It was written by Google specifically to interact with and template JSON and has Golang wrappers so is easy to embed in Go apps. It provided a critical needed, but also called for a framework. <\/p>\n<p>So, the team tried <a href=\"https:\/\/github.com\/ksonnet\/ksonnet\" rel=\"noopener\" target=\"_blank\">ksonnet<\/a>, a framework designed to streamline writing to Kubernetes clusters, but found it to be \u201cdramatically over-complicated.\u201d They moved on to <a href=\"https:\/\/github.com\/kapicorp\/kapitan\" rel=\"noopener\" target=\"_blank\">kapitan<\/a>, a templated config management tool for Kubernetes (and Terraform, by the way), but couldn&#8217;t find success with that tool, either.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Positive_results_with_a_home-brewed_tool\"><\/span>Positive results with a home-brewed tool<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Finally, the team decided to take a DIY approach. The result is a solution called <b>kr8<\/b> (pronounced &#8220;create&#8221;). The tool automatically populates Jsonnet external variables, automatically concatenates Jsonnet files, and has the ability to patch Helm charts.<\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/lee-briggs-apption-kubernetes-configuration-management-options-v1.jpg\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/lee-briggs-apption-kubernetes-configuration-management-options-v1-1024x679.jpg\" alt=\"\" width=\"640\" class=\"aligncenter size-large wp-image-35879\" \/><\/a><\/center><\/p>\n<blockquote><p><em>&#8220;With <b>kr8<\/b>, we are attempting to leverage the power of Jsonnet, and render it and other things into usable manifests for each cluster. The tools uses Jsonnet to render YAML, then patches the JSON on top of that.\u201d \u2014Lee Briggs, Apptio<\/em><\/p><\/blockquote>\n<p>As might be inferred from the scope of this article, <b>kr8<\/b> is for operations only. \u201cWe don&#8217;t want devs to use this process,\u201d Lee said. \u201cThis is more for system administrators to build a cluster structure for the platform. Application performance in itself is a completely different topic, and we have other systems for that.\u201d<\/p>\n<p><b>kr8<\/b> is written in Golang, and Apptio plans to open-source it by the end of 2018, pending its internal legal review. The team plans on using the tool to track clusters into new regions, and get their latest states to copy over.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Want_details_Watch_the_video\"><\/span>Want details? Watch the video!<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<table width=\"100%\">\n<tbody>\n<tr>\n<td>\n<div style=\"float: right; width: 45%; padding-left: 15px; font-size: 14px;\">\n<p><strong>Table of contents<\/strong><\/p>\n<ol>\n<li style=\"margin-bottom: 6px;\">What is configuration management? (<a href=\"#wistia_1y5o1dnjls?time=126\">2&#8217;06&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What are components? (<a href=\"#wistia_1y5o1dnjls?time=431\">7&#8217;11&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What&#8217;s the problem with components? (<a href=\"#wistia_1y5o1dnjls?time=530\">8&#8217;50&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What is Helm? (<a href=\"#wistia_1y5o1dnjls?time=602\">10&#8217;02&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What is Ansible? (<a href=\"#wistia_1y5o1dnjls?time=820\">13&#8217;40&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What is Terraform? (<a href=\"#wistia_1y5o1dnjls?time=960\">16&#8217;00&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">What is kr8? (<a href=\"#wistia_1y5o1dnjls?time=1195\">19&#8217;55&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">Demo: configuration management with kr8 (<a href=\"#wistia_1y5o1dnjls?time=1350\">22&#8217;30&#8221;<\/a>)<\/li>\n<li style=\"margin-bottom: 6px;\">Questions and answers (<a href=\"#wistia_1y5o1dnjls?time=2232\">37&#8217;12&#8221;<\/a>)<\/li>\n<\/ol>\n<\/div>\n<p><script charset=\"ISO-8859-1\" src=\"\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_embed wistia_async_1y5o1dnjls\" style=\"height:320px;width:440px\">&nbsp;<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_slides\"><\/span>Related slides<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><center><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/yYGEs1hP48my0G\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/managing-multi-cluster-workloads-with-google-kubernetes-engine\/\">Managing Multi-Cluster Workloads with Kubernetes<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/evaluating-the-new-pivotal-container-service-for-kubernetes-clusters\/\">Evaluating PCS for Kubernetes Clusters<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/a-multitude-of-kubernetes-deployment-tools-kubespray-kops-and-kubeadm\/\">A Multitude of Kubernetes Deployment Tools: Kubespray, kops, and kubeadm<\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"About_the_expert\"><\/span>About the expert<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div>\n<div style=\"float: right;\"><a href=\"https:\/\/www.linkedin.com\/in\/briggsl\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Lee-Briggs-bio.png\" alt=\"\" width=\"150\" height=\"150\" class=\"aligncenter size-full wp-image-35598\" \/><\/a><\/div>\n<div style=\"width: 600px;\"><small><a href=\"https:\/\/www.linkedin.com\/in\/briggsl\/\" rel=\"noopener\" target=\"_blank\">Lee Briggs<\/a> is a Senior Infrastructure Engineer at Apptio. With almost 10 years of experience in designing, building, and maintaining distributed and complex systems, he wears the scars of many deployment tools. When Lee\u2019s not trying to fit monolithic applications into containers, he&#8217;s playing and watching soccer and walks with his family and dog, Toby.<\/small><\/div>\n<\/div>\n<p>&nbsp;<\/p>\n<hr \/>\n<p><center><small>This post was written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/rstrukhoff\/\">Roger Strukhoff<\/a> and edited by <a href=\"https:\/\/www.altoros.com\/blog\/author\/carlo\/\">Carlo Gutierrez<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/sophie.turol\/\">Sophie Turol<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Managing multiple clusters is a challenge<\/p>\n<p>Operators have had struggles with Kubernetes in the past. Kubernetes v1.0, which made its appearance in 2015, was rudimentary. Yet the pioneers creating on-premises virtualization (aka private cloud) and reaching out to a public cloud (especially AWS then) persisted, as Kubernetes was at least built [&#8230;]<\/p>\n","protected":false},"author":9,"featured_media":35604,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[7],"tags":[873,912],"class_list":["post-35571","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news-and-opinion","tag-cloud-native","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Kubernetes Cluster Ops: Options for Configuration Management | Altoros<\/title>\n<meta name=\"description\" content=\"Managing Kubernetes gets complicated as the number of clusters increases. Learn what the main tools for managing configuration are and what alternatives exist.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Cluster Ops: Options for Configuration Management | Altoros\" \/>\n<meta property=\"og:description\" content=\"Managing multiple clusters is a challenge Operators have had struggles with Kubernetes in the past. Kubernetes v1.0, which made its appearance in 2015, was rudimentary. Yet the pioneers creating on-premises virtualization (aka private cloud) and reaching out to a public cloud (especially AWS then) persisted, as Kubernetes was at least built [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-17T16:55:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-20T09:37:18+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Roger Strukhoff\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Roger Strukhoff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\",\"name\":\"Kubernetes Cluster Ops: Options for Configuration Management | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif\",\"datePublished\":\"2018-08-17T16:55:05+00:00\",\"dateModified\":\"2018-08-20T09:37:18+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Cluster Ops: Options for Configuration Management\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8\",\"name\":\"Roger Strukhoff\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg\",\"caption\":\"Roger Strukhoff\"},\"description\":\"Roger Strukhoff is Director of Research at Altoros. He also serves as Executive Director of the Tau Institute for Global ICT Research, Conference Chair of Cloud Expo and Things Expo, Co-Chair of the Big Data World Forum, and Open-Source Chair for the global DCD Converged conference series. He received his BA from Knox College, and conducted MBA studies at California State University\/East Bay. Previously in his career, he was VP of New Products at International Data Group and Director of Global Publications at TIBCO Software.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/rstrukhoff\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kubernetes Cluster Ops: Options for Configuration Management | Altoros","description":"Managing Kubernetes gets complicated as the number of clusters increases. Learn what the main tools for managing configuration are and what alternatives exist.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/","og_locale":"en_US","og_type":"article","og_title":"Kubernetes Cluster Ops: Options for Configuration Management | Altoros","og_description":"Managing multiple clusters is a challenge Operators have had struggles with Kubernetes in the past. Kubernetes v1.0, which made its appearance in 2015, was rudimentary. Yet the pioneers creating on-premises virtualization (aka private cloud) and reaching out to a public cloud (especially AWS then) persisted, as Kubernetes was at least built [...]","og_url":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/","og_site_name":"Altoros","article_published_time":"2018-08-17T16:55:05+00:00","article_modified_time":"2018-08-20T09:37:18+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif","type":"image\/gif"}],"author":"Roger Strukhoff","twitter_misc":{"Written by":"Roger Strukhoff","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/","url":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/","name":"Kubernetes Cluster Ops: Options for Configuration Management | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif","datePublished":"2018-08-17T16:55:05+00:00","dateModified":"2018-08-20T09:37:18+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2018\/08\/Cloud-Native-Kubernetes-configuration-management-Lee-Briggs.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/kubernetes-cluster-ops-options-for-configuration-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Cluster Ops: Options for Configuration Management"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/56ea20d6f280f7a442e89e5884b06fd8","name":"Roger Strukhoff","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/roger_strukhoff_user_icon-150x150.jpg","caption":"Roger Strukhoff"},"description":"Roger Strukhoff is Director of Research at Altoros. He also serves as Executive Director of the Tau Institute for Global ICT Research, Conference Chair of Cloud Expo and Things Expo, Co-Chair of the Big Data World Forum, and Open-Source Chair for the global DCD Converged conference series. He received his BA from Knox College, and conducted MBA studies at California State University\/East Bay. Previously in his career, he was VP of New Products at International Data Group and Director of Global Publications at TIBCO Software.","url":"https:\/\/www.altoros.com\/blog\/author\/rstrukhoff\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/35571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=35571"}],"version-history":[{"count":58,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/35571\/revisions"}],"predecessor-version":[{"id":35903,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/35571\/revisions\/35903"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/35604"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=35571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=35571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=35571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}