Kubernetes Best Practices
We got our app running. But definitely thats not the end of road.
- Make sure to use the multi-stage build for your Docker images as much as possible
- Log and monitor everything you care about and remember: If its not monitored it doesn’t exist
- Leverage the Build cache and use the builder pattern to decrease your build time through faster build process
- Always use small base image keeping the number of layers minimised so that you build small images with less attack surface
- Always tag your images and don’t use the latest tag
- Make sure to always scan all your Docker Images and Containers for potential threats
- Never use any random Docker Image(s) and always use authorised images in your environment
- Categorise and accordingly split up your cluster through Namespace
- Use Network Policies to implement proper network segmentation and Role Based Access Control(RBAC) to create administrative boundaries between resources for proper segregation and control
- Never use Passwords, or API tokens in plain text or as environment variables, use secrets instead
- Use non-root user inside container with proper host to container, UID and GID mapping
- Make sure to always use Readiness & Liveness probes
- Use the ‘record’ option whenever performing updates for easier rollbacks
- For the purpose of bootstrapping don’t use sidecar, Use init container instead
- Ensure that the Readiness & Liveness probes are always properly utilised and monitored