VOOZH about

URL: https://thenewstack.io/5-tips-to-deploy-production-ready-applications-in-kubernetes/

⇱ 5 Tips to Deploy Production-Ready Applications in Kubernetes - The New Stack


TNS
SUBSCRIBE
Join our community of software engineering leaders and aspirational developers. Always stay in-the-know by getting the most important news and exclusive content delivered fresh to your inbox to learn more about at-scale software development.
REQUIRED
It seems that you've previously unsubscribed from our newsletter in the past. Click the button below to open the re-subscribe form in a new tab. When you're done, simply close that tab and continue with this form to complete your subscription.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.
Welcome and thank you for joining The New Stack community!
Please answer a few simple questions to help us deliver the news and resources you are interested in.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Great to meet you!
Tell us a bit about your job so we can cover the topics you find most relevant.
REQUIRED
REQUIRED
REQUIRED
REQUIRED
REQUIRED
Welcome!

We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.

What’s next?

Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.

Follow TNS on your favorite social media networks.

Become a TNS follower on LinkedIn.

Check out the latest featured and trending stories while you wait for your first TNS newsletter.

PREV
1 of 2
NEXT
VOXPOP
As a JavaScript developer, what non-React tools do you use most often?
Angular
0%
Astro
0%
Svelte
0%
Vue.js
0%
Other
0%
I only use React
0%
I don't use JavaScript
0%
Thanks for your opinion! Subscribe below to get the final results, published exclusively in our TNS Update newsletter:
NEW! Try Stackie AI
From clobbered drafts to real-time sync
Apr 14th 2026 10:00am, by David Moore
TypeScript 6.0 RC arrives as a bridge to a faster future
Mar 14th 2026 9:00am, by Darryl K. Taft
Mastra empowers web devs to build AI agents in TypeScript
Jan 28th 2026 11:00am, by Loraine Lawson
2019-10-28 08:55:20
5 Tips to Deploy Production-Ready Applications in Kubernetes
contributed,sponsor-cncf,sponsored,sponsored-post-contributed,
Kubernetes / Software Development

5 Tips to Deploy Production-Ready Applications in Kubernetes

5 tips for running an application on Kubernetes.
Oct 28th, 2019 8:55am by Javier Salmeron
👁 Featued image for: 5 Tips to Deploy Production-Ready Applications in Kubernetes
Feature image via Pixabay.
CNCF sponsored this post.
Javier Salmeron
Javier has a PhD in computer engineering and has worked for several years in both researching and teaching the application of cloud-native technologies to high-performance computing. He currently works as an engineer at Bitnami, now VMware, where he packages applications ready to be deployed on a wide variety of platforms: bare metal servers, virtual machines, cloud instances, containers and Kubernetes clusters. One of his latest contributions is Kubernetes Sandbox, an all-in-one single VM cluster available in cloud providers like Google Cloud, AWS and Oracle Cloud.

What does the expression “production-ready” mean? This is the first question you should answer if you want the minimum number of problems with your production workloads.

The answer to this question can be discussed from multiple perspectives: security, maintainability, testing, configurability, stability, upgradability, documentation, etc. There are even some who define production-ready solutions as “production code that is in production.”

Personally, I believe that a production-ready application should address all the elements mentioned above.

When deploying Kubernetes workloads in production, Kubernetes users are choosing the open source project Helm as the de facto option. I can easily understand why: Helm brings several benefits that match the approaches suggested by the experts. It extends the adaptability and customizability of your deployments, eases the testing process, allows history and rollback management and so on.

For more than two years, I have contributed to the project by extending the available catalog with a wide variety of infrastructure applications, as well as reviewing pull requests, adding features and attending to support cases. Based on my experience, there are five elements that developers should pay attention to if they want to create charts that are ready for deployment in production environments.

1) Ensure Security by Limiting the Container Operations: Run Non-Root Containers

To deploy containerized applications, you must limit the number of allowed operations to the minimum required. To ensure this, launch containers with a random user different from root. These are known as non-root containers. This is a mandatory requirement in some Kubernetes-based platforms, such as Red Hat’s OpenShift. Approximately half of the charts in the stable repository already use non-root containers and that number is increasing. If the application allows it, you can go even further and use full read-only filesystems or “scratch” containers (which do not have any underlying base OS).

KubeCon + CloudNativeCon conferences gather adopters and technologists to further the education and advancement of cloud native computing. The vendor-neutral events feature domain experts and key maintainers behind popular projects like Kubernetes, Prometheus, Envoy, CoreDNS, containerd and more.
Learn More
The latest from KubeCon + CloudNativeCon

2) Limit Access to the Cluster: Implement Role-Based Access Control Policies (RBAC)

