namespace-node-affinity
kube-score
namespace-node-affinity | kube-score | |
---|---|---|
5 | 8 | |
62 | 2,615 | |
- | - | |
3.5 | 8.0 | |
28 days ago | 13 days ago | |
Go | Go | |
Apache License 2.0 | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
namespace-node-affinity
-
Set node affinity to all pods in a namespace
Recently I had to install a fairly large system on an existing k8s cluster and make sure its pods run only on specific nodes. Initially I thought to myself, the PodNodeAffinity plugin will do that for me easy! The bad news is, that’s not available on GKE (or EKS for that matter) and that's what I was using. I started googling around as I was sure that there must be an alternative for this, but the only thing I managed to find were a few very old, unanswered questions on stack overflow :( As I have not worked on any open-source projects outside of work in quite a while and really wanted to publish something, that stuck out as a good problem to solve! That's how I ended up creating the Namespace Node Affinity mutating webhook.
- Kubernetes Mutating Webhook for assigning node affinity to all pods in a namespace
- Kubernetes Mutating Webhook for assigning node affinity on a namespace level
- Replacement for the PodNodeSelector plugin on EKS as a Mutating Webhook
- Namespace Node Affinity is a Kubernetes mutating webhook which provides the ability to define node affinity for pods on a namespace level. It is useful for managed k8s where the PodNodeSelector plugin is not available. Hope it's useful to you and happy hacking! :)
kube-score
- GitHub - zegl/kube-score: Kubernetes object analysis with recommendations for improved reliability and security
-
What should readiness & liveness probe actually check for?
This is taken from: https://github.com/zegl/kube-score/blob/master/README_PROBES.md and I have read the same opinions elsewhere.
-
How do you take care of your manifests?
A developer's workflow should anyway deploy to a real, or close-to-production Kubernetes cluster before opening a merge request with the finished change. That means the developer definitely sees upfront if the manifest is super wrong. Tools like kube-score (which is quite opinionated), kubeval or OPA rules can help in addition to keep things consistent and secure. For such a developer workflow, I recommend Skaffold since it mostly just wraps Docker, kubectl and the templating tool you're using (e.g. kustomize/helm).
- Kube-Score v1.14
- kube-score v1.14 – Kubernetes object analysis with recommendations for improved reliability and security
-
Securing Kubernetes Deployments
apps/v1/Deployment semaphore-demo-ruby-kubernetes 💥 [CRITICAL] Container Resources · semaphore-demo-ruby-kubernetes -> CPU limit is not set Resource limits are recommended to avoid resource DDOS. Set resources.limits.cpu · semaphore-demo-ruby-kubernetes -> Memory limit is not set Resource limits are recommended to avoid resource DDOS. Set resources.limits.memory · semaphore-demo-ruby-kubernetes -> CPU request is not set Resource requests are recommended to make sure that the application can start and run without crashing. Set resources.requests.cpu · semaphore-demo-ruby-kubernetes -> Memory request is not set Resource requests are recommended to make sure that the application can start and run without crashing. Set resources.requests.memory [CRITICAL] Container Image Pull Policy · semaphore-demo-ruby-kubernetes -> ImagePullPolicy is not set to Always It's recommended to always set the ImagePullPolicy to Always, to make sure that the imagePullSecrets are always correct, and to always get the image you want. [CRITICAL] Pod NetworkPolicy · The pod does not have a matching NetworkPolicy Create a NetworkPolicy that targets this pod to control who/what can communicate with this pod. Note, this feature needs to be supported by the CNI implementation used in the Kubernetes cluster to have an effect. [CRITICAL] Pod Probes · Container is missing a readinessProbe A readinessProbe should be used to indicate when the service is ready to receive traffic. Without it, the Pod is risking to receive traffic before it has booted. It's also used during rollouts, and can prevent downtime if a new version of the application is failing. More information: https://github.com/zegl/kube-score/blob/master/README_PROBES.md [CRITICAL] Container Security Context · semaphore-demo-ruby-kubernetes -> Container has no configured security context Set securityContext to run the container in a more secure context. v1/Service semaphore-demo-ruby-kubernetes-lb ✅
-
Top 20 useful k8s tools
Link : https://github.com/zegl/kube-score
What are some alternatives?
polaris - Validation of best practices in your Kubernetes clusters
popeye - 👀 A Kubernetes cluster resource sanitizer
kubeconform - A FAST Kubernetes manifests validator, with support for Custom Resources!
datree - Prevent Kubernetes misconfigurations from reaching production (again 😤 )! From code to cloud, Datree provides an E2E policy enforcement solution to run automatic checks for rule violations. See our docs: https://hub.datree.io
kubeval - Validate your Kubernetes configuration files, supports multiple Kubernetes versions
polaris - Shopify’s design system to help us work together to build a great experience for all of our merchants.
stern - ⎈ Multi pod and container log tailing for Kubernetes
reviewdog - 🐶 Automated code review tool integrated with any code analysis tools regardless of programming language
ktunnel - A cli that exposes your local resources to kubernetes
goldilocks - Get your resource requests "Just Right"
github-actions-runner-operator - K8S operator for scheduling github actions runner pods
external-secrets - External Secrets Operator reads information from a third-party service like AWS Secrets Manager and automatically injects the values as Kubernetes Secrets.