GH GambleHub

Kubernetes: مجموعات ومخططات Helm

Kubernetes: مجموعات ومخططات Helm

1) بنية المجموعة - أعلى منظر

Control Plane: «kube-apiserver»، «etcd»، «kube-scolerer»، «kube-controller-manager»، (الجزء مخفي في السحب الخاضعة للرقابة).
العامل: "kubelet'، وقت تشغيل CRI (الحاوية/CRI-O)، ملحق CNI، kube-proxy/ebpf-proxy.
Intracluster network: Pod-to-Pod, Service-VIP/ClusterIP, DNS CoreDNS.
التخزين: سائقي CSI، توفير PVC → PV (StorageClass).
حدود الفشل: العقدة/المنطقة/المنطقة. وضع نسخ طبق الأصل حسب المنطقة (TopologySpreadRestrictions/anti-affinity).

الأدوار النموذجية

قيادة المنصة: إنشاء/ترقية المجموعات، CNI/CSI/Ingress، السياسة و GitOps.
فرق المنتجات: مخططات/إصدارات الإيداع، تتبع السياسات والموارد الأمنية.

2) دورة حياة العنقود

الإنشاء: kOps، kubeadm، Rancher، EKS/AKS/GKE. تمكين OIDC المصادقة والتدقيق على الفور.
الترقيات: الإصدارات الصغيرة بدورها (مستوى التحكم → العقد)، التي يتحكم فيها maxUnavailable، اختبارات على التدريج.
الإضافات (كلها عبر Helm/GitOps): CNI (Calico/Cilium)، سائق CSI، وحدة تحكم الدخول (NGINX/Gateway API/Contour/Traefik)، Metrics-Server، Culter-Auter، Node-Local DNS, loging/metrics/trace.
النسخ الاحتياطية: etcd shapshot (إذا تم إدارتها ذاتيًا)، Velero لمساحة الاسم/PVC.

3) الشبكات والخدمات والدخول

CNI: Calico (NetworkPolicy)، Cilium (eBPF/servicemesh- фичи).
الخدمة: "ClusterIP" و "NodePort' و" LoadBalancer "(توازن السحابة L4) و" الاسم الخارجي ".
الدخول/بوابة واجهة برمجة التطبيقات: توجيه L7، TLS، حد السعر/تاريخ WAF في المحيط.
NetworkPolicy: رفض كل شيء + السماح الصريح بمساحة الاسم/التسمية افتراضيًا.
خدمة مقطوعة الرأس («clusterIP: None») لمجموعة StatefulSet واكتشاف الخدمة.

4) التخزين (CSI) والدول

فئة التخزين: «reclaimPolicy»، «VolumeBindingMode» («WaitForFirstConsumer» للحصول على وضع أفضل).
StatefulSet: أسماء/مجلدات مستقرة ("VolumeClaimTemplates")، "PodManagementPolicy: Parallel' لإجراء فحوصات سريعة.
ReadWrite العديد: استخدم الملف الموزع (EFS/Filestore) بعناية - قم بتقييم زمن الوصول.
اللقطات: نسخ احتياطية من "VolumeSnapshotClass' + cron.

5) تعدد الحيازات والسياسة

مساحات الأسماء حسب المنتج/البيئة.
RBAC: الحد الأدنى من الأدوار، وحسابات خدمة منفصلة، و «Role »/« RoleBinding» بدلاً من «ClusterRole» حيثما أمكن ذلك.
PSA (قبول أمان Pod): أوضاع «خط الأساس »/« المقيدة» (استبدال PSP).
ResourceCuta/LimiteRange: потолки CPU/Memory/PVC/LoadBalancer.
حارس بوابة OPA/Kyverno: سياسة القبول (على سبيل المثال الحظر ": آخر"، اشتراط "الموارد"، "اقرأ OnlyRootFilesystem').
ImagePolicy/webooks: image signature review (cosign/policy-controller).

6) إمكانية الرصد والتشغيل

المقاييس: Prometheus stack، kube-state-metrics، العقدة المصدرة.
Logs: Fluent Bit/Vector → object/ES/OpenSearch, duration on nodes.
المسارات: OpenTelemetry Collector.
لوحات تحكم SLO: نموذج RED على خدمات الدخول والمفتاح.
المقياس التلقائي: HPA (حسب مقاييس التطبيق)، VPA للخلفية، Cluster-Autoscaler للعقد.

7) الأنماط الواضحة (ورقة الغش)

