यह पेज आपको kubectl कमांड-लाइन टूल का उपयोग करके कुबेरनेट्स सीक्रेट को कैसे बनाने, संपादित करने, प्रबंधित करने और हटाने का तरीका दिखाता है।
आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप minikube की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:
एक सीक्रेट ऑब्जेक्ट संवेदनशील डेटा जैसे क्रेडेंशियल को संग्रह करता है जिसका उपयोग पॉड्स द्वारा डेटाबेस तक पहुंचने के लिए किया जाता है। उदाहरण के लिए, आपको डेटाबेस तक पहुंचने के लिए आवश्यक उपयोगकर्ता नाम और पासवर्ड को संग्रह करने के लिए एक सीक्रेट की आवश्यकता हो सकती है।
आप कमांड में रॉ डेटा पास करके या क्रेडेंशियल्स को फाइलों में संग्रह करके सीक्रेट बना सकते हैं जिन्हें आप कमांड में पास करते हैं। निम्नलिखित कमांड एक सीक्रेट बनाते हैं जो उपयोगकर्ता नाम admin और पासवर्ड S!B\*d$zDsb= को संग्रह करता है।
निम्नलिखित कमांड चलाएं:
kubectl create secret generic db-user-pass \
--from-literal=username=admin \
--from-literal=password='S!B\*d$zDsb='
आपको अपनी स्ट्रिंग में विशेष वर्णों जैसे $, \, *, =, और ! को एस्केप करने के लिए एकल उद्धरण '' का उपयोग करना होगा। यदि आप ऐसा नहीं करते हैं, तो आपका शेल इन वर्णों की व्याख्या करेगा।
stringData फील्ड सर्वर-साइड एप्लाई के साथ अच्छी तरह से काम नहीं करता है।क्रेडेंशियल्स को फाइलों में संग्रह करें:
echo -n 'admin' > ./username.txt
echo -n 'S!B\*d$zDsb=' > ./password.txt
-n फ्लैग यह सुनिश्चित करता है कि जनरेट की गई फाइलों में टेक्स्ट के अंत में एक अतिरिक्त न्यूलाइन वर्ण नहीं है। यह महत्वपूर्ण है क्योंकि जब kubectl एक फाइल को पढ़ता है और सामग्री को base64 स्ट्रिंग में एनकोड करता है, तो अतिरिक्त न्यूलाइन वर्ण भी एनकोड हो जाता है। आपको फाइल में शामिल स्ट्रिंग्स में विशेष वर्णों को एस्केप करने की आवश्यकता नहीं है।
kubectl कमांड में फाइल पथ पास करें:
kubectl create secret generic db-user-pass \
--from-file=./username.txt \
--from-file=./password.txt
डिफ़ॉल्ट कुंजी नाम फाइल का नाम है। आप वैकल्पिक रूप से --from-file=[key=]source का उपयोग करके कुंजी नाम सेट कर सकते हैं। उदाहरण के लिए:
kubectl create secret generic db-user-pass \
--from-file=username=./username.txt \
--from-file=password=./password.txt
किसी भी विधि के साथ, आउटपुट इस तरह का होता है:
secret/db-user-pass created
जांचें कि सीक्रेट बनाया गया था:
kubectl get secrets
आउटपुट इस तरह का होता है:
NAME TYPE DATA AGE
db-user-pass Opaque 2 51s
सीक्रेट के विवरण देखें:
kubectl describe secret db-user-pass
आउटपुट इस तरह का होता है:
Name: db-user-pass
Namespace: default
Labels: <none>
Annotations: <none>
Type: Opaque
Data
====
password: 12 bytes
username: 5 bytes
kubectl get और kubectl describe कमांड डिफ़ॉल्ट रूप से सीक्रेट की सामग्री को दिखाने से बचते हैं। यह सीक्रेट को गलती से एक्सपोज होने से बचाने के लिए है, या टर्मिनल लॉग में संग्रह होने से बचाने के लिए है।
आपके द्वारा बनाए गए सीक्रेट की सामग्री देखें:
kubectl get secret db-user-pass -o jsonpath='{.data}'
आउटपुट इस तरह का होता है:
{ "password": "UyFCXCpkJHpEc2I9", "username": "YWRtaW4=" }
password डेटा को डिकोड करें:
echo 'UyFCXCpkJHpEc2I9' | base64 --decode
आउटपुट इस तरह का होता है:
S!B\*d$zDsb=
kubectl get secret db-user-pass -o jsonpath='{.data.password}' | base64 --decode
आप एक मौजूदा सीक्रेट ऑब्जेक्ट को संपादित कर सकते हैं जब तक कि वह अपरिवर्तनीय नहीं है। सीक्रेट को संपादित करने के लिए, निम्नलिखित कमांड चलाएं:
kubectl edit secrets <secret-name>
यह आपका डिफ़ॉल्ट एडिटर खोलता है और आपको data फील्ड में base64 एनकोडेड सीक्रेट मान को अपडेट करने की अनुमति देता है, जैसा कि निम्नलिखित उदाहरण में है:
# कृपया नीचे दिए गए ऑब्जेक्ट को संपादित करें। '#' से शुरू होने वाली लाइनें अनदेखी कर दी जाएंगी,
# और एक खाली फाइल संपादन को निरस्त कर देगी। यदि इस फाइल को सहेजते समय कोई त्रुटि होती है, तो इसे
# संबंधित विफलताओं के साथ फिर से खोला जाएगा।
#
apiVersion: v1
data:
password: UyFCXCpkJHpEc2I9
username: YWRtaW4=
kind: Secret
metadata:
creationTimestamp: "2022-06-28T17:44:13Z"
name: db-user-pass
namespace: default
resourceVersion: "12708504"
uid: 91becd59-78fa-4c85-823f-6d44436242ac
type: Opaque
सीक्रेट को हटाने के लिए, निम्नलिखित कमांड चलाएं:
kubectl delete secret db-user-pass