2016-04-27 5 views
6

मैं कुबर्नेट्स रहस्यों में फ़ाइलों को स्टोर करना चाहता हूं लेकिन मुझे यह नहीं मिला है कि yaml फ़ाइल का उपयोग करके इसे कैसे किया जाए।yaml द्वारा कुबर्नेट्स रहस्यों में गुप्त फ़ाइलों को कैसे सेट करें?

मैं इसे kubectl साथ CLI का उपयोग कर बनाने के लिए सक्षम किया गया है:

kubectl create secret generic some-secret --from-file=secret1.txt=secrets/secret1.txt 

लेकिन जब मैं एक yaml में कुछ इसी तरह की कोशिश:

apiVersion: v1 
kind: Secret 
metadata: 
    name: some-secret 
type: Opaque 
data: 
    secret1.txt: secrets/secret1.txt 

मैं इस त्रुटि मिली:

[pos 73]: json: error decoding base64 binary 'assets/elasticsearch.yml': illegal base64 data at input byte 20 

मैं इस गाइड का अनुसरण कर रहा हूं http://kubernetes.io/docs/user-guide/secrets/। यह बताता है कि yaml का उपयोग करके एक रहस्य कैसे बनाया जाए, लेकिन फ़ाइल से yaml का उपयोग करके कोई रहस्य कैसे बनाएं।

क्या यह संभव है? यदि हां, तो मैं इसे कैसे कर सकता हूं?

उत्तर

5

CLI प्रारूप का उपयोग करते समय मूल रूप से आप इसे सर्वर-साइड पर पोस्ट करने से पहले यामल के जेनरेटर का उपयोग कर रहे हैं।

चूंकि कुबर्नेट्स क्लाइंट-सर्वर ऐप के बीच आरईएसटी एपीआई के साथ है, और कार्यों को परमाणु होने की आवश्यकता है, पोस्ट किए गए YAML को फ़ाइल की सामग्री को रखने की आवश्यकता है, और ऐसा करने का सबसे अच्छा तरीका इसे बेस 64 के रूप में एम्बेड करना है ऑनलाइन प्रारूप। यह अच्छा होगा अगर फ़ाइल को अन्यथा एम्बेड किया जा सके (इंडेंटेशन शायद फ़ाइल की सीमाएं बनाने के लिए इस्तेमाल किया जा सकता है), लेकिन मैंने अब तक इस तरह का कोई उदाहरण नहीं देखा है।

कहा जा रहा है कि, यम पर एक फ़ाइल संदर्भ डालना संभव नहीं है, सामग्री को शामिल करने के लिए याम का कोई प्री-फ्लाइट प्रतिपादन नहीं है।

+0

धन्यवाद, बहुत बुरा कोई फ़ाइल संदर्भ जोड़ने :-(समर्थित नहीं है – dgil

9

जैसा कि पिछली पोस्ट पर उत्तर दिया गया है, हमें फ़ाइल में आधारित 64 के रूप में एन्कोडेड प्रमाणपत्र/कुंजी प्रदान करने की आवश्यकता है।

secret.yml.tmpl:

यहाँ एक certiticate के लिए सामान्य उदाहरण (इस मामले एसएसएल में) है

sed "s/SERVER_CRT/`cat server.crt|base64 -w0`/g" secret.yml.tmpl | \ 
sed "s/SERVER_KEY/`cat server.key|base64 -w0`/g" | \ 
kubectl apply -f - 
:

apiVersion: v1  

    kind: Secret 
    metadata: 
     name: test-secret 
     namespace: default 
    type: Opaque 
    data: 
     server.crt: SERVER_CRT 
     server.key: SERVER_KEY 

पूर्व प्रक्रिया फ़ाइल प्रमाणपत्र/कुंजी शामिल करने

ध्यान दें कि प्रमाणपत्र/कुंजी को बेसस्पेस (-w0) के बिना बेस 64 का उपयोग करके एन्कोड किया गया है।

के लिए टीएलएस बस हो सकता है:

kubectl create secret tls test-secret-tls --cert=server.crt --key=server.key 
संबंधित मुद्दे