एक झुंड क्लस्टर के बिना डॉकर्स रहस्यों का उपयोग कैसे करें?


29

वर्तमान में हम एक एकल डॉकटर कंटेनर पर एक रनिंग एप्लिकेशन को इम्प्लीमेंट करते हैं, एप्लिकेशन को सभी प्रकार के संवेदनशील डेटा की आवश्यकता होती है, जिसे वातावरण चर के रूप में पारित किया जाता है,

Im रन कमांड पर रख रहे हैं ताकि वे छवि में और फिर एक रिपॉजिटरी पर समाप्त न हों, लेकिन मैं एक बहुत ही गैर-सुरक्षित रन कमांड के साथ समाप्त करता हूं,

अब, मैं समझता हूं कि डॉक सीक्रेट्स मौजूद हैं, फिर भी, मैं उन्हें क्लस्टर तैनात किए बिना कैसे उपयोग कर सकता हूं? या इस डेटा को सुरक्षित करने का कोई और तरीका है?

सादर,


जवाबों:


6

आप नहीं कर सकते ... यह झुंड के बिना रहस्यों का समर्थन नहीं करता है। जब तक केवल एक नोड का उपयोग करके '' आप '' 'झुंड' 'हो सकते हैं।

अन्य समाधान यह होगा, मुझे लगता है कि इस तरह एक तीसरे पक्ष की तिजोरी सॉफ्टवेयर का उपयोग करें:

https://www.vaultproject.io/

लेकिन फिर, वॉल्ट से अपने कंटेनरों में रहस्यों का उपयोग करने के लिए, आपको डॉक्टर को पढ़ना होगा।

आशा है कि यह आपको शुरू करने के लिए सही रास्ते पर लाएगा।


वास्तव में मुझे केवल कंटेनर बनाते समय इन रहस्यों को इंजेक्ट करने की आवश्यकता होती है, उन्हें वास्तव में चलने वाले कंटेनरों के अंदर "गुप्त" रहने की आवश्यकता नहीं होती है, इसलिए मुझे लगता है कि यह मेजबान के लिए समझ में आने और रहस्यों का उपयोग करने में सक्षम होगा। docker run कमांड, मुझे लगता है कि मैं स्क्रिप्ट को रिप्लेस के एक गुच्छा के साथ लिख सकता हूं और वॉल्ट को कॉल कर सकता हूं।
जुआन सेबेस्टियन

@JuanSebastian आपको उस उपयोग के मामले के लिए डोकर 'बिल्ड-आर्ग' की जाँच करनी चाहिए।
user23390

@JuanSebastian मैं गलत हो सकता हूं, लेकिन स्थानीय ईएनवी प्राप्त करने से आपको यह पता चलेगा कि बिल्ड-आर्ग्स के अंदर क्या है .... निश्चित नहीं .....
उपज

build-argsअंतिम छवि में शामिल नहीं हैं, लेकिन केवल छवि निर्माण के समय तक ही पहुँचा जा सकता है। एक उपयुक्त समाधान यह है कि होस्ट पर फ़ाइलों के लिए रहस्य लिखना (उचित अनुमतियों के साथ, निश्चित रूप से) फिर वॉल्यूम उन्हें अपने डॉक कंटेनर में माउंट करें। कंटेनर के अंदर आपका एप्लिकेशन तब उन फ़ाइलों के रहस्यों को पढ़ सकता है
ब्रैंडन

22

हाँ , आप रहस्यों का उपयोग आप एक का उपयोग करता है, तो कर सकते हैं तो लिखें फ़ाइल । (आप एक झुंड चलाने की जरूरत नहीं है)।

आप डॉक-कंपोज के साथ एक कंपोज फाइल का उपयोग करते हैं : डॉकटर-कंपोज.माइल फाइल में "सीक्रेट्स" के लिए डॉक्यूमेंटेशन होता है ।

मैंने डॉकटर-कम्पोज़ करने के लिए स्विच किया क्योंकि मैं रहस्यों का उपयोग करना चाहता था। मुझे खुशी है कि मैंने किया, यह बहुत अधिक साफ लगता है। प्रत्येक सेवा कंटेनर में मैप करती है। और अगर आप कभी इसके बजाय एक झुंड को चलाने के लिए स्विच करना चाहते हैं, तो आप मूल रूप से पहले से ही हैं।

नोट: राज़ कंटेनर के वातावरण में लोड नहीं होते हैं, वे / रन / सीक्रेट्स / पर चढ़े होते हैं

यहाँ एक उदाहरण है:

1) परियोजना संरचना:

|
|---    docker-compose.yml
|---    super_duper_secret.txt

2) docker-compose.yml सामग्री:

version: "3.6"

services:

  my_service:
    image: centos:7
    entrypoint: "cat /run/secrets/my_secret"
    secrets:
      - my_secret

secrets:
  my_secret:
    file: ./super_duper_secret.txt

3) super_duper_secret.txt सामग्री:

Whatever you want to write for a secret really.

4) इस कमांड को प्रोजेक्ट के रूट से यह देखने के लिए चलाएं कि कंटेनर में आपके रहस्य तक पहुंच है, (डॉकर को चलना चाहिए और डॉकटर-कंपोज़ स्थापित होना चाहिए):

docker-compose up --build my_service

आपको अपने कंटेनर आउटपुट को अपने रहस्य को देखना चाहिए।


क्या आप docker-composeएक रहस्य का उपयोग करने का एक कार्य उदाहरण दिखा सकते हैं ? प्रलेखन और कार्यान्वयन की मेरी समझ से संकेत मिलता है कि कंटेनर में रहस्य को कॉन्फ़िगर नहीं किया जाएगा।
BMitch

2
डॉकर रहस्य केवल झुंड सेवाओं के लिए उपलब्ध हैं, स्टैंडअलोन कंटेनरों के लिए नहीं। इस सुविधा का उपयोग करने के लिए, अपने कंटेनर को सेवा के रूप में चलाने के लिए अपनाने पर विचार करें। स्टेटफुल कंटेनर आमतौर पर कंटेनर कोड को बदले बिना 1 के पैमाने के साथ चल सकते हैं। डॉकटर
एल्विन केसलर

@BMitch ने एक उदाहरण जोड़ा। आशा है कि यह आपकी मदद करता है! (जब से मैंने डॉकटर के साथ काम किया है तब से थोड़ी देर हो गई है और मेरा वातावरण काफी कुछ और चल रहा है ... लेकिन मुझे यह काम करना चाहिए। कृपया मुझे बताएं कि क्या मुझे कुछ याद आया है!)
लिंडसे-नीड्स-स्लीप

मैं एक झुंड ( docker-compose.ymlएक नोड पर) के बिना अपनी सेवाओं पर इसे दोहरा नहीं सकता ; जब मैं कंटेनर को शुरू करता हूं तो उसमें /runकेवल ए होता है nginx.pidऔर इसके Mountsद्वारा दिखाया नहीं जाता है docker inspect $container
जियोर्जियोसिरोनी

2
बस मैंने सोचा कि मैं पीआर से लिंक करूंगा जिसने इसे सादे डॉकटर-कम्पोज़ (झुंड के बिना) में जोड़ा। github.com/docker/compose/pull/4368 यह वास्तव में वहाँ है और कोड से ऐसा लगता है कि कंपोज़ फ़ाइल के लिए न्यूनतम संस्करण 3.1 है और एपीआई 1.13.0 है। कोड वर्तमान मास्टर ( github.com/dnephin/compose/blob/… ) में अभी भी है , इसलिए अधिकतम संस्करण की उम्मीद नहीं की जाएगी।
एसएससी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.