
क्लाउड-नेटिव वर्कलोड्स में कैओस प्रयोगों को इंजेक्ट करने के लिए Kubernetes ऑपरेटर, जो घोषणात्मक CRDs के माध्यम से रेज़िलिएंस परीक्षण और वर्कलोड हार्डनिंग को स्वचालित करता है।
Litmus chaos operator का उपयोग Kubernetes एप्लिकेशन डेवलपर्स और SREs द्वारा एप्लिकेशनों तथा Kubernetes इंफ्रास्ट्रक्चर में नियंत्रित तरीके से chaos इंजेक्ट करने के लिए किया जाता है। इसका उद्देश्य chaos प्रयोगों के निष्पादन को स्वचालित करके Kubernetes पर एप्लिकेशन वर्कलोड के सत्यापन और सख्तीकरण की प्रक्रिया को आसान बनाना है। एक नमूना chaos इंजेक्शन वर्कफ़्लो इतना सरल हो सकता है:
Chaos Operator द्वारा प्रदान किए जाने वाले लाभों में शामिल हैं:
Chaos Operator एक Kubernetes Operator है, जो कुछ और नहीं बल्कि Kubernetes API तक सीधी पहुँच रखने वाले कस्टम-कंट्रोलर होते हैं जो कुछ संसाधनों या एप्लिकेशनों के lifecycle का प्रबंधन कर सकते हैं, साथ ही हमेशा यह सुनिश्चित करने का प्रयास करते हैं कि संसाधन "वांछित स्थिति" में हो। यह सुनिश्चित करने वाला तर्क सामान्यतः "reconcile" फ़ंक्शन कहलाता है।
Chaos Operator लोकप्रिय Operator-SDK फ्रेमवर्क का उपयोग करके बनाया गया है, जो नए operator प्रोजेक्ट्स के लिए bootstrap सहायता प्रदान करता है, जिससे टीमें व्यावसायिक/परिचालन तर्क पर ध्यान केंद्रित कर सकती हैं।
Litmus Chaos Operator ChaosEngine की स्थिति को reconcile करने में मदद करता है; यह एक कस्टम रिसोर्स है जो किसी डेवलपर/DevOps इंजीनियर द्वारा किसी विशेष stateless/stateful Kubernetes डिप्लॉयमेंट के लिए निर्दिष्ट chaos आशय को धारण करता है। Operator अपने प्राथमिक संसाधन ChaosEngine के CRUD पर विशिष्ट क्रियाएँ करता है। Operator एक द्वितीयक संसाधन (engine runner pod) भी परिभाषित करता है, जिसे reconcile फ़ंक्शनों को लागू करने के लिए उसके द्वारा बनाया और प्रबंधित किया जाता है।
ChaosEngine मूल स्कीमा है जो किसी दिए गए एप्लिकेशन के लिए chaos वर्कफ़्लो को परिभाषित करता है। वर्तमान में, यह निम्नलिखित परिभाषित करता है:
ChaosEngine को द्वितीयक (reconcile) संसाधन के स्वामी के रूप में संदर्भित किया जाता है, और Kubernetes deletePropagation यह सुनिश्चित करता है कि ChaosEngine CR के विलोपन पर इन्हें भी हटा दिया जाए।
संदर्भ के लिए एक नमूना ChaosEngineSpec: https://v1-docs.litmuschaos.io/docs/getstarted/#prepare-chaosengine
Litmus Chaos Charts का उपयोग "Chaos Experiment Bundles" इंस्टॉल करने के लिए किया जाता है और इन्हें प्रयोगों की प्रकृति के आधार पर वर्गीकृत किया जाता है (सामान्य Kubernetes chaos, वेंडर/प्रोवाइडर-विशिष्ट chaos - जैसे OpenEBS, या एप्लिकेशन-विशिष्ट chaos, मान लीजिए NuoDB)। इनमें ऐसे कस्टम रिसोर्स होते हैं जो निम्न-स्तरीय chaos (परीक्षण) पैरामीटर धारण करते हैं, जिन्हें प्रयोगों को निष्पादित करने के लिए operator द्वारा क्वेरी किया जाता है। spec.definition.fields और उनके संगत values का उपयोग अंतिम निष्पादन आर्टिफैक्ट (आमतौर पर litmusbook, जो एक K8s job रिसोर्स है) को बनाने के लिए किया जाता है जो chaos प्रयोग चलाता है। यह प्रयोग को निष्पादित करने के लिए आवश्यक अनुमतियाँ भी परिभाषित करता है।
संदर्भ के लिए एक नमूना ChaosEngineSpec:
apiVersion: litmuschaos.io/v1alpha1
description:
message: |
Deletes a pod belonging to a deployment/statefulset/daemonset
kind: ChaosExperiment
metadata:
name: pod-delete
labels:
name: pod-delete
app.kubernetes.io/part-of: litmus
app.kubernetes.io/component: chaosexperiment
app.kubernetes.io/version: latest
spec:
definition:
scope: Namespaced
permissions:
- apiGroups:
- ""
- "apps"
- "batch"
- "litmuschaos.io"
resources:
- "deployments"
- "jobs"
- "pods"
- "configmaps"
- "chaosengines"
- "chaosexperiments"
- "chaosresults"
verbs:
- "create"
- "list"
- "get"
- "patch"
- "update"
- "delete"
image: "litmuschaos/go-runner:latest"
imagePullPolicy: Always
args:
- -c
- ./experiments -name pod-delete
command:
- /bin/bash
env:
- name: TOTAL_CHAOS_DURATION
value: '15'
# Period to wait before/after injection of chaos in sec
- name: RAMP_TIME
value: ''
- name: FORCE
value: 'true'
- name: CHAOS_INTERVAL
value: '5'
## percentage of total pods to target
- name: PODS_AFFECTED_PERC
value: ''
- name: LIB
value: 'litmus'
- name: TARGET_PODS
value: ''
## it defines the sequence of chaos execution for multiple target pods
## supported values: serial, parallel
- name: SEQUENCE
value: 'parallel'
labels:
name: pod-delete
app.kubernetes.io/part-of: litmus
app.kubernetes.io/component: experiment-job
app.kubernetes.io/version: latest
LitmusChaos दस्तावेज़ देखें litmus docs
आप issues उठाकर, दस्तावेज़ीकरण में सुधार करके, मुख्य फ्रेमवर्क और टूलिंग में योगदान करके आदि के माध्यम से योगदान कर सकते हैं।
योगदान गाइड पर जाएँ