2017-03-06 7 views
5

के लिए YAML गुजर छवि संस्करण parameterize करने के लिए कैसे वहाँ जब एक प्रकट .yaml गुजर आदेशजब कंटेनर निर्माण

उदाहरण kubectl करने के लिए एक varibale/config से छवि संस्करण पारित करने के लिए कोई तरीका है:

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: nginx 
spec: 
    replicas: 1 
    selector: 
    app: nginx 
    template: 
    metadata: 
     name: nginx 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: nginx:${IMAGE_VERSION} 
     imagePullPolicy: Always 
     resources: 
     limits: 
      cpu: "1.2" 
      memory: 100Mi 
     ports: 
     - containerPort: 80 

उपयोग मामला विशिष्ट छवि संस्करण लॉन्च करना है जो कुबेरनेट स्तर पर सेट है, और यह कि सर्वर को सर्वर पर कुबेरनेट द्वारा परिवर्तनीय हल किया जाता है।

धन्यवाद और सादर, रवि

उत्तर

3

k8s प्रकट फ़ाइलों स्थिर YAML/json हैं।

आप प्रकट होता है टेम्पलेट (और एक बंडल की तरह फैशन में एक से अधिक संसाधनों का प्रबंधन) चाहते हैं, तो मैं दृढ़ता से सुझाव है कि आप मैं हाल ही में बना लिया है a Workshop which focuses precisely on the "Templating" features of HelmHelm

पर एक नजर है करने के लिए।

हेलम सिर्फ templating से बहुत कुछ करता है, यह कुबेरनेट अनुप्रयोगों (लगता है Apt/Yum/Homebrew) के लिए एक पूर्ण पैकेज पैकेज प्रबंधक के रूप में बनाया गया है। मैं काटने की सलाह देते हैं -

तुम सब कुछ ग्राहक के पक्ष को संभालने के लिए चाहते हैं, हालांकि, कुछ बिंदु पर, आप पतवार की अन्य सुविधाओं की आवश्यकता होगी और एक प्रवास की आवश्यकता होगी कि समय आता है जब https://github.com/errordeveloper/kubegen

पर एक नजर है बुलेट और हेलम के लिए सीधे जा रहा है।

+0

दूसरा विकल्प मौजूदा तैनाती पर छवि टैग सेट करने के लिए 'क्यूबक्टल सेट' कमांड का उपयोग करना है (जो एक रोलिंग अपडेट ट्रिगर करने के लिए सीआई/सीडी पाइपलाइन का हिस्सा हो सकता है) - हालांकि, यहां सवाल विशेष रूप से टेम्पलेट था प्रकट होता है। –

+0

हाइपोटेटिकल उपयोग-केस इसे और स्पष्ट करने के लिए। कहें, मेरे पास एक नोटबुकलाउचर सेवा है जो ज़ेप्पेलिन नोटबुक कंटेनर लॉन्च कर रही है अब लॉन्चर सेवा में ... ज़ेप्पेलिन छवि संस्करण को लॉन्च करने या 'नवीनतम' पर टैग करने के लिए हार्ड कोडिंग नहीं करना, अगर गतिशील रूप से कोई तरीका था एक configMap का उपयोग कर zeppelin.image.version में पंप .... यह नाखुश होगा। मैंने इस दृष्टिकोण की कोशिश की .... स्पष्ट रूप से काम नहीं किया। फिर से, छवि संस्करण को ki i.e. के सर्वर पक्ष द्वारा पता लगाया जाना चाहिए जब yaml को पढ़ना/पार्स करना .... हेलम या अन्य बैश टेम्पलटर क्लाइंट साइड पर ऐसा करते हैं। – user1543211

+0

एक काल्पनिक उपयोग के मामले के बजाय, एक व्यावहारिक उदाहरण से जुड़ी कार्यशाला के माध्यम से चलाएं और मुझे यह बताएं कि यह अभी भी अस्पष्ट है? –

1

हाल ही में इसे देखने के बाद हमने बस sed के साथ जाने का फैसला किया। kubectl apply को एक छोटी बैश स्क्रिप्ट में लपेटें और आवेदन करने से पहले प्लेसहोल्डर्स को प्रतिस्थापित करें।

हमने अधिक परिष्कृत टूलींग में देखा लेकिन हमें केवल हेलम मिला। हालांकि हेलम प्रौद्योगिकी का एक जटिल टुकड़ा है जो सिर्फ templating से अधिक तरीका है। यह आपके वर्कफ़्लो को बहुत बदलता है क्योंकि आप अब कुबेक्टल का उपयोग करके तैनात नहीं होते हैं और अपने पैकेज को धक्का देने के लिए एक हेलमैन पैकेज रेपो करना पड़ता है। हमारा मूल्यांकन यह था कि हेलम हमारे आवेदन को तैनात करने के लिए उपयोगी नहीं है और केवल टेम्पलेटिंग के लिए इसका उपयोग करना अधिक है।

+1

हेलम पैकेज रिपोज़ आवश्यक नहीं हैं । हम मेकफाइल से 'sed' और' kubectl पैच परिनियोजन के साथ चले गए ...'एक फ्लास्क आरईएसटी एपीआई जिसने जिन्जा 2 टेम्पलेट्स और इन-क्लस्टर सेवा खातों का उपयोग किया है, को तैनात करने के लिए ... जब हम पूर्ण हेलम गए तो हमने कभी पीछे नहीं देखा - खुद को परेशानी बचाएं और इसे आज़माएं। –

+0

पीएस: अधिक आम है बजाय सिगिल का उपयोग करना –

संबंधित मुद्दे