برنامه نویسی

روز 37: استفاده از Kustomize برای مدیریت تنظیمات Kubernetes

Summarize this content to 400 words in Persian Lang
در Kubernetes، استقرار برنامه‌ها در محیط‌های متعدد – مانند توسعه، مرحله‌بندی و تولید – اغلب به تغییراتی در پیکربندی نیاز دارد. این تغییرات می تواند منجر به تکرار و نگهداری فایل های YAML شود. وارد کنید سفارشی کردن، ابزاری است که برای ساده کردن این فرآیند با فعال کردن طراحی شده است سفارشی سازی ها بدون تغییر تنظیمات اصلی

Kustomize چیست؟

سفارشی کردن یک ابزار مدیریت پیکربندی بومی Kubernetes است که از a رویکرد اعلامی برای اعمال سفارشی سازی های خاص محیط. به جای کپی کردن فایل های YAML خود برای هر محیط، Kustomize به شما اجازه می دهد تا a را تعریف کنید پیکربندی پایه و هدفمند اعمال کنید پوشش ها برای نیازهای خاص

این تضمین می کند که تنظیمات شما خشک باقی می مانند (خودت را تکرار نکن) و قابل نگهداری است.

چرا Kustomize؟

مدیریت تغییرات خاص محیط اغلب به تغییراتی مانند موارد زیر نیاز دارد:

تنظیم تعداد ماکت برای بهینه سازی منابع.
تغییر متغیرهای محیطی برای اشکال زدایی یا تولید.
تغییر محدودیت های منابع یا انواع خدمات.

Kustomize این تغییرات را آسان و مقیاس پذیر می کند و در عین حال خطاهای ناشی از به روز رسانی دستی را کاهش می دهد.

مفاهیم کلیدی در Kustomize

پیکربندی پایه:منابع اصلی و قابل استفاده مجدد Kubernetes، قابل استفاده در همه محیط ها (به عنوان مثال، استقرار، سرویس).
پوشش:سفارشی‌سازی‌ها یا وصله‌های خاص محیط (به عنوان مثال، تغییر نسخه‌ها، انواع خدمات).
فایل شخصی سازی (kustomization.yaml):قلب Kustomize که منابع و وصله ها را اعلام می کند.

دست به کار با Kustomize

مرحله 1: پیکربندی پایه را تنظیم کنید

با تعریف منابع مشترک برای همه محیط ها شروع کنید.

ساختار پوشه:

kustomize/
└── base/
├── deployment.yaml
├── service.yaml
└── kustomization.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

deployment.yaml: یک Nginx Deployment را با 2 کپی تعریف می کند.

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
– name: nginx
image: nginx:latest

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

service.yaml: یک سرویس برای افشای برنامه Nginx ایجاد می کند.

apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
– protocol: TCP
port: 80
targetPort: 80

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

kustomization.yaml: منابع موجود در پیکربندی پایه را فهرست می کند.

resources:
– deployment.yaml
– service.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی پایه را اجرا کنید:

kubectl apply -k base/

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 2: اضافه کردن پوشش های خاص محیط

در مرحله بعد، همپوشانی های خاص محیط را ایجاد کنید (به عنوان مثال، dev و prod). هر لایه با استفاده از وصله ها، پیکربندی پایه را تغییر می دهد.

ساختار پوشه:

kustomize/
├── base/
└── overlays/
├── dev/
│ ├── kustomization.yaml
│ └── replica-count.yaml
└── prod/
├── kustomization.yaml
└── replica-count.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

replica-count.yaml (پوشش برنامه نویس): کپی ها را برای توسعه کاهش می دهد.

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

kustomization.yaml (پوشش برنامه نویس): به پایه اشاره دارد و پچ را اعمال می کند.

resources:
– ../../base
patches:
– replica-count.yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استقرار روکش توسعه دهنده:

kubectl apply -k overlays/dev/

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مرحله 3: تست روکش ها

برای تایید تغییرات:

استقرار را بررسی کنید:

kubectl get deployment nginx -o yaml

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه داشته باشید که کپی ها به پیکربندی پوشش به روز شده اند.

مقیاس‌بندی بیشتر یا اعمال وصله‌های اضافی (مثلاً محدودیت‌های منابع، متغیرهای محیطی).

فراتر رفتن از اصول

در حالی که این راهنما قابلیت های اصلی Kustomize را معرفی می کند، می توانید استفاده از آن را در سناریوهای پیچیده تر گسترش دهید:

برای قالب بندی و مدیریت بسته های پیشرفته، Kustomize را با Helm ترکیب کنید.

استفاده کنید ConfigMapGenerator یا SecretGenerator برای ConfigMaps و Secrets پویا.

