আমি একটি একক ফাইল মাউন্ট করতে গোপনীয়তা ব্যবহার করার কথা ভাবছিলাম তবে মনে হয় আপনি কেবল ডিরেক্টরিটি মাউন্ট করতে পারেন যা অন্য সমস্ত সামগ্রীকে ওভাররাইট করে। ডিরেক্টরি মাউন্ট না করে আমি কীভাবে একটি একক কনফিগারেশন ফাইলটি ভাগ করতে পারি?
উত্তর:
উদাহরণস্বরূপ আপনার একটি কনফিগারেশন রয়েছে যাতে 2 টি কনফিগারেশন ফাইল রয়েছে:
kubectl create configmap config --from-file <file1> --from-file <file2>
আপনি বিদ্যমান ডিরেক্টরিতে একক ফাইল মাউন্ট করতে এই জাতীয় সাবপথ ব্যবহার করতে পারেন:
---
volumeMounts:
- name: "config"
mountPath: "/<existing folder>/<file1>"
subPath: "<file1>"
- name: "config"
mountPath: "/<existing folder>/<file2>"
subPath: "<file2>"
restartPolicy: Always
volumes:
- name: "config"
configMap:
name: "config"
---
এখানে সম্পূর্ণ উদাহরণ
আমি এখানে থেকে এই কাজের উদাহরণ দিয়ে শুরু করব । আপনি কমপক্ষে কুবেরনেটস ১.৩ ব্যবহার করছেন তা নিশ্চিত করুন।
কেবল এটির মতো একটি কনফিগার ম্যাপ তৈরি করুন:
apiVersion: v1
kind: ConfigMap
metadata:
name: test-pd-plus-cfgmap
data:
file-from-cfgmap: file data
এবং তারপরে একটি পড তৈরি করুন:
apiVersion: v1
kind: Pod
metadata:
name: test-pd-plus-cfgmap
spec:
containers:
- image: ubuntu
name: bash
stdin: true
stdinOnce: true
tty: true
volumeMounts:
- mountPath: /mnt
name: pd
- mountPath: /mnt/file-from-cfgmap
name: cfgmap
subPath: file-from-cfgmap
volumes:
- name: pd
gcePersistentDisk:
pdName: testdisk
- name: cfgmap
configMap:
name: test-pd-plus-cfgmap
বর্তমানে (v1.0, v1.1) একক কনফিগারেশন ফাইলের ভলিউমের কোনও উপায় নেই। সিক্রেট স্ট্রাকচার প্রাকৃতিকভাবে একাধিক গোপনীয়তার প্রতিনিধিত্ব করতে সক্ষম, যার অর্থ এটি অবশ্যই একটি ডিরেক্টরি হতে হবে।
যখন আমরা কনফিগার অবজেক্টগুলি পাই, একক ফাইলগুলি সমর্থন করা উচিত।
মাঝামাঝি সময়ে আপনি একটি ডিরেক্টরি মাউন্ট করতে পারেন এবং আপনার চিত্র থেকে এটিতে সিমিলিংক করতে পারেন, সম্ভবত?
বলুন আপনি লগিং বাড়ানোর জন্য একটি চলমান মোতায়েনের জন্য একটি নতুন লগ 4j2.xML মাউন্ট করতে চান Le
# Variables
k8s_namespace=xcs
deployment_name=orders-service
container_name=orders-service
container_working_dir=/opt/orders-service
# Create config map and patch deployment
kubectl -n ${k8s_namespace} create cm log4j \
--from-file=log4j2.xml=./log4j2.xml
kubectl -n ${k8s_namespace} patch deployment ${deployment_name} \
-p '{"spec":{"template":{"spec":{"volumes":[{"configMap":{"defaultMode": 420,"name": "log4j"},"name": "log4j"}]}}}}'
kubectl -n ${k8s_namespace} patch deployment ${deployment_name} \
-p '{"spec":{"template":{"spec":{"containers":[{"name": "'${container_name}'","volumeMounts": [{ "mountPath": "'${container_working_dir}'/log4j2.xml","name": "log4j","subPath": "log4j2.xml"}]}]}}}}'