النشر:
yaml apiVersion: apps/v1 kind: Deployment metadata: { name: api, labels: { app: api } }
spec:
replicas: 3 strategy: { type: RollingUpdate, rollingUpdate: { maxUnavailable: 0, maxSurge: 1 } }
selector: { matchLabels: { app: api } }
template:
metadata:
labels: { app: api }
spec:
serviceAccountName: api-sa securityContext: { runAsNonRoot: true, fsGroup: 2000 }
containers:
- name: api image: registry. example. com/api:1. 2. 3 ports: [{ containerPort: 8080 }]
resources: { requests: { cpu: "200m", memory: "256Mi" }, limits: { cpu: "1", memory: "512Mi" } }
readinessProbe: { httpGet: { path: /healthz, port: 8080 }, periodSeconds: 5 }
livenessProbe: { httpGet: { path: /livez,  port: 8080 }, initialDelaySeconds: 20 }
StatefulSet (مقتطف):
yaml apiVersion: apps/v1 kind: StatefulSet metadata: { name: db }
spec:
serviceName: db replicas: 3 podManagementPolicy: Parallel selector: { matchLabels: { app: db } }
template:
metadata: { labels: { app: db } }
spec:
containers:
- name: db image: postgres:16-alpine volumeMounts: [{ name: data, mountPath: /var/lib/postgresql/data }]
volumeClaimTemplates:
- metadata: { name: data }
spec:
accessModes: ["ReadWriteOnce"]
resources: { requests: { storage: 100Gi } }
storageClassName: fast-ssd
PDB (PodDistructionBudget):
yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: { name: api-pdb }
spec:
minAvailable: 2 selector: { matchLabels: { app: api } }
الدخول (Nginx، موجز):
yaml apiVersion: networking. k8s. io/v1 kind: Ingress metadata:
name: api annotations:
nginx. ingress. kubernetes. io/proxy-read-timeout: "30"
spec:
tls: [{ hosts: ["api. example. com"], secretName: api-tls }]
rules:
- host: api. example. com http:
paths:
- path: /
pathType: Prefix backend: { service: { name: api, port: { number: 80 } } }

8) Helm v3 - الأساسيات والهيكل

الرسم البياني = قوالب + قيم + بيانات وصفية.


mychart/
Chart. yaml     # name, version (semver), type (application/library), dependencies values. yaml # default values. schema. json # (recommended) validation values templates/# .yaml. gotmpl (Deployment, Service, Ingress, …)
templates/tests/  # helm tests (smoke)
charts/# local dependencies (or OCI dependencies)
الرسم البياني. يامل (مثال):
yaml apiVersion: v2 name: api description: API service type: application version: 1. 4. 0 # chart version (semver)
appVersion: "1. 2. 3" # dependencies application version:
- name: redis version: 17. x.x repository: "oci://registry. example. com/charts"

9) قوالب هيلم - ممارسات

استخدم مساعدين في '_ مساعدين. tpl' للأسماء/التسميات/الشروح.
حدد «الموارد» و «السياق الأمني» و «الاستعداد/الحيوية» في كل مكان.
توليد العلامات وفقا لنظام موحد ('app. kubernetes. io/').
اجعل الميزات اختيارية من خلال «القيم» (الدخول/hpa/pdb/servicemonitor).
تضمين 'القيم. مخطط. جسون - توقف عن التكوينات غير الصحيحة.
للبيانات الحساسة - أسرار المشغلين الخارجيين (الأسرار الخارجية، SOPS)، وليس تخزين القيم.

مثال "_ المساعدين. (جزء):
gotmpl
{{- define "api. fullname" -}}
{{- printf "%s-%s".Chart. Name. Release. Name      trunc 63      trimSuffix "-" -}}
{{- end -}}
النشر. tpl (جزء):
gotmpl apiVersion: apps/v1 kind: Deployment metadata:
name: {{ include "api. fullname". }}
labels: {{- include "api. labels". nindent 4 }}
spec:
replicas: {{.Values. replicaCount }}
strategy:
rollingUpdate:
maxSurge: 1 maxUnavailable: 0 selector:
matchLabels: {{- include "api. selectorLabels". nindent 6 }}
template:
metadata:
labels: {{- include "api. selectorLabels". nindent 8 }}
spec:
serviceAccountName: {{ include "api. serviceAccountName". }}
securityContext: {{- toYaml. Values. podSecurityContext      nindent 8 }}
containers:
- name: {{.Chart. Name }}
image: "{{.Values. image. repository }}:{{.Values. image. tag }}"
imagePullPolicy: IfNotPresent ports: [{ containerPort: {{.Values. service. port }} }]
resources: {{- toYaml. Values. resources      nindent 10 }}
envFrom:
- secretRef: { name: {{.Values. secretsRef }} }

10) التبعيات والمستودعات و OCI

يدعم Helm v3 سجلات OCI: "oci ://registry/org/charts'.
قفل التبعية الإصدارات ('^ 1. 2. 0`, `~1. 2 ') وتشغيل «بناء التبعية للقيادة».
وقع على الرسم البياني (pom)، قم بتخزين القطع الأثرية في مستودع القطع الأثرية CI.
مخططات المكتبة: قوالب عامة (دخول/خدمة) لإعادة الاستخدام.

11) الخطافات واتفاقية حقوق الطفل ونظام العمليات

الخطافات: «التثبيت المسبق»، «ما بعد التثبيت»، «الترقية المسبقة»، «ما بعد الترقية»، «الاختبار». إضافة سياسات («قبل إنشاء الخطاف»، «نجاح الخطاف»).
CRD: ضع "crds' (ضبط على القوالب)، تجنب تحديثات CRD أثناء الطيران - هاجر بشكل منفصل.
هجرات/استهلال قاعدة البيانات - الخطاف الوظيفي مع الاستخفاف والمهل الزمنية.

