If you need help with this repo or anything else related to infrastructure or DevOps, Gruntwork offers Commercial Support via Slack, email, and phone/video. If you’re already a Gruntwork customer, hop on Slack and ask away! If not, subscribe now. If you’re not sure, feel free to email us at support@gruntwork.io.
Contributions to this repo are very welcome and appreciated! If you find a bug or want to add a new feature or even contribute an entirely new module, we are very happy to accept pull requests, provide feedback, and run your changes through our automated test suite.
{"treedata":{"name":"root","toggled":true,"children":[{"name":".circleci","children":[{"name":"config.yml","path":".circleci/config.yml","sha":"a0f85dbf4f51145592e9e242064611a2eb4694c2"}]},{"name":".gitignore","path":".gitignore","sha":"aa63ddea7b3def45c223772ac5f5a0b7c00c2c0c"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","sha":"51b31c7d36c1be61adaa498f28edba3f5957ae80"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"89db2c0afb6268a0fa92d8e841018cef4bc653cb"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","sha":"89dc64290dc533f94420014acaf166a167b1d6a2"},{"name":"GRUNTWORK_PHILOSOPHY.md","path":"GRUNTWORK_PHILOSOPHY.md","sha":"205b95f262d882b7385b67e2b997b9faf1bf3c37"},{"name":"LICENSE","path":"LICENSE","sha":"276620ad6ffbc9954fd6633d167b0501155441d4"},{"name":"NOTICE","path":"NOTICE","sha":"01df697d1747e433ef21621ddcf3c574290a0de3"},{"name":"README.adoc","path":"README.adoc","sha":"f5229103914933786ab64b823e773ad3634f6bc4","toggled":true},{"name":"_docs","children":[{"name":"k8s-service-architecture.png","path":"_docs/k8s-service-architecture.png","sha":"08712e67b1fc16d05877b23f1badad470c325db5"},{"name":"kubernetes-service.png","path":"_docs/kubernetes-service.png","sha":"609cc2795de0c1926bfe1875c8818659ffa770fc"}]},{"name":"charts","children":[{"name":"k8s-service","children":[{"name":".helmignore","path":"charts/k8s-service/.helmignore","sha":"f0c13194444163d1cba5c67d9e79231a62bc8f44"},{"name":"Chart.yaml","path":"charts/k8s-service/Chart.yaml","sha":"b7df355e4db5b10d7c2b532a3c1b4c25d681f0f0"},{"name":"README.md","path":"charts/k8s-service/README.md","sha":"e2e39e041ed4807786835e0635c68ec7e2db8846"},{"name":"linter_values.yaml","path":"charts/k8s-service/linter_values.yaml","sha":"f800b2d7b11aed8585d1fc607b44749df72cf209"},{"name":"templates","children":[{"name":"NOTES.txt","path":"charts/k8s-service/templates/NOTES.txt","sha":"dc7a36461c8eb2542f8d5aed472edda0b99d941c"},{"name":"_helpers.tpl","path":"charts/k8s-service/templates/_helpers.tpl","sha":"9d8f094e9937c75c6786a74e84e26b517259df54"},{"name":"canarydeployment.yaml","path":"charts/k8s-service/templates/canarydeployment.yaml","sha":"287f38512fa67e1475824a2e43e318538f8656bb"},{"name":"deployment.yaml","path":"charts/k8s-service/templates/deployment.yaml","sha":"5a5aec6d65f6f2986ef50fc5bcf0361fed2e0351"},{"name":"gmc.yaml","path":"charts/k8s-service/templates/gmc.yaml","sha":"1553d50f9c2ead4ffefebb7bdfd48f0ad3863146"},{"name":"horizontalpodautoscaler.yaml","path":"charts/k8s-service/templates/horizontalpodautoscaler.yaml","sha":"5b24660e86603a0a05f53bc66fd1e55bdf63e38a"},{"name":"ingress.yaml","path":"charts/k8s-service/templates/ingress.yaml","sha":"aa7d30f20edd838fa59209dd3e26b58b77ed6ec8"},{"name":"pdb.yaml","path":"charts/k8s-service/templates/pdb.yaml","sha":"7e8ce566adb00278e068d04aa9d185764de9aaf3"},{"name":"service.yaml","path":"charts/k8s-service/templates/service.yaml","sha":"45eb73e86193e62361e76529dec3ffd4a4c9214b"},{"name":"serviceaccount.yaml","path":"charts/k8s-service/templates/serviceaccount.yaml","sha":"e45827d044c92d0b9a0734952b41188b90f8b7fe"},{"name":"servicemonitor.yaml","path":"charts/k8s-service/templates/servicemonitor.yaml","sha":"380a0a6b73e96f8d949268267364cea2ccec8b68"}]},{"name":"values.yaml","path":"charts/k8s-service/values.yaml","sha":"6bfdba4102f936ec0c2a8438dd72062164225c1f"}]}]},{"name":"core-concepts.md","path":"core-concepts.md","sha":"a4c097870cba4887e45bd16e9ca463cf687ef562"},{"name":"examples","children":[{"name":"README.md","path":"examples/README.md","sha":"c6e785756d22d0762a9a23b241bdec54e29cb461"},{"name":"k8s-service-config-injection","children":[{"name":"README.md","path":"examples/k8s-service-config-injection/README.md","sha":"a24e3149a05cff06c879a764d6797ba22818a6d9"},{"name":"docker","children":[{"name":"Dockerfile","path":"examples/k8s-service-config-injection/docker/Dockerfile","sha":"329a2a784505504577de52d9b8d49b2d8efacaa3"},{"name":"app.rb","path":"examples/k8s-service-config-injection/docker/app.rb","sha":"14d99ac134c1774e7f10c933fbeb5db159b0bc1d"}]},{"name":"extensions","children":[{"name":"config_map_values.yaml","path":"examples/k8s-service-config-injection/extensions/config_map_values.yaml","sha":"33f21198dc33e4291a714e9bbaf2a1aa4879b897"},{"name":"secret_values.yaml","path":"examples/k8s-service-config-injection/extensions/secret_values.yaml","sha":"b0c149bad555489a8b916bef0ca5990ccef493e8"}]},{"name":"kubernetes","children":[{"name":"config-map.yaml","path":"examples/k8s-service-config-injection/kubernetes/config-map.yaml","sha":"371128a6b94f06c31176d4943ae2739f29f83e0a"}]},{"name":"values.yaml","path":"examples/k8s-service-config-injection/values.yaml","sha":"ce11682902d91b2c7ed04443768440439ad8fc1f"}]},{"name":"k8s-service-nginx","children":[{"name":"README.md","path":"examples/k8s-service-nginx/README.md","sha":"9d48bcf8dd2d34443bf99f78f2cdf584eab37f9c"},{"name":"values.yaml","path":"examples/k8s-service-nginx/values.yaml","sha":"d10277564784070a54e33ca2b41cc24d36e181d1"}]}]},{"name":"test","children":[{"name":"README.md","path":"test/README.md","sha":"0c440abc72116795eb23151244469df68ae8ebcb"},{"name":"fixtures","children":[{"name":"canary_and_main_deployment_values.yaml","path":"test/fixtures/canary_and_main_deployment_values.yaml","sha":"8c1c625f696ce24e6cb803c16b2a6dce1016d163"},{"name":"canary_deployment_values.yaml","path":"test/fixtures/canary_deployment_values.yaml","sha":"4b1cc942457eb880470782b3b953e65622d4c67a"},{"name":"service_monitor_values.yaml","path":"test/fixtures/service_monitor_values.yaml","sha":"821486dc5a9c1c995bc6127e846526a1c7232cde"}]},{"name":"go.mod","path":"test/go.mod","sha":"acfe6e037ea3f5b4a57b215d224be0f49a1206e2"},{"name":"go.sum","path":"test/go.sum","sha":"e011aba4ada3c431d3a1829fd5cd143e57c3660e"},{"name":"k8s_service_canary_deployment_template_test.go","path":"test/k8s_service_canary_deployment_template_test.go","sha":"2df73a28baa3e6383526724d35a5d1ee0052571e"},{"name":"k8s_service_canary_deployment_test.go","path":"test/k8s_service_canary_deployment_test.go","sha":"883fdc3f6887607641efb18aa07ad9d680497e69"},{"name":"k8s_service_config_injection_example_test.go","path":"test/k8s_service_config_injection_example_test.go","sha":"fbc2defc7d4623035cfce134b8213b49487a02a0"},{"name":"k8s_service_config_injection_template_test.go","path":"test/k8s_service_config_injection_template_test.go","sha":"1c956087ba5b5e3546be9dc8c2fd42f81e6cb857"},{"name":"k8s_service_example_test_helpers.go","path":"test/k8s_service_example_test_helpers.go","sha":"3d7ef7d97328772619a1dc655e6bcfbb6de8a3d6"},{"name":"k8s_service_horizontal_pod_autoscaler_template_test.go","path":"test/k8s_service_horizontal_pod_autoscaler_template_test.go","sha":"f17c9ec0f2a6340edd10fa0eb70a078ad6e18597"},{"name":"k8s_service_nginx_example_test.go","path":"test/k8s_service_nginx_example_test.go","sha":"b77d7dd26c07801928108a52be61b186691c56f4"},{"name":"k8s_service_service_account_template_test.go","path":"test/k8s_service_service_account_template_test.go","sha":"8f04b134832358cb5f84e557ac9fb5b87202c3ba"},{"name":"k8s_service_service_monitor_template_test.go","path":"test/k8s_service_service_monitor_template_test.go","sha":"6ce25d576369224737ef4f563fdebfc8a946e0f1"},{"name":"k8s_service_template_render_helpers_for_test.go","path":"test/k8s_service_template_render_helpers_for_test.go","sha":"0036587e3ea9dacbe7e3254935b83a9387a93b65"},{"name":"k8s_service_template_test.go","path":"test/k8s_service_template_test.go","sha":"51378bb6fd830db4b9ec44b398b01caa0bb5b892"},{"name":"sample_app_test_helpers.go","path":"test/sample_app_test_helpers.go","sha":"5e2e44b4c0dcf5f836e7f81249aada38847792ac"}]}]},"detailsContent":"<div id=\"preamble\">\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p><span class=\"image\"><a class=\"image\" href=\"https://gruntwork.io/?ref=repo_k8s_service\" target=\"_blank\"><img src=\"https://img.shields.io/badge/maintained%20by-gruntwork.io-%235849a6.svg\" alt=\"maintained%20by gruntwork.io %235849a6\" class=\"preview__body--diagram\"></a></span></p>\n</div>\n<div class=\"paragraph\">\n<p>This repo contains Helm Charts for deploying your applications on Kubernetes clusters with\n<a href=\"https://helm.sh\" target=\"_blank\">Helm</a>.</p>\n</div>\n<div class=\"imageblock\">\n<div class=\"content\">\n<img src=\"/repos/images/v0.1.0/helm-kubernetes-services/_docs/k8s-service-architecture.png?raw=true\" alt=\"K8S Service architecture\" class=\"preview__body--diagram\">\n</div>\n</div>\n<div id=\"toc\" class=\"toc\">\n<div id=\"toctitle\" class=\"title\"></div>\n<ul class=\"sectlevel1\">\n<li><a href=\"#_features\">Features</a></li>\n<li><a href=\"#_learn\">Learn</a>\n<ul class=\"sectlevel2\">\n<li><a href=\"#_core_concepts\">Core concepts</a></li>\n<li><a href=\"#_repo_organization\">Repo organization</a></li>\n<li><a href=\"#_gruntwork_analysis\">Gruntwork analysis</a></li>\n</ul>\n</li>\n<li><a href=\"#_deploy\">Deploy</a>\n<ul class=\"sectlevel2\">\n<li><a href=\"#_non_production_deployment_quick_start_for_learning\">Non-production deployment (quick start for learning)</a></li>\n<li><a href=\"#_production_deployment\">Production deployment</a></li>\n</ul>\n</li>\n<li><a href=\"#_manage\">Manage</a>\n<ul class=\"sectlevel2\">\n<li><a href=\"#_day_to_day_operations\">Day-to-day operations</a></li>\n<li><a href=\"#_major_changes\">Major changes</a></li>\n</ul>\n</li>\n<li><a href=\"#_support\">Support</a></li>\n<li><a href=\"#_contributions\">Contributions</a></li>\n<li><a href=\"#_license\">License</a></li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_features\"><a class=\"anchor\" href=\"#_features\"></a><a class=\"link\" href=\"#_features\">Features</a></h2>\n<div class=\"sectionbody\">\n<div class=\"ulist\">\n<ul>\n<li>\n<p>Deploy your application containers on to Kubernetes</p>\n</li>\n<li>\n<p>Zero-downtime rolling deployments</p>\n</li>\n<li>\n<p>Auto scaling and auto healing</p>\n</li>\n<li>\n<p>Configuration management and Secrets management</p>\n</li>\n<li>\n<p>Ingress and Service endpoints</p>\n</li>\n</ul>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_learn\"><a class=\"anchor\" href=\"#_learn\"></a><a class=\"link\" href=\"#_learn\">Learn</a></h2>\n<div class=\"sectionbody\">\n<div class=\"admonitionblock note\">\n<table>\n<tr>\n<td class=\"icon\">\n<div class=\"title\">Note</div>\n</td>\n<td class=\"content\">\nThis repo is a part of <a href=\"https://gruntwork.io/infrastructure-as-code-library/\" target=\"_blank\">the Gruntwork Infrastructure as Code\nLibrary</a>, a collection of reusable, battle-tested, production ready infrastructure code. If you’ve never used the Infrastructure as Code Library before, make sure to read <a href=\"https://gruntwork.io/guides/foundations/how-to-use-gruntwork-infrastructure-as-code-library/\" target=\"_blank\">How to use the Gruntwork Infrastructure as Code Library</a>!\n</td>\n</tr>\n</table>\n</div>\n<div class=\"sect2\">\n<h3 id=\"_core_concepts\"><a class=\"anchor\" href=\"#_core_concepts\"></a><a class=\"link\" href=\"#_core_concepts\">Core concepts</a></h3>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"https://gruntwork.io/guides/kubernetes/how-to-deploy-production-grade-kubernetes-cluster-aws/#core_concepts\" target=\"_blank\">Kubernetes core concepts</a>: learn about Kubernetes architecture (control plane, worker nodes), access control (authentication, authorization), resources (pods, controllers, services, config, secrets), and more.</p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/core-concepts.md#how-do-you-run-applications-on-kubernetes\">How do you run applications on Kubernetes?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/core-concepts.md#what-is-helm\">What is Helm?</a></p>\n</li>\n<li>\n<p><em><a href=\"https://www.manning.com/books/kubernetes-in-action\" target=\"_blank\">Kubernetes in Action</a></em>: the best book we’ve found for getting up and running with Kubernetes.</p>\n</li>\n</ul>\n</div>\n</div>\n<div class=\"sect2\">\n<h3 id=\"_repo_organization\"><a class=\"anchor\" href=\"#_repo_organization\"></a><a class=\"link\" href=\"#_repo_organization\">Repo organization</a></h3>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts\">charts</a>: the main implementation code for this repo, broken down into multiple standalone, orthogonal Helm charts.</p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/examples\">examples</a>: This folder contains working examples of how to use the submodules.</p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/test\">test</a>: Automated tests for the modules and examples.</p>\n</li>\n</ul>\n</div>\n</div>\n<div class=\"sect2\">\n<h3 id=\"_gruntwork_analysis\"><a class=\"anchor\" href=\"#_gruntwork_analysis\"></a><a class=\"link\" href=\"#_gruntwork_analysis\">Gruntwork analysis</a></h3>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/_docs/faq.md#why-kubernetes\">Why Kubernetes</a>: Learn why you may want to use Kubernetes in the first place.</p>\n</li>\n</ul>\n</div>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_deploy\"><a class=\"anchor\" href=\"#_deploy\"></a><a class=\"link\" href=\"#_deploy\">Deploy</a></h2>\n<div class=\"sectionbody\">\n<div class=\"sect2\">\n<h3 id=\"_non_production_deployment_quick_start_for_learning\"><a class=\"anchor\" href=\"#_non_production_deployment_quick_start_for_learning\"></a><a class=\"link\" href=\"#_non_production_deployment_quick_start_for_learning\">Non-production deployment (quick start for learning)</a></h3>\n<div class=\"paragraph\">\n<p>If you just want to try this repo out for experimenting and learning, check out the following resources:</p>\n</div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/examples\">examples folder</a>: The <code>examples</code> folder contains sample code optimized for learning, experimenting, and testing (but not production usage).</p>\n</li>\n</ul>\n</div>\n</div>\n<div class=\"sect2\">\n<h3 id=\"_production_deployment\"><a class=\"anchor\" href=\"#_production_deployment\"></a><a class=\"link\" href=\"#_production_deployment\">Production deployment</a></h3>\n<div class=\"paragraph\">\n<p>If you want to deploy this repo in production, check out the following resources:</p>\n</div>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><strong>Gruntwork Subscriber Only</strong> <a href=\"/repos/infrastructure-modules-multi-account-acme/services/k8s-service\">k8s-service in the Acme example Reference Architecture</a>: Production-ready sample code from the Acme Reference Architecture examples.</p>\n</li>\n</ul>\n</div>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_manage\"><a class=\"anchor\" href=\"#_manage\"></a><a class=\"link\" href=\"#_manage\">Manage</a></h2>\n<div class=\"sectionbody\">\n<div class=\"sect2\">\n<h3 id=\"_day_to_day_operations\"><a class=\"anchor\" href=\"#_day_to_day_operations\"></a><a class=\"link\" href=\"#_day_to_day_operations\">Day-to-day operations</a></h3>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-expose-my-application-internally-to-the-cluster\">How do I expose my application internally to the cluster?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-expose-my-application-externally-outside-of-the-cluster\">How do I expose my application externally, outside of the cluster?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-deploy-a-worker-service\">How do I deploy a worker service?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-check-the-status-of-the-rollout\">How do I check the status of the rollout?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-set-and-share-configurations-with-the-application\">How do I set and share configurations with the application?</a></p>\n</li>\n</ul>\n</div>\n</div>\n<div class=\"sect2\">\n<h3 id=\"_major_changes\"><a class=\"anchor\" href=\"#_major_changes\"></a><a class=\"link\" href=\"#_major_changes\">Major changes</a></h3>\n<div class=\"ulist\">\n<ul>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-you-update-the-application-to-a-new-version\">How do you update the application to a new version?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.1.0/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-ensure-a-minimum-number-of-pods-are-available-across-node-maintenance\">How do I ensure a minimum number of Pods are available across node maintenance?</a></p>\n</li>\n</ul>\n</div>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_support\"><a class=\"anchor\" href=\"#_support\"></a><a class=\"link\" href=\"#_support\">Support</a></h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>If you need help with this repo or anything else related to infrastructure or DevOps, Gruntwork offers <a href=\"https://gruntwork.io/support/\" target=\"_blank\">Commercial Support</a> via Slack, email, and phone/video. If you’re already a Gruntwork customer, hop on Slack and ask away! If not, <a href=\"https://www.gruntwork.io/pricing/\" target=\"_blank\">subscribe now</a>. If you’re not sure, feel free to email us at <a href=\"mailto:support@gruntwork.io\" target=\"_blank\">support@gruntwork.io</a>.</p>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_contributions\"><a class=\"anchor\" href=\"#_contributions\"></a><a class=\"link\" href=\"#_contributions\">Contributions</a></h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Contributions to this repo are very welcome and appreciated! If you find a bug or want to add a new feature or even contribute an entirely new module, we are very happy to accept pull requests, provide feedback, and run your changes through our automated test suite.</p>\n</div>\n<div class=\"paragraph\">\n<p>Please see <a href=\"https://gruntwork.io/guides/foundations/how-to-use-gruntwork-infrastructure-as-code-library/#contributing-to-the-gruntwork-infrastructure-as-code-library\" target=\"_blank\">Contributing to the Gruntwork Infrastructure as Code Library</a> for instructions.</p>\n</div>\n</div>\n</div>\n<div class=\"sect1\">\n<h2 id=\"_license\"><a class=\"anchor\" href=\"#_license\"></a><a class=\"link\" href=\"#_license\">License</a></h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>Please see <a href=\"/repos/v0.1.0/helm-kubernetes-services/LICENSE\">LICENSE</a> for details on how the code in this repo is licensed.</p>\n</div>\n</div>\n</div>","repoName":"helm-kubernetes-services","repoRef":"v0.1.0","serviceDescriptor":{"serviceName":"Kubernetes Service","serviceRepoName":"helm-kubernetes-services","serviceRepoOrg":"gruntwork-io","cloudProviders":["aws","gcp"],"description":"Deploy a Kubernetes service with zero-downtime, rolling deployment, RBAC, auto scaling, secrets management, and more.","imageUrl":"kubernetes.png","licenseType":"open-source","technologies":["Terraform","Bash","Helm"],"compliance":[],"tags":[""]},"serviceCategoryName":"Docker services","fileName":"README.adoc","filePath":"","title":"Repo Browser: Kubernetes Service","description":"Browse the repos in the Gruntwork Infrastructure as Code Library."}