Top 5 Kubernetes Best Practices
by Marisa Vesel, on Aug 30, 2019 1:30:00 PM
Companies increasingly adopt Kubernetes as a deployment feature in order to bridge the gap between Dev and Ops in CI/CD pipelines. However, Kubernetes is a complicated technology that must be properly supported and configured to have maximum positive effect. If it isn’t, there is a risk of unnecessary problems and/or missed opportunities.
Below, we’ve laid out five easy-to-implement best practices companies can use to make sure they get the most out of Kubernetes.
#1: Have CI/CD Pipelines
For Kubernetes-based applications, it is important to enable a CI/CD pipeline in order to improve the quality, security, and speed of build releases.
Continuous Integration and Continuous Delivery pipelines serve as an essential part of the software development lifecycle. There are several great tools to accomplish CI/CD currently available on the market. When choosing CI/CD tools, it is important to ensure these tools can integrate well with Kubernetes in order to improve the productivity of your teams and increase the quality of releases.
#2: Cluster Provisioning + Load Balancing
In order to create production-grade Kubernetes infrastructure, Kubernetes clusters must be created that can span across availability zones in your cloud environment. The provisioning of these usually involves other tools, such as Ansible.
Load balancing is the distribution of workloads across multiple computing resources. Once Kubernetes have been set up, load balancers route traffic to the server. It is important to note that load balancers are not a native capability in a Kubernetes project. In order to achieve load balancing, the project must be integrated with another product to provide this feature.
#3: Access Control and Permissions
In order to keep your processes secure, there are a number of security measures that can be taken to ensure governance and compliance are maintained. These features are a sign of maturity in Kubernetes. There are several tips for ensuring security:
- Use Namespaces: Creating namespaces will help create isolation between components and make applying security controls easier.
- Enable Role-Based Access Control: Access can be granted based on the security needs of the various namespaces. Access can also be given on a case-by-case basis, ensuring extra security.
- Enable Audit Logging: Enabling audit logging will help increase visibility and make an audit easier by having a clear record of changes and permissions.
#4: Resource Management
Kubernetes has the ability to manage resources on many different levels of abstraction. Managing resources helps users limit consumption in individual containers. This can be achieved through resource requests and limits.
Resource requests and limits are able to be set for CPU, memory, and ephemeral storage resources. Setting these requests and limits helps prevent bottlenecks due to a lack of resources.
There are several best practices for resource management with Kubernetes:
- Organizing resource configurations
- Managing resources can be made simple by grouping them together in the same file
- Using labels effectively
- Multiple labels can be used to separate sets of resources from one another to increase organization
- Bulk operations in kubectl
- Resource names can be extracted in bulk from configuration files in order to perform a variety of operations; including deleting the same resources created
#5: Use Helm Charts
Helm is a package manager created specifically for Kubernetes. Specifically, Helm is a chart manager with charts defined as packages of pre-configured Kubernetes resources. Charts can be created, versioned, shared, and published very easily. Charts also provide repeatable application installations and serve as a single point of authority.
With Helm, users can make configurable releases and help you upgrade, define, install, and inspect complex Kubernetes applications. Inedo’s ProGet tool is a DevOps tool used to package applications and components. A ProGet package for a Helm feed is known as a chart, which can be used to describe even the most complex application and provide a repeatable, versioned approach to Kubernetes deployments.
Make the Most of Kubernetes
Kubernetes is growing in popularity and is widely used among the DevOps community. Inedo DevOps tools integrate with Kubernetes in order to maximize developer time, minimize release risk, and empower stakeholders to bring their vision to life faster. All with the people and technology you have right now. To get help streamlining your CI/CD processes, contact firstname.lastname@example.org.