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":"a325bffe8fd60aee23501b08bb3244fd56c946df"}]},{"name":".github","children":[{"name":"ISSUE_TEMPLATE","children":[{"name":"bug_report.md","path":".github/ISSUE_TEMPLATE/bug_report.md","sha":"d2e87e27c601e423865ed660ec697082470ca60f"},{"name":"feature_request.md","path":".github/ISSUE_TEMPLATE/feature_request.md","sha":"023a33099be2336476930c96e17ff1ba5dc55348"}]},{"name":"pull_request_template.md","path":".github/pull_request_template.md","sha":"6b100e40e323b5b07f40ed30616277c51c9f4b9e"}]},{"name":".gitignore","path":".gitignore","sha":"aa49f3395575a4227766fc6d65e82e78166fe98b"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","sha":"bdec4887d81a02c6a8007c88325fcc35d210ebd3"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"4b51d63f96ff546f0925b14b5f793efafe18ded3"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","sha":"471d67437b8eb56aec31298dbab3110916158c1e"},{"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":"c7a88a658f3df4c70cb2beffa2b43951e32f49f2","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":"fb6bdf38eb6b1856c466466f0d6006fe9426fa46"},{"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":"_capabilities_helpers.tpl","path":"charts/k8s-service/templates/_capabilities_helpers.tpl","sha":"e4fab2e062f04998ecdb8c5a81c3900fe129f0fe"},{"name":"_deployment_spec.tpl","path":"charts/k8s-service/templates/_deployment_spec.tpl","sha":"11510f8b46cd0d2fb77dbd41cfc03256c7320bf8"},{"name":"_helpers.tpl","path":"charts/k8s-service/templates/_helpers.tpl","sha":"84202c8f84dceea1b79fe4dc7032bd2ec44aae48"},{"name":"canarydeployment.yaml","path":"charts/k8s-service/templates/canarydeployment.yaml","sha":"e9d5c7423011b31aa524703d61bd00ba895862fe"},{"name":"customresources.yaml","path":"charts/k8s-service/templates/customresources.yaml","sha":"9a334d4d4b5274db2d719775ac7350d6dcdde86c"},{"name":"deployment.yaml","path":"charts/k8s-service/templates/deployment.yaml","sha":"5a8074e7991fe3b41b56a59fddcc82af5b20da20"},{"name":"gmc.yaml","path":"charts/k8s-service/templates/gmc.yaml","sha":"1553d50f9c2ead4ffefebb7bdfd48f0ad3863146"},{"name":"horizontalpodautoscaler.yaml","path":"charts/k8s-service/templates/horizontalpodautoscaler.yaml","sha":"bf6252e20fe1f31574772ac2550b731903764992"},{"name":"ingress.yaml","path":"charts/k8s-service/templates/ingress.yaml","sha":"10f935f72a1e3a630816d24c4112ebdbe2464954"},{"name":"pdb.yaml","path":"charts/k8s-service/templates/pdb.yaml","sha":"631e92cf0076d97fe2a453a268cb041919ed4aff"},{"name":"service.yaml","path":"charts/k8s-service/templates/service.yaml","sha":"449ca7ba42af6ad9b4c28e45d5e74b4d8304890a"},{"name":"serviceaccount.yaml","path":"charts/k8s-service/templates/serviceaccount.yaml","sha":"ba47e205c27a3b617b345fe24f87a0782be04d3e"},{"name":"servicemonitor.yaml","path":"charts/k8s-service/templates/servicemonitor.yaml","sha":"380a0a6b73e96f8d949268267364cea2ccec8b68"},{"name":"verticalpodautoscaler.yaml","path":"charts/k8s-service/templates/verticalpodautoscaler.yaml","sha":"3131d734990fdec36027187fa296c5f5f836c141"}]},{"name":"values.yaml","path":"charts/k8s-service/values.yaml","sha":"6412913ae839c7b4f4b7dc5c62b3b6f3c19fa326"}]}]},{"name":"core-concepts.md","path":"core-concepts.md","sha":"a751d960a684dced7696cbe0902034508baf017a"},{"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":"6459e3bbed2552d1abc2b835dd3004aa861dff21"},{"name":"docker","children":[{"name":"Dockerfile","path":"examples/k8s-service-config-injection/docker/Dockerfile","sha":"70d4df9e327149399ba663fa14a7881f5528d3b7"},{"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":"5de6869879ecd5d8ffe425d1d9edb583f1ab10c4"},{"name":"values.yaml","path":"examples/k8s-service-nginx/values.yaml","sha":"d10277564784070a54e33ca2b41cc24d36e181d1"}]}]},{"name":"test","children":[{"name":"README.md","path":"test/README.md","sha":"9738e21bb7fd0e28d097d4b155dc62e4b914bab2"},{"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":"custom_resources_values.yaml","path":"test/fixtures/custom_resources_values.yaml","sha":"bade8d2ff9b8ae6300dc475df981f8a40e24eb38"},{"name":"ingress_values_with_name_port.yaml","path":"test/fixtures/ingress_values_with_name_port.yaml","sha":"8ca9b7308c14bab8b244710a0db91a596f99dc8d"},{"name":"ingress_values_with_number_port.yaml","path":"test/fixtures/ingress_values_with_number_port.yaml","sha":"48b783f9be2e61fbc2161ab76e2db99f7e5eeba9"},{"name":"multiple_custom_resources_values.yaml","path":"test/fixtures/multiple_custom_resources_values.yaml","sha":"58cfc4c062da094e1940fbd15a43d7658c6a154b"},{"name":"service_monitor_values.yaml","path":"test/fixtures/service_monitor_values.yaml","sha":"821486dc5a9c1c995bc6127e846526a1c7232cde"}]},{"name":"go.mod","path":"test/go.mod","sha":"d56da3d805f927b22d521ffcc0045853273b3e8b"},{"name":"go.sum","path":"test/go.sum","sha":"a0f40acc28b44eccaf456ab1046f9b458a7c5b97"},{"name":"k8s_service_canary_deployment_template_test.go","path":"test/k8s_service_canary_deployment_template_test.go","sha":"213945c141c7113ddb01e241af3c7de2f1426fcc"},{"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":"b109da36deb6464ee580fb471ef13d6b31874eb8"},{"name":"k8s_service_config_injection_template_test.go","path":"test/k8s_service_config_injection_template_test.go","sha":"12a99c53bbfb8d155e20d24b132b00a8d7e92a89"},{"name":"k8s_service_custom_resources_example_test.go","path":"test/k8s_service_custom_resources_example_test.go","sha":"f41825266db90c4214d347140a541c2cc4653cd6"},{"name":"k8s_service_custom_resources_template_test.go","path":"test/k8s_service_custom_resources_template_test.go","sha":"7b7a297152f815e05f987f08916b9932bea92f5e"},{"name":"k8s_service_example_test_helpers.go","path":"test/k8s_service_example_test_helpers.go","sha":"ce3659825f77d95029631d4e478abe73b001a360"},{"name":"k8s_service_horizontal_pod_autoscaler_template_test.go","path":"test/k8s_service_horizontal_pod_autoscaler_template_test.go","sha":"afb60f5a8d81fce89c3de2195b373bc96ba5c638"},{"name":"k8s_service_lifecycle_hooks_template_test.go","path":"test/k8s_service_lifecycle_hooks_template_test.go","sha":"7ce4429a505e935abc74523b6d37360f1e2e63af"},{"name":"k8s_service_nginx_example_test.go","path":"test/k8s_service_nginx_example_test.go","sha":"3854999e041e9b8e8bf11399de925d3d778d4643"},{"name":"k8s_service_service_account_template_test.go","path":"test/k8s_service_service_account_template_test.go","sha":"0453b8dbd43e8470787b4f24e1f8eeb22eb78d64"},{"name":"k8s_service_service_monitor_template_test.go","path":"test/k8s_service_service_monitor_template_test.go","sha":"19c10faea8b762e494a0d81b2d9deff1b49061fc"},{"name":"k8s_service_template_render_helpers_for_test.go","path":"test/k8s_service_template_render_helpers_for_test.go","sha":"b38a4979ad8a34262a138360d9616da68e6bde0b"},{"name":"k8s_service_template_test.go","path":"test/k8s_service_template_test.go","sha":"7471460e2f9809c3c1e1fb2893456a8936f03461"},{"name":"k8s_service_vertical_pod_autoscaler_template_test.go","path":"test/k8s_service_vertical_pod_autoscaler_template_test.go","sha":"1fdfb97b2ea66d482027f54cbf076361e3071f8a"},{"name":"k8s_service_volume_secret_store_csi_template_test.go","path":"test/k8s_service_volume_secret_store_csi_template_test.go","sha":"cbbac7cbf8dccbae670b74449066f65e019c6f8d"},{"name":"k8s_service_volume_template_test.go","path":"test/k8s_service_volume_template_test.go","sha":"9ba6fee7c4235c540de05da1e7a783ec635da7ba"},{"name":"k8s_service_volume_test.go","path":"test/k8s_service_volume_test.go","sha":"f8efd6d84c1343c41a75626e6a33986d48d00530"},{"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> (hosted at <a href=\"https://helmcharts.gruntwork.io\" target=\"_blank\">helmcharts.gruntwork.io</a>, implemented via <a href=\"/repos/helmcharts\">gruntwork-io/helmcharts</a>).</p>\n</div>\n<div class=\"imageblock\">\n<div class=\"content\">\n<img src=\"/repos/images/v0.2.28/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</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<div class=\"ulist\">\n<ul>\n<li>\n<p>Secrets as Environment/Volumes/Secret Store CSI</p>\n</li>\n</ul>\n</div>\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.2.28/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.2.28/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<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md##how-to-use-this-chart\">How to use this chart?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md#what-resources-does-this-helm-chart-deploy\">What resources does this Helm Chart deploy?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md#what-is-a-sidecar-container\">What is a sidecar container?</a></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.2.28/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.2.28/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.2.28/helm-kubernetes-services/test\">test</a>: Automated tests for the modules and examples.</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.2.28/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/terraform-aws-service-catalog/examples/for-production/infrastructure-live/prod/us-west-2/prod/services/k8s-sample-app-frontend/terragrunt.hcl\">k8s-service in the example Reference Architecture</a>: Production-ready sample code from the Reference Architecture example.</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.2.28/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-deploy-additional-services-not-managed-by-the-chart\">How do I deploy additional services not managed by the chart?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.2.28/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.2.28/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.2.28/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.2.28/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.2.28/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<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md#why-does-the-pod-have-a-prestop-hook-with-a-shutdown-delay\">Why does the Pod have a preStop hook with a Shutdown Delay?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-use-a-private-registry\">How do I use a private registry?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-verify-my-canary-deployment\">How do I verify my canary deployment?</a></p>\n</li>\n<li>\n<p><a href=\"/repos/v0.2.28/helm-kubernetes-services/charts/k8s-service/README.md#how-do-i-roll-back-a-canary-deployment\">How do I roll back a canary deployment?</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.2.28/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.2.28/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.2.28/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.2.28","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."}