The core of a Kubernetes cluster is its API server (kube-apiserver). By accessing it, you can obtain details about the current state of the cluster and the workloads deployed on it. Developers are adopting this approach: currently, there are many Kubernetes-aware applications that access the API server for operations like self-discovery. However, having containers with full access to the Kubernetes API server could compromise the cluster. To mitigate this risk, you must ensure that the processes inside the pods can only access the minimum necessary dataset.

That is where Role-Based Access Control Policies come into play. For example, if you deploy an infrastructure application that uses kube-apiserver for self-discovery in the namespace “test”, you may only need to allow “get” and “list” operations for pod objects inside that specific namespace. In the past, users were granting cluster-admin privileges (i.e. privileges to perform all operations within the cluster) to applications like the Helm client Tiller. This practice leads to catastrophe in production.

Don’t forget to make sure that the applications you deploy using charts have the smallest possible set of RBAC privileges.

3) Implement a Proper Testing Process, Especially with Upgrades

Updating a label in a StatefulSet could lead to breaking the helm upgrade command. To deal with this situation, including upgrade tests in your pipeline is a priority task. Obviously, you cannot assume that upgrades between major versions will work without manual intervention that is what major version bumps are for. However, ensuring that upgrades will work between minor versions is doable.

The addition of features to a chart, which are disabled by default, is another common issue. As these are disabled by default, it is probable that a normal helm install test will not detect any issue.

One example of this situation is ingress rules. These parameters are disabled by default, so you can easily forget about them in your daily testing. I can foresee how several charts in the stable repository will break when the API Group extensions/v1beta — which most Ingress API Objects use — gets deprecated in Kubernetes 1.20This potential issue can be prevented by increasing the test coverage of your charts with multiple values.yaml files. To aid with this, solutions like kubeval can come in handy.

4) Avoid Rolling Tags at Any Cost

You’re probably already familiar with container images and chances are that you have executed, at least once, a command like docker pull bitnami/redis:latest. This “latest” is an example of a rolling tag (i.e. a tag that will point to different images over time).

Imagine the following scenario: you want to deploy the “bitnami/redis” chart with the latest version of Redis. To do so, you use the “latest” tag so that you know you will have Redis 5.0.5 running in your cluster. Everything works seamlessly when deploying the chart. Now further imagine if, one day in the future, you need to scale your Redis cluster with new pods, which will download the “bitnami/redis:latest” image. And what if now the latest Redis is, for example, 5.0.8? You will have pods of the same Redis cluster running different versions of Redis. To make matters worse, what if Redis 6.0.0 is released? You are sure to end up with a broken Redis cluster.

If you want your deployments to be maintainable and under control, make sure that your charts use immutable images (for example: “bitnami/redis:5.0.5-debian-9-r10″). With this approach, every time you deploy or scale, you know what image you are using. Plus, you will have the guarantee that the deployed image has been tested with that specific version of the chart, something you cannot guarantee when using rolling tags.

5) Monitor Your Deployments

This tip is simple to follow: If you want your workloads to be production-ready you need to have them monitored. Most production-ready charts include support for metrics exporters, so your application status can be observed by tools like Prometheus and Wavefront or suites like BKPR Also, it is important to ensure that your workloads also integrate with logging stacks like ELK for improving the observability of your containerized applications. The advantages are uncountable: early failure prevention, auditing, trend detection, performance analysis or debugging, among others.

Kubernetes in Production Is a Reality

By following the tips above, you will cover all the basics for Kubernetes production readiness. But there are many more areas that you should explore, such as stability, performance, network, auto-scaling and more. Check out the resources listed below to move your applications forward to production deployments. And, if you want to join me in the search for the true “production-ready” definition, don’t hesitate to contact me.

To learn more about containerized infrastructure and cloud native technologies, consider coming to KubeCon + CloudNativeCon NA, November 18-21 in San Diego.

Useful resources

∙       Official Helm chart good practice guidelines

∙       Helm best practices by CodeFresh

∙       Bitnami Kubernetes Production Runtime

∙       Bitnami Helm charts library in Github

∙       Kubeapps Hub

The Cloud Native Computing Foundation (CNCF) hosts critical components of the global technology infrastructure including Kubernetes, OpenTelemetry, and Argo. CNCF is the neutral home for cloud native collaboration, bringing together the industry’s top developers, end users, and vendors.
Learn More
The latest from CNCF
TRENDING STORIES
Javier has a PhD in computer engineering and has worked for several years in both researching and teaching the application of cloud-native technologies to high-performance computing. He currently works as an engineer at Bitnami, now VMware, where he packages applications...
Read more from Javier Salmeron
CNCF sponsored this post.
SHARE THIS STORY
TRENDING STORIES
TNS owner Insight Partners is an investor in: Pragma, Root.
SHARE THIS STORY
TRENDING STORIES
TNS DAILY NEWSLETTER Receive a free roundup of the most recent TNS articles in your inbox each day.
The New Stack does not sell your information or share it with unaffiliated third parties. By continuing, you agree to our Terms of Use and Privacy Policy.