بسیاری از برنامه ها با استفاده از برخی از ترکیبات پرونده های پیکربندی ، آرگومان های خط فرمان و متغیرهای محیط نیاز به پیکربندی دارند. این مصنوعات پیکربندی باید از محتوای تصویر جدا شوند تا برنامه های کانتینر شده قابل حمل باشند.
شیء ConfigMap مکانیسم هایی را برای تزریق ظروف به داده های پیکربندی در حالی که ظروف آگنوستیک از بستر کانتینر OpenShift را فراهم می کند ، فراهم می کند. از پیکربندی می توان برای ذخیره اطلاعات ریز و درشت مانند خصوصیات فردی یا اطلاعات درشت دانه مانند کل پرونده های پیکربندی یا حباب های JSON استفاده کرد.
Object ConfigMap API دارای جفت های ارزش کلیدی داده های پیکربندی است که می توانند در غلاف ها مصرف شوند یا برای ذخیره داده های پیکربندی برای اجزای سیستم مانند کنترل کننده ها استفاده می شوند. ConfigMap شبیه به اسرار است ، اما برای پشتیبانی راحت تر از کار با رشته هایی که حاوی اطلاعات حساس نیستند ، طراحی شده است.
تعریف شیء پیکربندی
نوع: نقشه پیکربندی سر و صدا: v1 ابرداده: رفیق: 2016-02-18T19: 14: 38Z نام: نمونه نام: پیش فرض داده ها:(1)مثال.: سلام مثال. property. 2: جهان مثال. property. file: |- ویژگی . 1 = ارزش 1 ویژگی . 2 = ارز ش-2 ویژگی . 3 = ارز ش-3 باینری: بار: l3jvb3qvmtaw(2)
| 1 | حاوی داده های پیکربندی است. |
| 2 | به پرونده ای که حاوی داده های غیر UTF8 است ، به عنوان مثال ، یک فایل keystore باینری جاوا اشاره می کند. مسیر پرونده را در پایه 64 وارد کنید. |
هنگام ایجاد یک پیکربندی از یک پرونده ، می توانید از قسمت binarydata استفاده کنید.
داده های پیکربندی را می توان به روش های مختلف در غلاف ها مصرف کرد. از پیکربندی می توان استفاده کرد:
- مقدار متغیرهای محیط را جمع کنید.
- آرگومان های خط فرمان را در یک ظرف تنظیم کنید.
- فایلهای پیکربندی را در یک جلد جمع کنید.
کاربران و مؤلفه های سیستم ممکن است داده های پیکربندی را در یک پیکربندی ذخیره کنند.
ایجاد نقشه های پیکربندی
شما می توانید از دستور زیر استفاده کنید تا به راحتی از دایرکتوری ها ، پرونده های خاص یا مقادیر تحت اللفظی یک پیکربندی به راحتی ایجاد کنید:
$ oc ایجاد پیکربندی [گزینه ها]
بخش های زیر روش های مختلفی را که می توانید یک پیکربندی ایجاد کنید ، پوشش می دهد.
ایجاد از دایرکتوری ها
یک دایرکتوری را با برخی از پرونده ها در نظر بگیرید که قبلاً حاوی داده هایی است که می خواهید یک پیکربندی را جمع کنید:
$ ls مثال بازی-پرونده ها= True Secret. Code. Lives = 30 $ CAT مثال FILES/UI. Properties Color. good = رنگ بنفش. bad = yellow alte. textmode = true how. nice. to. look = dasterynice
می توانید از دستور زیر برای ایجاد ConfigMap استفاده کنید که محتوای هر فایل را در این فهرست نگه می دارد:
$ oc ایجاد configmap game-config --from-file=example-files/
هنگامی که گزینه --from-file به یک دایرکتوری اشاره می کند، هر فایل مستقیماً در آن دایرکتوری برای پر کردن یک کلید در ConfigMap استفاده می شود، جایی که نام کلید، نام فایل و مقدار کلید محتوای آن است. پرونده.
به عنوان مثال، دستور بالا ConfigMap زیر را ایجاد می کند:
$ oc describe configmaps game-config نام: game-config فضای نام: پیش فرض برچسب ها: حاشیه نویسی: داده بازی. ویژگی ها: 121 بایت ui. properties: 83 bytes
می توانید ببینید که دو کلید در نقشه از نام فایل ها در دایرکتوری مشخص شده در دستور ایجاد شده اند. از آنجایی که محتوای آن کلیدها ممکن است بزرگ باشد، خروجی oc describe فقط نام کلیدها و اندازه آنها را نشان می دهد.
اگر می خواهید مقادیر کلیدها را ببینید، می توانید شی را با گزین ه-o دریافت کنید:
$ oc دریافت configmaps game-confi g-o yaml apiVersion: v1 data: game. properties: |- enemies=aliens lives=3 enemies. cheat=true enemies. cheat. level=noGoodRotten secret. code. passphrase=UUDDLRLRBAS secret. code. allow=true secret. code. lives=30 ui. properties: |color. good=بنفش color. bad=زرد allow. textmode=true how. nice. to. look=fairlyنوع خوب: فراداده ConfigMap: createTimestamp: 2016-02-18T18:34:05Z نام: فضای نام game-config: منبع پیش فرض نسخه:"407"- selflink: /api/v1/namespace/default/configmaps/game-config uid: 30944725-d66e-11e5-8cd0-68f728db1985
ایجاد از فایل ها
شما همچنین می توانید گزینه --from-file را با یک فایل خاص ارسال کنید و چندین بار آن را به CLI ارسال کنید. موارد زیر نتایجی معادل با مثال Creating from Directories به دست می دهد:
اگر یک نقشه پیکربندی از یک فایل ایجاد کنید، می توانید فایل های حاوی داده های غیر UTF8 را در این فیلد جدید قرار دهید بدون اینکه داده های غیر UTF8 خراب شوند. OpenShift Container Platform فایل های باینری را شناسایی می کند و به صورت شفاف فایل را به عنوان MIME رمزگذاری می کند. در سرور، محموله MIME بدون آسیب رساندن به داده ها رمزگشایی و ذخیره می شود.
- ConfigMap را با مشخص کردن یک فایل خاص ایجاد کنید:
$ oc ایجاد configmap game-config-2 --from-file=example-files/game. properties --from-file=example-files/ui. properties
$ oc get configMaps game-config- 2-o yaml apiversion: v1 data: game. properties: |-دشمنان = زندگی بیگانگان = 3 دشمن. Code. Allowed = True Secret. code. Lives = 30 Ui. properties: |color. good = رنگ بنفش. bad = yellow alte. textmode = true how. nice. to. look = farilynice نوع: configMap metadata: creationTimestamp: 2016-02-18T18: 52: 05Z نام: بازی-config-2 نامResourceVersion: "516" selpink:/api/v1/namespaces/default/configmaps/game-config-2 uid: B4952DC3-D670-11E5-8CD0-68F728DB1985
همچنین می توانید با عبور از یک عبارت از کلید = مقدار ، کلید استفاده را برای یک فایل جداگانه با گزینه-از فروم تنظیم کنید. مثلا:
- پیکربندی را مشخص کنید که یک جفت ارزش کلید را مشخص کنید:
$ OC ایجاد ConfigMap Game-Config-3 --از-File = بازی-تخصص-کلید = مثال-فایلز/بازی.
$ get configMaps game-config- 3-o yaml apiversion: v1 data: que-scial-key: |-دشمنان = زندگی بیگانگان = 3 دشمن. Secret. Code. Laowed = True Secret. Code. Lives = 30 نوع: ConfigMap ابرداده: CreationTimestamp: 2016-02-18T18: 54: 22Z نام: فضای نام بازی-config-3: منبع پیش فرض: "530" selook: /api /api /V1/Namespaces/Default/ConfigMaps/Game-Config-3 UID: 05F8DA22-D671-11E5-8CD0-68F728DB1985
ایجاد از مقادیر تحت اللفظی
همچنین می توانید مقادیر تحت اللفظی را برای یک پیکربندی تهیه کنید. گزینه-فروم لیترال یک نحو کلید = مقدار را می گیرد که اجازه می دهد تا مقادیر تحت اللفظی مستقیماً در خط فرمان تهیه شود:
- پیکربندی را مشخص کنید که یک مقدار تحت اللفظی را مشخص کنید:
$ OC ایجاد ConfigMap Special-Config -from-literal = Special. how = بسیار -از-from-literal = Special. Type = Charm
$ oc get configMaps ویژه-confi g-o yaml apiversion: v1 data: special. how: tead special. Type: ConfigMap metadata: creationTimestamp: 2016-02-18T19: 14: 38Z نام: نام های ویژه-کنترل: منابع پیش فرض: "651" خود لینک:/api/v1/namespaces/default/configMaps/ویژه-config uid: DADCE046-D673-11E5-8CD0-68F728DB1985
استفاده از موارد: مصرف نقشه های پیکربندی در غلاف
در بخش های زیر مواردی از مواردی استفاده می کند که هنگام مصرف اشیاء پیکربندی در غلاف ها استفاده می شود.
مصرف در متغیرهای محیط
از پیکربندی ها می توان برای جمع آوری متغیرهای محیط فردی استفاده کرد یا می تواند متغیرهای محیط را از تمام کلیدهایی که اسامی متغیر محیط معتبر را تشکیل می دهند ، جمع کند. به عنوان نمونه ، پیکربندی های زیر را در نظر بگیرید:
پیکربندی با دو متغیر محیط
سر و صدا: v1 نوع: نقشه پیکربندی ابرداده: نام: با همبستگی ویژه(1)نام: پیش فرض داده ها: خاص. چگونه: خیلی(2)نوع خاص: افسون(2)
| 1 | نام پیکربندی. |
| 2 | متغیرهای محیط برای تزریق. |
پیکربندی با یک متغیر یک محیط
سر و صدا: v1 نوع: نقشه پیکربندی ابرداده: نام: env(1)نام: پیش فرض داده ها: log_level: اطلاعات(2)
| 1 | نام پیکربندی. |
| 2 | متغیر محیط برای تزریق. |
شما می توانید با استفاده از بخش های ConfigMapkeyRef ، کلیدهای این پیکربندی را در یک غلاف مصرف کنید:
نمونه مشخصات غلاف پیکربندی شده برای تزریق متغیرهای محیط خاص
سر و صدا: v1 نوع: غلاف ابرداده: نام: غلتک نشان: ظروف: - نام: تست تصویر: gcr. io/google_containers/busybox فرمان: [ "/سطل/sh ", "-C ", "env " ] با توجه به:(1)- نام: special_level_key ارزش: configmapkeyref: نام: با همبستگی ویژه(2)کلید: خاص. چگونه(3)- نام: special_type_key ارزش: configmapkeyref: نام: با همبستگی ویژه(2)کلید: نوع خاص(3)اختیاری: درست است، واقعی(4)حکایت کردن:(5)- پیکربندی: نام: env(6)راه اندازی مجدد: هرگز
| 1 | تنگی برای کشیدن متغیرهای محیط مشخص از یک پیکربندی. |
| 2 | نام پیکربندی برای کشیدن متغیرهای محیط خاص از. |
| 3 | متغیر محیط برای کشیدن از پیکربندی. |
| 4 | متغیر محیط را اختیاری می کند. به عنوان اختیاری ، غلاف حتی اگر پیکربندی و کلیدهای مشخص شده وجود نداشته باشد ، شروع می شود. |
| 5 | Stanza برای کشیدن تمام متغیرهای محیط از یک پیکربندی. |
| 6 | نام پیکربندی برای کشیدن تمام متغیرهای محیط. |
هنگامی که این غلاف اجرا می شود ، خروجی آن خطوط زیر را شامل می شود:
Special_Level_Key = خیلی log_level = اطلاعات
تنظیم آرگومان های خط فرمان
همچنین می توان از ConfigMap برای تنظیم مقدار دستور یا آرگومان ها در یک ظرف استفاده کرد. این کار با استفاده از نحو جایگزینی Kubeetes $ (var_name) انجام می شود. پیکربندی های زیر را در نظر بگیرید:
سر و صدا: v1 نوع: نقشه پیکربندی ابرداده: نام: با همبستگی ویژه نام: پیش فرض داده ها: خاص. چگونه: خیلی نوع خاص: افسون
برای تزریق مقادیر به خط فرمان ، باید کلیدهایی را که می خواهید از آنها به عنوان متغیرهای محیط استفاده کنید ، مصرف کنید ، همانطور که در مورد استفاده از متغیرهای محیط استفاده می شود. سپس می توانید با استفاده از نحو $ (var_name) به دستور یک ظرف به آنها مراجعه کنید.
نمونه مشخصات غلاف پیکربندی شده برای تزریق متغیرهای محیط خاص
apiversion: v1 kind: pod metadata: نام: dapi-test-pod مشخصات: کانتینرها:-نام: تست- container تصویر: gcr. io/google_containers/busybox: ["/bin/sh" ، "-c" ، "echo $ (special_level_key) $ (special_type_key) "] env: - name: special_level_key مقدار: configmapkeyref: name: specia l-config key: special. how - name: special_type_key مقدار ارزش: configMapkeyRef: نام: کلید ویژه: ویژه: ویژه.: هرگز
با اجرای این غلاف ، خروجی از ظرف تست-کانتینر خواهد بود:
بسیار جذاب
مصرف در حجم
یک پیکربندی پیکربندی نیز می تواند در حجم مصرف شود. بازگشت دوباره به مثال زیر پیکربندی:
سر و صدا: v1 نوع: نقشه پیکربندی ابرداده: نام: با همبستگی ویژه نام: پیش فرض داده ها: خاص. چگونه: خیلی نوع خاص: افسون
شما چند گزینه مختلف برای مصرف این پیکربندی در یک جلد دارید. ابتدایی ترین راه جمع آوری حجم با پرونده هایی است که کلید نام پرونده و محتوای فایل مقدار کلید است:
سر و صدا: v1 نوع: غلاف ابرداده: نام: غلتک نشان: ظروف: - نام: تست تصویر: gcr. io/google_containers/busybox فرمان: [ "/سطل/sh ", "گربه, "/etc/config/special. how " ] حجم حجم: - نام: حجم پیکربندی مسخره: /و غیره/پیکربندی حجم: - نام: حجم پیکربندی نقشه پیکربندی: نام: با همبستگی ویژه راه اندازی مجدد: هرگز
وقتی این غلاف اجرا شود ، خروجی خواهد بود:
خیلی
همچنین می توانید مسیرهای موجود در حجم را که کلیدهای پیکربندی پیش بینی شده است کنترل کنید:
سر و صدا: v1 نوع: غلاف ابرداده: نام: غلتک نشان: ظروف: - نام: تست تصویر: gcr. io/google_containers/busybox فرمان: [ "/سطل/sh ", "گربه, "/و غیره/پیکربندی/مسیر/به/کلید ویژه " ] حجم حجم: - نام: حجم پیکربندی مسخره: /و غیره/پیکربندی حجم: - نام: حجم پیکربندی نقشه پیکربندی: نام: با همبستگی ویژه موارد: - کلید: خاص. چگونه مسیر: مسیر/به/کلید ویژه راه اندازی مجدد: هرگز
وقتی این غلاف اجرا شود ، خروجی خواهد بود:
خیلی
مثال: پیکربندی redis
برای یک مثال در دنیای واقعی ، می توانید Redis را با استفاده از یک پیکربندی پیکربندی کنید. برای تزریق Redis با پیکربندی توصیه شده برای استفاده از Redis به عنوان حافظه نهان ، پرونده پیکربندی Redis باید شامل موارد زیر باشد:
MaxMemory 2MB MaxMemory-Policy Allkeys-Lru
اگر پرونده پیکربندی شما در مثال Files/Redis/Redis-Config قرار دارد ، یک پیکربندی با آن ایجاد کنید:
- پیکربندی را مشخص کنید که فایل پیکربندی را مشخص کنید:
$ OC ایجاد ConfigMap مثال-redis-config --from-file = نمونه-پرونده/redis/redis-config
$ oc دریافت configmap example-redis-confi g-o yaml apiVersion: v1 data: redis-config: |maxmemory 2mb maxmemory-policy allkeys-lru نوع: ConfigMap ابرداده: creationTimestamp: 2016-04-06T05:53:07Z نام: example-redis-config فضای نام: منبع پیش فرض نسخه: "2985" selflink: /api/v1de/nameconfigmaps/example-redis-config uid: d65739c1-fbbb-11e5-8a72-68f728db1985
اکنون، یک pod ایجاد کنید که از این ConfigMap استفاده می کند:
- یک تعریف pod مانند زیر ایجاد کنید و آن را در یک فایل ذخیره کنید، به عنوان مثال redis-pod. yaml:
سر و صدا: v1 نوع: غلاف ابرداده: نام: redis نشان: ظروف: - نام: redis تصویر: kubeetes/redis:v1 با توجه به: - نام: استاد ارزش: "درست است، واقعی" پورت ها: - کانتینر پورت: 6379 منابع: محدودیت ها: cpu: "0. 1 اینچ حجم حجم: - مسخره: /redis-master-data نام: داده ها - مسخره: /redis-master نام: پیکربندی حجم: - نام: داده ها valaDir: <> - نام: پیکربندی نقشه پیکربندی: نام: example-redis-config موارد: - کلید: redis-config مسیر: redis. conf
$ oc ایجا د-f redis-pod. yaml
غلاف تازه ایجاد شده دارای یک حجم ConfigMap است که کلید redis-config نمونه-redis-config ConfigMap را در فایلی به نام redis. conf قرار می دهد. این حجم در پوشه /redis-master در ظرف Redis نصب می شود و فایل پیکربندی ما را در /redis-master/redis. conf قرار می دهد، جایی که تصویر به دنبال فایل پیکربندی Redis برای اصلی می گردد.
اگر exec را در این pod وارد کنید و ابزار redis-cli را اجرا کنید، می توانید بررسی کنید که پیکربندی به درستی اعمال شده است:
$ oc exec -it redis redis-cli 127.0.0.1:6379> CONFIG GET maxmemory 1) "maxmemory" 2) "2097152" 127.0.0.1:6379>CONFIG GET maxmemory-policy 1) "maxmemory-policy" 2) "allkeys-lru"
محدودیت های
یک ConfigMap باید قبل از مصرف در پادها ایجاد شود. کنترلرها را می توان به گونه ای نوشت که داده های پیکربندی گم شده را تحمل کنند. با اجزای جداگانه پیکربندی شده از طریق ConfigMap به صورت موردی مشورت کنید.
اشیاء ConfigMap در یک پروژه قرار دارند. آنها فقط می توانند توسط pods در همان پروژه ارجاع داده شوند.
Kubelet فقط استفاده از ConfigMap را برای پادهایی که از سرور API دریافت می کند پشتیبانی می کند. این شامل هر غلاف ایجاد شده با استفاده از CLI یا به طور غیرمستقیم از یک کنترل کننده تکرار می شود. شامل پادهای ایجاد شده با استفاده از پرچم --manifest-url گره OpenShift Container Container، پرچم --config یا REST API آن نمی شود (اینها روش های معمولی برای ایجاد غلاف نیستند).
استراتژی ترید...
ما را در سایت استراتژی ترید دنبال می کنید
برچسب :
نویسنده : مرجان شیرمحمدی
بازدید : 31
تاريخ : پنجشنبه
9 شهريور
1402 ساعت: 22:31