kubectl Secrets और ConfigMaps का प्रबंधन करने के लिए Kustomize object management tool का उपयोग करने का समर्थन करता है। आप Kustomize का उपयोग करके एक resource generator बनाते हैं, जो
एक Secret उत्पन्न करता है जिसे आप kubectl का उपयोग करके API server पर apply कर सकते हैं।
आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप minikube की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:
आप एक secretGenerator को परिभाषित करके एक Secret उत्पन्न कर सकते हैं
kustomization.yaml file में जो अन्य मौजूदा files, .env files, या
literal values को reference करता है। उदाहरण के लिए, निम्नलिखित निर्देश username admin और password 1f2d1e2e67df के लिए एक kustomization
file बनाते हैं।
stringData फ़ील्ड server-side apply के साथ अच्छी तरह से काम नहीं करता है।
secretGenerator:
- name: database-creds
literals:
- username=admin
- password=1f2d1e2e67df
क्रेडेंशियल्स को फ़ाइलों में स्टोर करें। फ़ाइल नाम secret की keys हैं:
echo -n 'admin' > ./username.txt
echo -n '1f2d1e2e67df' > ./password.txt
-n flag यह सुनिश्चित करता है कि आपकी फ़ाइलों के अंत में कोई newline वर्ण नहीं है।
kustomization.yaml file बनाएं:
secretGenerator:
- name: database-creds
files:
- username.txt
- password.txt
आप kustomization.yaml file में secretGenerator को भी परिभाषित कर सकते हैं
.env files प्रदान करके। उदाहरण के लिए, निम्नलिखित kustomization.yaml file
एक .env.secret file से डेटा pull करती है:
secretGenerator:
- name: db-user-pass
envs:
- .env.secret
सभी मामलों में, आपको values को base64 में encode करने की आवश्यकता नहीं है। YAML
file का नाम अवश्य kustomization.yaml या kustomization.yml होना चाहिए।
Secret बनाने के लिए, उस directory को apply करें जिसमें kustomization file है:
kubectl apply -k <directory-path>
आउटपुट इस प्रकार है:
secret/database-creds-5hdh7hhgfk created
जब एक Secret उत्पन्न होता है, तो Secret का नाम Secret डेटा को hash करके और hash value को नाम में append करके बनाया जाता है। यह सुनिश्चित करता है कि डेटा को modify किए जाने पर हर बार एक नया Secret उत्पन्न होता है।
Secret बनाया गया था या नहीं, इसे सत्यापित करने और Secret डेटा को डिकोड करने के लिए,
kubectl get -k <directory-path> -o jsonpath='{.data}'
आउटपुट इस प्रकार है:
{ "password": "MWYyZDFlMmU2N2Rm", "username": "YWRtaW4=" }
echo 'MWYyZDFlMmU2N2Rm' | base64 --decode
आउटपुट इस प्रकार है:
1f2d1e2e67df
अधिक जानकारी के लिए, देखें Managing Secrets using kubectl और Declarative Management of Kubernetes Objects Using Kustomize.
अपनी kustomization.yaml file में, डेटा को संशोधित करें, जैसे password।
उस directory को apply करें जिसमें kustomization file है:
kubectl apply -k <directory-path>
आउटपुट इस प्रकार है:
secret/db-user-pass-6f24b56cc8 created
संपादित Secret एक नए Secret object के रूप में बनाया जाता है, मौजूदा
Secret object को अपडेट करने के बजाय। आपको अपने Pods में Secret के references को अपडेट करने की आवश्यकता हो सकती है।
एक Secret को हटाने के लिए, kubectl का उपयोग करें:
kubectl delete secret db-user-pass