Kustomize का उपयोग करके Secrets का प्रबंधन

kustomization.yaml file का उपयोग करके Secret objects बनाना।

kubectl Secrets और ConfigMaps का प्रबंधन करने के लिए Kustomize object management tool का उपयोग करने का समर्थन करता है। आप Kustomize का उपयोग करके एक resource generator बनाते हैं, जो एक Secret उत्पन्न करता है जिसे आप kubectl का उपयोग करके API server पर apply कर सकते हैं।

शुरू करने से पहले

आपको कुबरनेट्स क्लस्टर की ज़रूरत पड़ेगी और क्यूब सीटीएल कमांड लाइन साधन को समनुरूप करना होगा ताकि वो आपके क्लस्टर के साथ संवाद कर सकें। हमारी सलाह है की इस टुटोरिअल को क्लस्टर में रन करने के लिए कम से कम दो नोड का इस्तेमाल करे जो कि कंट्रोल प्लेन होस्ट के तरह ना एक्ट करे। अगर आपके पास पहले से क्लस्टर नही है, आप minikube की मदद से वह बना सकते है या आप नीचे दिए हुए इन दो कुबरनेट्स प्लेग्राउंड का इस्तेमाल कर सकते हैं:

एक Secret बनाएं

आप एक secretGenerator को परिभाषित करके एक Secret उत्पन्न कर सकते हैं kustomization.yaml file में जो अन्य मौजूदा files, .env files, या literal values को reference करता है। उदाहरण के लिए, निम्नलिखित निर्देश username admin और password 1f2d1e2e67df के लिए एक kustomization file बनाते हैं।

टिप्पणी:

Secret के लिए stringData फ़ील्ड server-side apply के साथ अच्छी तरह से काम नहीं करता है।

kustomization file बनाएं


secretGenerator:
- name: database-creds
  literals:
  - username=admin
  - password=1f2d1e2e67df

  1. क्रेडेंशियल्स को फ़ाइलों में स्टोर करें। फ़ाइल नाम secret की keys हैं:

    echo -n 'admin' > ./username.txt
    echo -n '1f2d1e2e67df' > ./password.txt
    

    -n flag यह सुनिश्चित करता है कि आपकी फ़ाइलों के अंत में कोई newline वर्ण नहीं है।

  2. 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 होना चाहिए।

kustomization file को apply करें

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.

एक Secret संपादित करें

  1. अपनी kustomization.yaml file में, डेटा को संशोधित करें, जैसे password

  2. उस 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

आगे क्या है