
Kubernetes ऑब्जेक्ट विश्लेषण बेहतर विश्वसनीयता और सुरक्षा के लिए सिफारिशों के साथ। kube-score आपके Kubernetes YAML और Charts में डाउनटाइम और बग को सक्रिय रूप से रोकता है। Kubernetes के लिए स्थैतिक कोड विश्लेषण।

kube-score एक उपकरण है जो आपके Kubernetes ऑब्जेक्ट परिभाषाओं का स्थैतिक कोड विश्लेषण करता है।
आउटपुट सिफारिशों की एक सूची है कि आप अपने एप्लिकेशन को अधिक सुरक्षित और लचीला बनाने के लिए क्या सुधार कर सकते हैं।
आप kube-score को ब्राउज़र में ऑनलाइन डेमो (स्रोत) के साथ परीक्षण कर सकते हैं।
kube-score स्थापित करना आसान है, और निम्नलिखित स्रोतों से उपलब्ध है:
जांचों की पूरी सूची के लिए, README_CHECKS.md देखें।
NetworkPolicy द्वारा लक्षित किया गया है, egress और ingress दोनों नियमों की अनुशंसा की जाती हैPodDisruptionPolicy होना चाहिए
kube-score आपके CI/CD वातावरण में चल सकता है और यदि कोई गंभीर त्रुटि पाई जाती है तो exit कोड 1 के साथ बाहर निकल जाएगा।
ट्रिगर स्तर को --exit-one-on-warning तर्क के साथ चेतावनी में बदला जा सकता है।
सर्वोत्तम परिणाम के लिए kube-score का इनपुट उन सभी अनुप्रयोगों का होना चाहिए जिन्हें आप एक ही नेमस्पेस में तैनात करते हैं।
helm template my-app | kube-score score -
kustomize build . | kube-score score -
kube-score score my-app/*.yaml
kube-score score my-app/deployment.yaml my-app/service.yaml
kubectl api-resources --verbs=list --namespaced -o name \
| xargs -n1 -I{} bash -c "kubectl get {} --all-namespaces -oyaml && echo ---" \
| kube-score score -
docker run -v $(pwd):/project zegl/kube-score:latest score my-app/*.yaml
Usage of kube-score:
kube-score [action] --flags
Actions:
score इनपुट में सभी फाइलों की जांच करता है, और उन्हें एक स्कोर और सिफारिशें देता है
list सभी उपलब्ध स्कोर जांचों की एक CSV सूची प्रिंट करता है
version kube-score का संस्करण प्रिंट करता है
help यह संदेश प्रिंट करता है
Flags for score:
--disable-ignore-checks-annotations 'kube-score/ignore' एनोटेशन के प्रभाव को अक्षम करने के लिए सत्य पर सेट करें
--disable-optional-checks-annotations 'kube-score/enable' एनोटेशन के प्रभाव को अक्षम करने के लिए सत्य पर सेट करें
--enable-optional-test strings एक वैकल्पिक परीक्षण सक्षम करें, कई बार सेट किया जा सकता है
--exit-one-on-warning चेतावनी के मामले में कोड 1 के साथ बाहर निकलें
--help सहायता प्रिंट करें
--ignore-container-cpu-limit कंटेनर CPU सीमा सेट करने की आवश्यकता को अक्षम करता है
--ignore-container-memory-limit कंटेनर मेमोरी सीमा सेट करने की आवश्यकता को अक्षम करता है
--ignore-test strings एक परीक्षण अक्षम करें, कई बार सेट किया जा सकता है
--kubernetes-version string kubernetes-version सेट करने से मैनिफेस्ट के विरुद्ध चलाए गए जांच प्रभावित होंगे। इसे उस Kubernetes संस्करण पर सेट करें जिसका आप उत्पादन में उपयोग कर रहे हैं सर्वोत्तम परिणामों के लिए। (default "v1.18")
-o, --output-format string 'human', 'json', 'ci' या 'sarif' पर सेट करें। यदि ci पर सेट किया जाता है, तो kube-score प्रोग्राम को ऐसे प्रारूप में आउटपुट करेगा जो अन्य प्रोग्रामों द्वारा पार्स करना आसान है। Sarif आउटपुट CI प्लेटफार्मों के साथ आसान एकीकरण की अनुमति देता है। (default "human")
--output-version string --output-format के संस्करण को बदलता है। 'json' प्रारूप में 'v2' (default) और 'v1' (deprecated, v1.7.0 में हटा दिया जाएगा) संस्करण हैं। 'human' और 'ci' प्रारूपों में केवल 'v1' (default) संस्करण है। यदि स्पष्ट रूप से सेट नहीं किया गया है, तो उस विशेष आउटपुट प्रारूप के लिए डिफ़ॉल्ट संस्करण का उपयोग किया जाएगा।
-v, --verbose count वर्बोज़ आउटपुट सक्षम करें, बढ़ी हुई वर्बोसिटी के लिए कई बार सेट किया जा सकता है।
परीक्षणों को प्रोग्राम के पूरे रन में --ignore-test फ्लैग के साथ अनदेखा किया जा सकता है।
एक परीक्षण को प्रति-ऑब्जेक्ट आधार पर भी अनदेखा किया जा सकता है, ऑब्जेक्ट में kube-score/ignore एनोटेशन जोड़कर। मान परीक्षण आईडी की अल्पविराम-पृथक स्ट्रिंग होनी चाहिए।
उदाहरण:
इस ऑब्जेक्ट का परीक्षण अस्थायी रूप से service-type परीक्षण को अक्षम करेगा, जो NodePort प्रकार की सेवाओं के उपयोग के विरुद्ध चेतावनी देता है।
apiVersion: v1
kind: Service
metadata:
name: node-port-service-with-ignore
namespace: foospace
annotations:
kube-score/ignore: service-type
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: NodePort
वैकल्पिक परीक्षणों को प्रोग्राम के पूरे रन में --enable-optional-test फ्लैग के साथ सक्षम किया जा सकता है।
एक परीक्षण को प्रति-ऑब्जेक्ट आधार पर भी सक्षम किया जा सकता है, ऑब्जेक्ट में kube-score/enable एनोटेशन जोड़कर। मान परीक्षण आईडी की अल्पविराम-पृथक स्ट्रिंग होनी चाहिए।
उदाहरण:
इस ऑब्जेक्ट का परीक्षण container-seccomp-profile परीक्षण को सक्षम करेगा।
साथ ही, kube-score/ignore द्वारा परिभाषित कई परीक्षणों को भी एक ही समय में अनदेखा किया जाता है।
apiVersion: apps/v1
kind: Deployment
metadata:
name: optional-test-manifest-deployment
labels:
app: optional-test-manifest
annotations:
kube-score/ignore: pod-networkpolicy,container-resources,container-image-pull-policy,container-security-context-privileged,container-security-context-user-group-id,container-security-context-readonlyrootfilesystem,container-ephemeral-storage-request-and-limit
kube-score/enable: container-seccomp-profile
spec:
replicas: 1
selector:
matchLabels:
app: optional-test-manifest
template:
metadata:
labels:
app: optional-test-manifest
spec:
containers:
- name: optional-test-manifest
image: busybox:1.34
command:
- /bin/sh
- -c
- date; env; tail -f /dev/null
kube-score को निर्माण के लिए Go 1.21 या उसके बाद के संस्करण की आवश्यकता है। इस रिपॉजिटरी को क्लोन करें, और फिर:
# प्रोजेक्ट बनाएं
go build ./cmd/kube-score
# सभी परीक्षण चलाएं
go test -v ./...
क्या आप मदद करना चाहते हैं? अधिक जानकारी के लिए योगदान दिशानिर्देश देखें। 🤩
| Project | Version |
|---|---|
| go.dev | ^1.21 |
| Distribution | Command / Link |
|---|
| macOS, Linux और Windows के लिए पूर्व-निर्मित बाइनरी | GitHub releases |
| Docker | docker pull zegl/kube-score (Docker Hub) |
| Homebrew (macOS और Linux) | brew install kube-score |
| Krew (macOS और Linux) | kubectl krew install score |