12) اختبار الرسم البياني و CI

"helm lint' + التحقق من صحة المخطط.
Helm unitest (وحدة)، اختبار الرسم البياني (ct) - التجميع/التركيب العيني/minikube في CI.
لقطة اختبارات القوالب ('helm complate' → مقارنة مع قالب).
اختبارات الدخان «اختبار الدفة» (ارفع 'Pod' بالفحوصات).

13) GitOps (Argo CD/Flux)

مصدر الحقيقة هو المستودع. يتم تخزين الرسم البياني على شكل HelmRelease/HelmChart (Flux) أو Application (Argo).
سياسات الإغراق: المزامنة التلقائية مع التقليم/الشفاء الذاتي والحالات والفحوصات الصحية.
إصدارات الترويج: tag-bots/semver-range، PR-flow.
قسّم إعادة الشراء إلى تطبيقات (مخططات) و env (تجاوزات/قيم).
الإدارة السرية: SOPS (العمر/KMS)، الأسرار الخارجية.

14) السلامة: الحد الأدنى المطلوب

تم تقييد PSA: لا امتيازات، لا مسار مضيف، قدرات محدودة، أسطح للقراءة فقط.
ImagePolicy - الصور الموقعة/الموثوقة فقط.
NetworkPolicy: «مغلق افتراضيًا».
RBAC: حساب خدمة لكل تطبيق، «Role »/« RoleBinding» في مساحة الاسم.
التحكم في القبول: قواعد Gatekeeper/Kyverno (الموارد/الحدود، الملصقات، لا أحدث).
الأسرار: SOPS/الأسرار الخارجية ؛ لا تضع الأسرار في القيم/Git البسيط.

15) الأنماط المضادة

': أحدث' في الرسوم البيانية والصور ؛ عدم وجود «قيم». مخطط. json '.
مخطط ضخم «لكل شيء» بدلاً من المعيار.
يتم تحديث CRDs بقوالب في «قوالب/» فوضى → عند الترقيات.
أسماء مشفرة/منفذ/مساحة أسماء في قوالب.
الافتقار إلى الموارد/الحدود والعينات → الانجراف في زمن الانتقال وعدم الاستقرار.
لا يمكن تعطيل → PDB صفرًا مع التجفيف/التحسينات.
أسرار في Git بدون تشفير ؛ دون ضوابط.

16) قائمة التنفيذ المرجعية (0-45 يوما)

0-10 أيام

قم بإنشاء هيكل عظمي أساسي للرسم البياني مع '_ المساعدين. tpl'، الملصقات، المجسات، الموارد، PDB/Ingress اختياري.
Включить تقييد PSA، تنكر NetworkPolicy كل شيء، ResourceCuta/LimiteRange.
اضبط GitOps (Argo/Flux)، سجل خاص، توقيع الصورة/الرسم البياني.

11-25 يومًا

قسّم الرسم البياني إلى وحدات/تبعيات، أضف «قيم». مخطط. json ', tests (' helm lint', unit, ct).
ربط قابلية الرصد (ServiceMonitor/PodMonitor)، وسجل العوامل، OTEL.
أدخل عملية الترقية: تنظيم → → الكناري، وربط الهجرة بالتراجع.

26-45 يومًا

أتمتة تحديثات التبعية (الروبوتات/نطاقات النصف + العلاقات العامة).
إضافة تقارير سياسات وسياسات Gatekeeper/Kyverno إلى CI.
قم بتوثيق دفتر تشغيل ترقية المجموعة وإجراءات DR (لقطة Velero/etcd).

17) مقاييس النضج

يتم استنفاد 100٪ من التطبيقات عبر Helm/GitOps، دون «تطبيق kubectl» يدويًا.
كل المخططات لها قيم. مخطط. ، والاختبارات، والتوقيع، ونسخ التبعية الملتزمة.
تم تمكين PSA المقيدة/NetworkPolicy في جميع الأسماء.
ويتواجد مصرف التنمية الشعبي ووكالة الصحة للبلدان الأمريكية في جميع الخدمات الحيوية.
SOPS/الأسرار الخارجية، لا توجد سياسة حديثة، توقيع الصورة.
يتم إجراء ترقيات العنقود والرسم البياني دون توقف (الكناري/الأزرق الأخضر)، وتكون اختبارات الاستعادة منتظمة.

18)

مؤسسة Strong Kubernetes = بنية عنقودية قوية + سياسات صارمة + مخططات Helm للجودة الصناعية تديرها GitOps. توحيد النماذج، وتأمين بيئة PSA/NetworkPolicy/RBAC، والتحقق من القيم، وأتمتة الاختبارات والتوقيع والترويج. ثم تصبح الترقيات والإصدارات قابلة للتنبؤ، وستصبح النظام الأساسي مستقرًا ومريحًا لفرق المنتج.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

Telegram
@Gamble_GC
بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.