
firecracker v1.17.0
सर्वरलेस कंप्यूटिंग के लिए सुरक्षित और तेज़ माइक्रोVM।
हमारा मिशन कंटेनर और फ़ंक्शन वर्कलोड का सुरक्षित, मल्टी-टेनेंट, न्यूनतम-ओवरहेड निष्पादन सक्षम करना है।
Firecracker चार्टर के बारे में यहाँ और पढ़ें।
Firecracker क्या है?
Firecracker एक ओपन सोर्स वर्चुअलाइज़ेशन तकनीक है जो सुरक्षित, मल्टी-टेनेंट कंटेनर और फ़ंक्शन-आधारित सेवाएँ बनाने और प्रबंधित करने के लिए विशेष रूप से डिज़ाइन की गई है जो सर्वरलेस ऑपरेशनल मॉडल प्रदान करती हैं। Firecracker वर्कलोड को हल्के वर्चुअल मशीनों में चलाता है, जिन्हें microVM कहा जाता है, जो हार्डवेयर वर्चुअलाइज़ेशन तकनीक द्वारा प्रदान की गई सुरक्षा और अलगाव गुणों को कंटेनरों की गति और लचीलेपन के साथ जोड़ते हैं।
अवलोकन
Firecracker का मुख्य घटक एक वर्चुअल मशीन मॉनिटर (VMM) है जो microVM बनाने और चलाने के लिए Linux Kernel Virtual Machine (KVM) का उपयोग करता है। Firecracker का एक न्यूनतम डिज़ाइन है। यह प्रत्येक microVM की मेमोरी फ़ुटप्रिंट और अटैक सतह क्षेत्र को कम करने के लिए अनावश्यक डिवाइस और गेस्ट-फेसिंग कार्यक्षमता को बाहर करता है। यह सुरक्षा में सुधार करता है, स्टार्टअप समय घटाता है, और हार्डवेयर उपयोग बढ़ाता है। Firecracker को कंटेनर रनटाइम में भी एकीकृत किया गया है, उदाहरण के लिए Kata Containers और Flintlock।
Firecracker को Amazon Web Services में AWS Lambda और AWS Fargate जैसी सेवाओं की गति और दक्षता बढ़ाने के लिए विकसित किया गया था। Firecracker Apache संस्करण 2.0 के तहत ओपन सोर्स है।
Firecracker के बारे में अधिक पढ़ने के लिए, firecracker-microvm.io देखें।
आरंभ करना
Firecracker के साथ शुरू करने के लिए, नवीनतम रिलीज़ बाइनरी डाउनलोड करें या इसे स्रोत से बनाएँ।
आप किसी भी Unix/Linux सिस्टम पर Firecracker बना सकते हैं जिसमें Docker चल रहा हो (हम एक डेवलपमेंट कंटेनर का उपयोग करते हैं) और bash स्थापित हो, निम्नानुसार:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
Firecracker बाइनरी build/cargo_target/${toolchain}/debug/firecracker पर स्थित होगी। Firecracker को बनाने, परीक्षण करने और चलाने के बारे में अधिक जानकारी के लिए, त्वरित प्रारंभ गाइड पर जाएँ।
Firecracker microVM की समग्र सुरक्षा, जिसमें सुरक्षित मल्टी-टेनेंट कंप्यूटिंग के मानदंडों को पूरा करने की क्षमता शामिल है, एक अच्छी तरह से कॉन्फ़िगर किए गए Linux होस्ट ऑपरेटिंग सिस्टम पर निर्भर करती है। एक कॉन्फ़िगरेशन जो हमें लगता है कि इस मानक को पूरा करता है, प्रोडक्शन होस्ट सेटअप दस्तावेज़ में शामिल है।
योगदान
Firecracker पहले से ही AWS के भीतर प्रोडक्शन वर्कलोड चला रहा है, लेकिन यह अभी भी हमारे मिशन द्वारा निर्देशित यात्रा का दिन 1 है। बनाने के लिए बहुत कुछ है और हम सभी योगदानों का स्वागत करते हैं।
Firecracker में योगदान करने के लिए, आरंभ करने वाली गाइड में डेवलपमेंट सेटअप अनुभाग और फिर Firecracker योगदान दिशानिर्देश देखें।
रिलीज़
नए Firecracker संस्करण GitHub रिपॉज़िटरी रिलीज़ पृष्ठ के माध्यम से जारी किए जाते हैं, आमतौर पर हर दो या तीन महीने में। परिवर्तनों का इतिहास हमारे चेंजलॉग में दर्ज है।
Firecracker रिलीज़ नीति यहाँ विस्तृत है।
डिज़ाइन
Firecracker की समग्र वास्तुकला डिज़ाइन दस्तावेज़ में वर्णित है।
विशेषताएँ और क्षमताएँ
Firecracker में एक एकल micro वर्चुअल मशीन मैनेजर प्रक्रिया होती है जो शुरू होने पर होस्ट को एक API एंडपॉइंट उजागर करती है। API OpenAPI प्रारूप में निर्दिष्ट है। API दस्तावेज़ में इसके बारे में और पढ़ें।
API एंडपॉइंट का उपयोग निम्न के लिए किया जा सकता है:
- microvm को कॉन्फ़िगर करें:
- vCPU की संख्या निर्धारित करना (डिफ़ॉल्ट 1 है)।
- मेमोरी आकार निर्धारित करना (डिफ़ॉल्ट 128 MiB है)।
- CPU टेम्पलेट कॉन्फ़िगर करना।
- microVM में एक या अधिक नेटवर्क इंटरफ़ेस जोड़ें।
- microVM में एक या अधिक रीड-राइट या रीड-ओनली डिस्क जोड़ें, प्रत्येक एक फ़ाइल-बैक्ड ब्लॉक डिवाइस द्वारा दर्शाया गया है।
- गेस्ट चलते समय ब्लॉक डिवाइस का पुनः-स्कैन ट्रिगर करें। यह गेस्ट OS को ब्लॉक डिवाइस की बैकिंग फ़ाइल के आकार परिवर्तनों को उठाने में सक्षम बनाता है।
- गेस्ट बूट होने से पहले या बाद में, ब्लॉक डिवाइस के लिए बैकिंग फ़ाइल बदलें।
- virtio डिवाइसों के लिए रेट लिमिटर कॉन्फ़िगर करें जो बैंडविड्थ, प्रति सेकंड ऑपरेशन, या दोनों को सीमित कर सकते हैं।
- लॉगिंग और मेट्रिक सिस्टम कॉन्फ़िगर करें।
[BETA]गेस्ट-फेसिंग मेटाडेटा सेवा का डेटा ट्री कॉन्फ़िगर करें। यह सेवा गेस्ट के लिए केवल तभी उपलब्ध है जब यह संसाधन कॉन्फ़िगर किया गया हो।- microVM में एक vsock सॉकेट जोड़ें।
- microVM में एक एन्ट्रॉपी डिवाइस जोड़ें।
- microVM में एक pmem डिवाइस जोड़ें।
- मेमोरी हॉटप्लगिंग कॉन्फ़िगर और प्रबंधित करें।
[डेवलपर प्रीव्यू]VM चलते समय virtio PCI डिवाइसों को हॉट-प्लग और हॉट-अनप्लग करें।- दिए गए कर्नेल इमेज, रूट फ़ाइल सिस्टम और बूट तर्कों का उपयोग करके microVM शुरू करें।
- [केवल x86_64] microVM रोकें।
अंतर्निहित क्षमताएँ:
- डिमांड फॉल्ट पेजिंग और CPU ओवरसब्सक्रिप्शन डिफ़ॉल्ट रूप से सक्षम।
- बेहतर सुरक्षा के लिए उन्नत, थ्रेड-विशिष्ट seccomp फ़िल्टर।
- प्रोडक्शन परिदृश्यों में Firecracker शुरू करने के लिए Jailer प्रक्रिया; cgroup/namespace अलगाव बाधा लागू करता है और फिर विशेषाधिकार हटा देता है।
परीक्षण किए गए प्लेटफ़ॉर्म
हम सभी संयोजनों का परीक्षण करते हैं:
| इंस्टेंस | होस्ट OS और कर्नेल | गेस्ट रूटफ़्स | गेस्ट कर्नेल |
|---|---|---|---|
| m5n.metal (Intel Cascade Lake) | al2 linux_5.10 | ubuntu 24.04 | linux_5.10 |
| m6i.metal (Intel Ice Lake) | al2023 linux_6.1 | linux_6.1 | |
| al2023 linux_6.18 | |||
| m7i.metal-24xl (Intel Sapphire Rapids) | |||
| m7i.metal-48xl (Intel Sapphire Rapids) | |||
| m8i.metal-48xl (Intel Granite Rapids)* | |||
| m8i.metal-96xl (Intel Granite Rapids)* | |||
| m6a.metal (AMD Milan) | |||
| m7a.metal-48xl (AMD Genoa) | |||
| m6g.metal (Graviton 2) | |||
| m7g.metal (Graviton 3) | |||
| m8g.metal-24xl (Graviton 4) | |||
| m8g.metal-48xl (Graviton 4) | |||
| m9g.metal-48xl (Graviton 5) |
*: हम केवल AWS EC2 8वीं पीढ़ी के Intel (*8i) इंस्टेंस का समर्थन करते हैं जो 6.1 या 6.18 होस्ट कर्नेल का उपयोग करते हैं। यह 5.10 पर Granite Rapids CPU के लिए खराब कर्नेल समर्थन के कारण है।
ज्ञात समस्याएँ और सीमाएँ
- aarch64 पर
pl031RTC डिवाइस इंटरप्ट का समर्थन नहीं करता है, इसलिए गेस्ट प्रोग्राम जो RTC अलार्म का उपयोग करते हैं (जैसेhwclock) काम नहीं करेंगे।
प्रदर्शन
Firecracker की प्रदर्शन विशेषताएँ विनिर्देश दस्तावेज़ीकरण के भाग के रूप में सूचीबद्ध हैं। सभी विनिर्देश सर्वरलेस ऑपरेशनल मॉडल में कंटेनर और फ़ंक्शन वर्कलोड का समर्थन करने की हमारी प्रतिबद्धता का एक हिस्सा हैं, और इसलिए निरंतर एकीकरण परीक्षण के माध्यम से लागू किए जाते हैं।
सुरक्षा प्रकटीकरण के लिए नीति
Firecracker की सुरक्षा हमारी सर्वोच्च प्राथमिकता है। यदि आपको संदेह है कि आपने एक भेद्यता उजागर की है, तो हमसे निजी तौर पर संपर्क करें, जैसा कि हमारे सुरक्षा नीति दस्तावेज़ में उल्लिखित है; हम आपके प्रकटीकरण को तुरंत प्राथमिकता देंगे।
FAQ और संपर्क
अक्सर पूछे जाने वाले प्रश्न हमारे FAQ दस्तावेज़ में एकत्र किए गए हैं।
आप निम्नलिखित तरीकों से Firecracker समुदाय से संपर्क कर सकते हैं:
- सुरक्षा-संबंधी मुद्दे, हमारा सुरक्षा नीति दस्तावेज़ देखें।
- हमारे Slack वर्कस्पेस पर हमसे चैट करें नोट: अधिकांश मेंटेनर यूरोपीय समय क्षेत्र में हैं।
- इस रिपॉज़िटरी में एक GitHub इश्यू खोलें।
- मेंटेनरों को ईमेल करें [email protected] पर।
Firecracker समुदाय के भीतर संवाद करते समय, कृपया हमारे आचार संहिता का ध्यान रखें।