Texnologiyalar və Infrastruktur → Kubernetes-klasterlər və Helm-çartlar
Kubernetes-klasterlər və Helm-çartlar
1) Kubernetes və Helm rolu
Kubernetes proqram platformasının əsasını təşkil edir: yuvarlanma, şəbəkə, konfiqlər, sirlər və özünü bərpa standartlaşdırır. Helm - deklarativ manifestləri versiyaları və asılılıqları idarə edən təkrar buraxılışlara çevirən paket/şablon meneceri. Birlikdə proqnozlaşdırıla bilən deploi, sürətli geri dönüş və vahid infrastruktur dili verirlər.
2) Klaster dizaynı
2. 1 Topologiya və uğursuzluğa davamlılıq
Multi-AZ: control plane və işçi hovuz qovşaqları zonalara bölünür; PDB/TopologySpreadConstraints vahid üçün.
Multiregion/DR: müstəqil per-region klasterləri; regionlararası çağırışlar - yalnız «soyuq» yollarla (kataloqlar/telemetriya), «isti» (cüzdan) - yerli.
Worker hovuzları: 'general', 'compute', 'io', 'spot' (arxa plan tapşırıqları üçün). nodeSelector/affinity/taints vasitəsilə təyinat.
2. 2 Ad məkanları və multiplayer modeli
Namespace-domen/komanda izolyasiyası: 'payments', 'wallet', 'games', 'reporting'.
ResourceQuota + LimitRange: əsas CPU/RAM limitləri və maksimum replikalar; klaster «tozsoran» qorunması.
RBAC: rolları read-only default, write - yalnız CI/CD və on-call.
2. 3 Şəbəkə
NetworkPolicy (Calico/Cilium) dəstəyi ilə CNI: namespace/label siyasəti L3/L4.
Ingress → Gateway API: Kanaryalar və çox tenantlıq üçün 'GatewayClass/Gateway/HTTPRoute' modelinə keçid.
Service Mesh (isteğe bağlı): mTLS, retry/breaker, locality-aware; Servislərarası etibarlılıq üçün nöqtəni daxil edin.
3) Etibarlılıq və miqyas
3. 1 Skeylinq
Xüsusi metrik HPA (RPS/latency/queue depth), yalnız CPU deyil.
Arxa plan yük sinifində VPA; prodda - «recommendation only» və ya müxtəlif metrik HPA ilə birlikdə.
Cluster Autoscaler: həssas xidmətlər altında ayrı-ayrı node groups; warm-pool pik (turnirlər/matçlar).
3. 2 Resurslar və QoS
Hər Pod requests/limits var; qaçmaq ': latest' və «limitsiz» konteynerlər.
PriorityClass: kritik xidmətlər ('wallet', 'payments') kritik olmayan xidmətləri əvəz edir.
PDB: node yeniləyərkən «ayağınıza vurun» klasterini vermirik.
3. 3 Fasiləsiz yeniləmələr
RollingUpdate c maxUnavailable = 0 kritik yollarda.
PodDisruptionBudget + ReadinessProbes (не `startupProbe` вместо readiness).
Zirvə zamanı sürətli buraxılışlar üçün Surge tutumu - ehtiyatla.
4) Platforma təhlükəsizliyi
Pod Security (Baseline/Restricted) namespace səviyyəsində; qadağa 'privileged', hostPath, root.
NetworkPolicy: default-deny və ağ/label port siyahıları.
Seccomp/AppArmor, non-root users, read-only rootfs.
Secrets: KMS/Vault provayder (CSI), gizli saxlamaq deyil 'values. yaml 'açıq formada.
RBAC-minimum: xidmət hesablarına yalnız lazımi hüquqları veririk; qısa ömürlü tokenlər.
Admission-Control: OPA/Gatekeeper/Kyverno - enforce etiketlər, limitlər, siyasi pozuntular.
5) Observability
OpenTelemetry: Ingress/Gateway → xidmət → DB/cache, məcburi etiketlər 'service', 'version', 'region', 'partner', 'api _ version'.
Log: strukturlaşdırılmış, PII/PAN olmadan; mərkəzləşdirilmiş saxlama marşrutu.
Metriklər: RED/USE, SLO-daşbordlar, burn-rate alertlər.
Sintetika: lazımi ölkələrdən nümunələr/ASN; perimetri və daxili sağlamlıq-yoxlamalar.
6) GitOps и progressive delivery
Argo CD/Flux: arzu vəziyyət Git saxlanılır; hər namespace - öz anbar/qovluq.
Artefaktların təşviqi: 'dev → stage → prod' PR vasitəsilə, «kubectl apply» deyil.
Canary/Blue-Green: Argo Rollouts/Gateway API; uğur metrikası - P95/P99, error-rate, biznes SLI (CR depozitləri).
Geri dönüş: Helm/Argo - düyməsi ilə; charts - versiyası sabit.
7) Helm: ən yaxşı təcrübələr
7. 1 Çartın strukturu
my-service/
Chart. yaml # name, version (SemVer), appVersion values. yaml # base values (no secrets)
values-prod. yaml # prod overrides (no secrets)
templates/
_helpers. tpl # naming, common deployment templates. yaml service. yaml hpa. yaml pdb. yaml networkpolicy. yaml serviceaccount. yaml ingress_or_gateway. yaml charts/# dependencies (opcional)
Tövsiyələr:
- 'version' - çartın versiyası (SemVer), 'appVersion' - tətbiqin versiyası (imic).
- Sərt resurs adları: '{{include "svc. fullname".}}' + etiket' app. kubernetes. io/`.
- Məcburi manifestlər: Deployment/StatefulSet, Service, ServiceAccount, HPA (mümkünsə), PDB, NetworkPolicy.
7. 2 Values strategiyası
Əsas 'values. yaml '- defolt, heç bir sirr və mühit-spesifik.
Overraydlar: 'values- {stage' prod} .yaml '+ per-region faylları.
Sirləri: SOPS ('values-prod. sops. yaml ') və ya CSI vasitəsilə Vault-inyeksiya.
Resurs və nümunə parametrləri - «ağıllı» defolt ilə values.
7. 3 Asılılıq və ümumi kod
Nümunələr üçün ümumi kitabxana siyahıları (probes, annotations, NetworkPolicy).
Asılılıqlar ('requirements '/' Chart. yaml ') versiyasını qeyd edin; dərin «matryoshki» çəkinin.
7. 4 Şablonlar və yoxlamalar
'required' və 'fail' in '_ helpers. kritik dəyərlər üçün tpl '.
Values sxeminin validasiyası - 'values. schema. json`.
Çartın vahid testləri - 'helm unittest'; statik analiz - kubeconform/kubeval.
Yerli hata ayıklama - 'helm template' + '-values' + 'kubeconform'.
7. 5 Buraxılışlar və saxlama
Konteynerlərin OCI-registrlərinə push chart; tags SemVer.
Helmfile/`helmfile. d 'çox mərhələli rulonların orkestrasiyası üçün.
CI artefaktları: yaradılan manifestlər + asılılıqlar lockfile.
8) Nümunə: Deployment (Helm şablon parçası)
yaml apiVersion: apps/v1 kind: Deployment metadata:
name: {{ include "svc. fullname". }}
labels: {{ include "svc. labels". nindent 4 }}
spec:
replicas: {{.Values. replicas default 3 }}
strategy:
type: RollingUpdate rollingUpdate:
maxSurge: 1 maxUnavailable: 0 selector:
matchLabels: {{ include "svc. selectorLabels". nindent 6 }}
template:
metadata:
labels: {{ include "svc. selectorLabels". nindent 8 }}
annotations:
checksum/config: {{ include (print $.Template. BasePath "/configmap. yaml"). sha256sum }}
spec:
serviceAccountName: {{ include "svc. serviceAccountName". }}
securityContext:
runAsNonRoot: true containers:
- name: app image: "{{.Values. image. repository }}:{{.Values. image. tag }}"
imagePullPolicy: IfNotPresent ports:
- name: http containerPort: {{.Values. ports. http }}
resources:
requests:
cpu: {{.Values. resources. requests. cpu }}
memory: {{.Values. resources. requests. memory }}
limits:
cpu: {{.Values. resources. limits. cpu }}
memory: {{.Values. resources. limits. memory }}
readinessProbe:
httpGet:
path: /healthz port: http periodSeconds: 5 envFrom:
- secretRef:
name: {{ include "svc. secretsName". }}
9) Secrets və konfiqurasiya
Secrets CSI (Vault/KMS) və ya SOPS vasitəsilə Git-Repository (GPG/KMS açarları; qadağa 'kubectl edit').
rolling-reliz trigger üçün ConfigMap/Secret checksum şərhlər.
PAN/PII saxlamaq deyil; tokenizasiya istifadə edin.
Sealed Secrets icazə verilir, lakin SOPS və ya birbaşa CSI üstünlük.
10) Şəbəkə və perimetr
L7-routing, kanaryalar və mavi-yaşıl üçün Gateway API; sticky-seans yalnız lazım olduqda.
mesh/sidecar-less (Cilium) vasitəsilə xidmətlər arasında mTLS - ödəniş nüvəsi üçün nöqtədir.
Egress: xarici qovşaqların nəzarət siyahısı (PSP/KYC), sabit NAT-IP, vaxt və retras büdcəsi.
11) Stateful-xidmətlər və məlumatlar
OLTP-DB üçün ayrı-ayrı klasterlərdə idarə olunan bulud xidmətlərindən və ya operatorlardan (Postgres/MySQL) istifadə edin.
Snapshot və backup siyasəti ilə PVC/CSI; replikalar üçün 'PodAntiAffinity'.
Növbələr/axın üçün - idarə olunan həllər və ya xüsusi klasterlər; «ümumi» tətbiq klasterində minimum vəziyyəti saxlayın.
12) CI/CD konveyer (istinad)
1. Build & test → 2) SCA/lint → 3) Registrdə görüntü (SBOM, imza) →
2. Helm-çartın generasiyası + 'helm unittest' + kubeconform →
3. CD rentaymında SOPS dekripti → 6) GitOps-repozitorunda PR →
4. Argo/Flux tətbiq edir → 8) Argo Rollouts canary → 9) SLO üzrə avtomatik hökm → 10) Promosyon/geri dönüş.
13) Platformanın yetkinlik metrikası
GitOps vasitəsilə buraxılışların payı (məqsəd: 100%).
Yuvarlanma vaxtı (P95) hazır, MTTR geri.
Namespace-in Pod Security və NetworkPolicy ilə əhatə olunması (məqsəd: 100%).
HPA və düzgün requests/limits ilə% xidmətlər.
% s 'values. schema. json 'və vahid testlər.
«Əl» dəyişikliklərinin səbəb olduğu hadisələr (məqsəd: 0).
14) Giriş çek siyahısı
1. Zonalar üzrə klasterlər, profillər üzrə düyünlər hovuzu; PDB/TopologySpreadConstraints.
2. Namespace-model, ResourceQuota/LimitRange, RBAC minimum.
3. Pod Security (Restricted) и default-deny NetworkPolicy.
4. Gateway API/Ingress; egress-nəzarət və NAT-fiksasiya provayderlərə.
5. Observability: OTel treys, RED/USE, geo sintetika; SLO-daşbordları.
6. GitOps (Argo/Flux), canary/blue-green, metrik avtomobil sənayesi.
7. Helm standartları: struktur, sxema. json, testlər, SOPS/Vault, OCI registrləri.
8. HPA/VPA, Cluster Autoscaler, pik üçün warm-pool.
9. Məlumatlarla əməliyyatlar: CSI snapshots, backaps, operatorlar/managed DB.
10. Müntəzəm DR/chaos testləri və game-days.
15) Anti-nümunələr
İzolyasiya və kvota olmadan hər şey üçün bir «nəhəng» klaster.
Limitsiz resurslar, 'latest' etiketlər, heç bir probes.
Secrets in 'values. yaml 'açıq formada,' kubectl edit 'prodda.
GitOps, canlı klasterdə manifestlərin əl ilə düzəlişləri.
NetworkPolicy/Pod Security olmaması - «düz» şəbəkə.
Müxtəlif yüklər üçün CPU-da vahid ümumi HPA siqnalı.
ALTP-DB-ni operator və backup olmadan «ümumi» proqram klasterində saxlayın.
16) iGaming/fintech konteksti: praktik qeydlər
Ödəniş vebhukları: PSP-yə ayrılmış ingress/gateway və dar egress; ciddi vaxt/retras; ayrıca düyün hovuzu.
VIP-trafik: prioritetləşdirmə və ayrı-ayrı marşrutlar; Sabitlik üçün PDB və topologiya spread.
Turnirlər/zirvələri: varm-pool düyünləri + proqnozlaşdırılan HPA; cache/bağlantıları qızdırmaq.
Hesabat/CDC: ETL-in proda təsir etməməsi üçün ayrı bir klaster/hovuz.
Tənzimləyici: dəyişməz log (WORM), PII tokenizasiya, şəbəkə seqmentasiyası.
Yekun
Güclü Kubernetes platforması «YAML yığını» deyil, standartlardır: təcrid, təhlükəsizlik siyasəti, idarə olunan resurslar, müşahidə və GitOps intizamı. Helm-charts - çatdırılma müqaviləniz: proqnozlaşdırıla bilən buraxılışlar, sınaqdan keçirilə bilən şablonlar, təhlükəsiz iş sirləri və sadə geri dönüşlər. Bu prinsipləri təmin edərək, zirvələri yaşayan, buraxılışları sürətləndirən və biznes və tənzimləyicilərin tələblərinə cavab verən klasterlər əldə edəcəksiniz.