برای استقرار یکپارچه با خطوط لوله CI/CD ادغام شود.

در Kubernetes، استقرار برنامه‌ها در محیط‌های متعدد – مانند توسعه، مرحله‌بندی و تولید – اغلب به تغییراتی در پیکربندی نیاز دارد. این تغییرات می تواند منجر به تکرار و نگهداری فایل های YAML شود. وارد کنید سفارشی کردن، ابزاری است که برای ساده کردن این فرآیند با فعال کردن طراحی شده است سفارشی سازی ها بدون تغییر تنظیمات اصلی


Kustomize چیست؟

سفارشی کردن یک ابزار مدیریت پیکربندی بومی Kubernetes است که از a رویکرد اعلامی برای اعمال سفارشی سازی های خاص محیط. به جای کپی کردن فایل های YAML خود برای هر محیط، Kustomize به شما اجازه می دهد تا a را تعریف کنید پیکربندی پایه و هدفمند اعمال کنید پوشش ها برای نیازهای خاص

این تضمین می کند که تنظیمات شما خشک باقی می مانند (خودت را تکرار نکن) و قابل نگهداری است.


چرا Kustomize؟

مدیریت تغییرات خاص محیط اغلب به تغییراتی مانند موارد زیر نیاز دارد:

  • تنظیم تعداد ماکت برای بهینه سازی منابع.
  • تغییر متغیرهای محیطی برای اشکال زدایی یا تولید.
  • تغییر محدودیت های منابع یا انواع خدمات.

Kustomize این تغییرات را آسان و مقیاس پذیر می کند و در عین حال خطاهای ناشی از به روز رسانی دستی را کاهش می دهد.


مفاهیم کلیدی در Kustomize

  1. پیکربندی پایه:

    منابع اصلی و قابل استفاده مجدد Kubernetes، قابل استفاده در همه محیط ها (به عنوان مثال، استقرار، سرویس).

  2. پوشش:

    سفارشی‌سازی‌ها یا وصله‌های خاص محیط (به عنوان مثال، تغییر نسخه‌ها، انواع خدمات).

  3. فایل شخصی سازی (kustomization.yaml):

    قلب Kustomize که منابع و وصله ها را اعلام می کند.


دست به کار با Kustomize

مرحله 1: پیکربندی پایه را تنظیم کنید

با تعریف منابع مشترک برای همه محیط ها شروع کنید.

ساختار پوشه:

kustomize/
└── base/
    ├── deployment.yaml
    ├── service.yaml
    └── kustomization.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • deployment.yaml: یک Nginx Deployment را با 2 کپی تعریف می کند.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • service.yaml: یک سرویس برای افشای برنامه Nginx ایجاد می کند.
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • kustomization.yaml: منابع موجود در پیکربندی پایه را فهرست می کند.
resources:
- deployment.yaml
- service.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

پیکربندی پایه را اجرا کنید:

kubectl apply -k base/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


مرحله 2: اضافه کردن پوشش های خاص محیط

در مرحله بعد، همپوشانی های خاص محیط را ایجاد کنید (به عنوان مثال، dev و prod). هر لایه با استفاده از وصله ها، پیکربندی پایه را تغییر می دهد.

ساختار پوشه:

kustomize/
├── base/
└── overlays/
    ├── dev/
    │   ├── kustomization.yaml
    │   └── replica-count.yaml
    └── prod/
        ├── kustomization.yaml
        └── replica-count.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • replica-count.yaml (پوشش برنامه نویس): کپی ها را برای توسعه کاهش می دهد.
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

  • kustomization.yaml (پوشش برنامه نویس): به پایه اشاره دارد و پچ را اعمال می کند.
resources:
- ../../base
patches:
- replica-count.yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

استقرار روکش توسعه دهنده:

kubectl apply -k overlays/dev/
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید


مرحله 3: تست روکش ها

برای تایید تغییرات:

  1. استقرار را بررسی کنید:
   kubectl get deployment nginx -o yaml
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توجه داشته باشید که کپی ها به پیکربندی پوشش به روز شده اند.

  1. مقیاس‌بندی بیشتر یا اعمال وصله‌های اضافی (مثلاً محدودیت‌های منابع، متغیرهای محیطی).

فراتر رفتن از اصول

در حالی که این راهنما قابلیت های اصلی Kustomize را معرفی می کند، می توانید استفاده از آن را در سناریوهای پیچیده تر گسترش دهید:

  • برای قالب بندی و مدیریت بسته های پیشرفته، Kustomize را با Helm ترکیب کنید.
  • استفاده کنید ConfigMapGenerator یا SecretGenerator برای ConfigMaps و Secrets پویا.
  • برای استقرار یکپارچه با خطوط لوله CI/CD ادغام شود.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا