Configs in Swarm (সোয়ার্ম কনফিগারেশন)
অ্যাপ্লিকেশনের সেনসিটিভ ডেটার জন্য আমরা 'Secrets' ব্যবহার করি, কিন্তু নন-সেনসিটিভ কনফিগারেশন যেমন nginx.conf, প্রোপ্রার্টি ফাইল বা অ্যাপ্লিকেশন সেটিংস ম্যানেজ করার জন্য ডকার সোয়ার্ম 'Configs' ফিচার প্রদান করে।
১. কনফিগ কি? (What is Config?)
কনফিগও সিক্রেটের মতোই সোয়ার্ম অবজেক্ট, তবে পার্থক্য হলো এটি এনক্রিপ্টেড থাকে না। এটি ব্যবহার করে আপনি অ্যাপ্লিকেশনের কনফিগারেশন ফাইলগুলোকে ইমেজ থেকে আলাদা রাখতে পারেন।
- Non-sensitive: শুধুমাত্র সাধারণ টেক্সট বা ফাইল ডেটার জন্য ব্যবহার্য।
- Decentralized: ক্লাস্টারের যেকোনো নোডে সার্ভিস রান করার সময় কনফিগ ফাইলটি সেখানে মাউন্ট হয়।
২. কনফিগ তৈরি এবং ব্যবহার (Create & Use)
কনফিগ তৈরি করা:
সাধারণত কোনো ফাইল থেকে কনফিগ তৈরি করা হয়:
bash
docker config create nginx_config nginx.confসার্ভিসে কনফিগ যুক্ত করা:
সার্ভিস তৈরি করার সময় --config ফ্ল্যাগ ব্যবহার করুন:
bash
docker service create \
--name web-server \
--config source=nginx_config,target=/etc/nginx/nginx.conf \
nginxএখানে target হলো কন্টেইনারের ভেতরে যেখানে ফাইলটি থাকবে।
৩. কনফিগ আপডেট করা (Config Updates)
ডকার সোয়ার্মে কনফিগ অবজেক্ট এডিট করা যায় না। আপনাকে নতুন ভার্সন তৈরি করে সার্ভিস আপডেট করতে হয়।
bash
# ১. নতুন কনফিগ তৈরি করুন
docker config create nginx_config_v2 nginx_v2.conf
# ২. সার্ভিস আপডেট করুন
docker service update --config-rm nginx_config --config-add source=nginx_config_v2,target=/etc/nginx/nginx.conf web-server৪. Config vs Secrets
| বৈশিষ্ট্য | Secrets | Configs |
|---|---|---|
| সিকিউরিটি | এনক্রিপ্টেড থাকে। | এনক্রিপ্টেড থাকে না। |
| ডেটা টাইপ | পাসওয়ার্ড, কি, সার্টিফিকেট। | কনফিগারেশন ফাইল, সেটিংস। |
| স্টোরেজ | কন্টেইনারের মেমোরিতে (tmpfs) থাকে। | কন্টেইনারের ফাইলসিস্টেমে মাউন্ট হয়। |
| অ্যাক্সেস | শুধুমাত্র অনুমোদিত সার্ভিস দেখতে পায়। | সার্ভিস লেভেলে পারমিশন থাকে। |
৫. সোয়ার্ম স্ট্যাক (Stack) ফাইলে ব্যবহার
yaml
version: "3.8"
services:
web:
image: nginx:latest
configs:
- source: my_config
target: /etc/nginx/nginx.conf
configs:
my_config:
external: true৬. কনফিগ ব্যবহারের সুবিধা
- Separation of Concerns: অ্যাপ্লিকেশনের কোড এবং তার কনফিগারেশন আলাদা রাখা যায়।
- Environment Management: ইমেজ পরিবর্তন না করেই বিভিন্ন এনভায়রনমেন্টের (Dev/Prod) জন্য আলাদা কনফিগ ফাইল ব্যবহার করা সহজ হয়।
- Immutability: যেহেতু কনফিগ এডিট করা যায় না, তাই ভার্সন কন্ট্রোল করা সুবিধা হয়।