GH GambleHub

Konfiqurasiya irsi

1) Niyə konfiqurasiya miras lazımdır

Yetkin məhsullarda konfiqurasiya parametrlərinin sayı xidmətlərin sayından daha sürətli artır. Miras imkan verir:
  • Ümumi dəyərləri (log, retraj, taymaut) yenidən istifadə edin.
  • Məsuliyyəti bölüşmək: platforma əsas siyasətləri təyin edir, xidmət komandaları - yalnız sapmalar.
  • Dublyaj qarşısını almaq və raskronizasiya riskini azaltmaq.
  • Buraxılışları sürətləndirin: Default dəyişikliklər ağacdan aşağı yayımlanır.
  • Multi-mühit və multi-tenantlığı bir yanaşma ilə saxlayın.

2) Miras modelləri

2. 1 iyerarxik (valideyn → uşaq)

Baza (global) → mühit (prod/stage/dev) → region/klaster → xidmət → instans.
Sadə və şəffaf, lakin «dərin zəncirlərə» və mürəkkəb hata ayıklamalara səbəb ola bilər.

2. 2 Laylı (base/overlays)

Əsas təbəqə + overley dəsti (feature-x, region-eu, security-hardening).
GitOps və Kustomize ilə yaxşı birləşir; overley müstəqil və kompozisiya.

2. 3 Kompozit (modullar/paketlər)

Konfiqurasiya 'logging @v2', 'metrics @v1', 'http @v3' modullarından toplanır.
Modul versiyalarının idarə edilməsi, semantik uyğunluq, açıq asılılıqlar.

2. 4 Dəyərlərin üstündəki siyasət (Policy-as-Code)

Əsas «məhdudlaşdırıcılar» və invariantlar (OPA/Rego, Kyverno, Conftest).
Mənaların özləri deyil, onların uyğunluq qaydaları miras alır.

3) Birləşmə alqoritmləri və prioritetlər

Əsas məsələ münaqişələrin həlli qaydasıdır. Spesifikasiyada qeyd etmək tövsiyə olunur:

1. Mənbələrin sırası: soldan sağa (base ← env ← region ← service ← instance).

2. Növlər üçün qaydalar:
  • Skalyar: «sonuncu qalib gəldi» (last-write-wins).
  • Obyekt: açarlar üzrə rekursiv merj.
Sıra: ya bütöv, ya da strategiyanın dəyişdirilməsi:
  • `append`/`prepend`
  • 'uniqueBy (key)' (açar çoxluğu)
  • 'patch' ('name' elementi və qismən merj üçün axtarış).
  • 3. Ayrılmış açarlar (məsələn, düyün səviyyəsində '_ merge: replace '/' _ merge: deep').
4. İnteraktiv mənbələrin prioriteti:
  • Başlanğıc bayraqları/ENV dəyişənləri> kirayə sirləri> disk faylları> kodda varsayılan dəyərlər.

YAML-merja nümunəsi

yaml base. yaml http:
port: 8080 timeouts:
read: 2s write: 2s features:
- name: audit enabled: false

prod. yaml http:
timeouts:
read: 1s features:
- name: audit enabled: true
- name: billing enabled: true

Result (under policy: object = deep merge, array = uniqueBy (name) + patch)
http:
port: 8080 timeouts:
read: 1s write: 2s features:
- name: audit enabled: true
- name: billing enabled: true

4) Sxemlər və validasiya

Sxemin mövcudluğu təhlükəsiz varisliyin məcburi şərtidir.

JSON Schema/OpenAPI: növlər, məcburi sahələr, enum, nümunələr, məhdudiyyətlər ('minimum', 'format', 'patternProperties').
Sxemlərin versiyası (semver): major - qırıcı, minor - yeni sahələr, patch - fiks.
Pre-merge və Post-merge yoxlamaları: həm fraqmentləri, həm də nəticəni təsdiqləmək.
Defolt: sxem səviyyəsində təyin edin (draft-07 + 'default' dəstəkləyir).

5) Mühit və yerləşdirmə matrisi

Tipik matris:
  • env: dev, test, stage, prod region: eu-central-1, us-east-1 tier: batch, realtime, internal tenant: A/B/C (white-label, B2B)
  • Kombinasiyalar overlay ağacını əmələ gətirir; həddindən artıq dərinlikdən qaçın (3-4 səviyyə kifayətdir).

6) Multi-tenant

Yanaşmalar:
  • Sərt bölmə: tenant üçün ayrı fayllar/qovluqlar.
  • Parametrləşdirmə: bir şablon + values per tenant.
  • Miras siyasətlər: resurs/kvota limitləri, SLO, log retenshn.
  • Vacib: təhlükəsizlik sərhədləri (sirlər/açarlar) tenantlar arasında axmamalıdır.

7) Secrets və təhlükəsizlik

Sirləri açıq şəkildə miras qoymayın. Bağlantılar miras qalır: 'secretRef', 'vaultPath'.
KMS/Vault/SOPS: şifrələnmiş dəyərləri Git-də saxlayın, açarları çıxartın.
Məsuliyyəti bölüşün: platforma yolları və siyasətləri idarə edir, xidmət komandası həqiqətən lazım olanı idarə edir.
Siyasətçilər: CI-yoxlamalar zamanı «plaintext» sirlərinin qadağan edilməsi.
Rotation: «aşağı yazmayın» - alias/abstraksiyaları istifadə edin ('db/primary/password @ 2025-Q4').

Vault-link nümunəsi

yaml db:
host: postgres. service user: app passwordFrom:
vaultPath: "kv/prod/app-db"
key: "password" # secret is taken at the deploy stage, not stored in files

8) Version və miqrasiya

Konfiqurasiya modullarının versiyaları: 'logging @ 2. 3. 1`.
Sxemlər üçün Changelog: jsonnet/ytt/xüsusi skriptlərlə miqrasiya.
Təhlükəsiz geri dönüş üçün iki yönlü miqrasiyalar (up/down).
Uzun budaqlar: sürüklənməyin; bazada müntəzəm overlay rebeyzing.

9) Alətlər və təcrübələr

9. 1 Kubernetes

Kustomize (overlays): 'bases '/' resources', 'patchesStrategicMerge '/' patchesJSON6902' vasitəsilə təbii miras modeli.
Helm (values): iyerarxiya 'values. yaml '+' --set '(lakin CI-də yenidən təyin olunmaqla diqqətli olun).
Kyverno/OPA: «sığorta şəbəkələri» kimi siyasətlər.

Kustomize nümunəsi:
yaml overlays/prod/kustomization. yaml resources:
-../../base patchesStrategicMerge:
- patch-resources. yaml commonLabels:
env: prod

9. 2 Terraform

+ 'variables modulları. tf 'müqavilə kimi.
Hesablanan dəyərlər üçün 'locals', 'override' faylları yoxdur - kataloq qatlarından və iş yerlərindən ('workspaces') istifadə edin.
Mənbə sırası: default <tfvars-fayllar <'-var '/' -var-file'.

Nümunə:
hcl module "svc" {
source = "./modules/svc"
replicas = var. env == "prod"? 4: 2 logging = local. logging_base
}

9. 3 Ansible

Dəyişənlərin aydın iyerarxiyası (üstünlük artımına görə): role defaults <inventory group_vars <host_vars <extra vars.
Miras üçün - 'group _ vars/{ env }/{ region} .yml' strukturu.

9. 4 Jsonnet / ytt

Zəngin kompozisiya, funksiyalar və «niyyət açarı» ('overlay. replace`, `overlay. merge`).

10) Müqavilələr və məsuliyyət sərhədləri

Platforma (platform team): sxemi, siyasəti, əsas dəyərləri, merj məntiqini müəyyən edir.
Məhsul komandaları: yalnız müqavilə çərçivəsində overley.
SRE/Təhlükəsizlik: audit, validasiya, işarələr, enforcement.

11) CI/CD и GitOps

Pipline mərhələləri:

1. Lint (format, naməlum açarların qadağan edilməsi).

2. Validate (JSON Schema/OpenAPI).

3. Dry-run/Render (helm template/kustomize build).

4. Policy check (OPA/Kyverno/Conftest).

5. Diff vs hədəf klasteri (kubectl diff/ArgoCD diff).

6. Progressive delivery: məhdud trafik ilə kanarya overlay.

7. Artefaktların imzası (Cosign, SLSA-attestasiya).

12) Müşahidə və hata ayıklama

Mənşə izi (provenance): sahəni kim və nə vaxt təqdim etdi, son dəyər hansı təbəqədən gəldi.
Merj vizuallaşdırılması: «qalib» açarların hesabatı.
Aktiv konfiqurasiya Runtime-export (sirləri maskalamaqla endpoint '/config ').
Sürüklənmə üçün alertlər: elan edilmiş və faktiki arasında fərqlər.

13) Anti-nümunələr

«Sehr» açıq prioritet qaydaları olmadan.
Dərin zəncirlər (> 4-5 qat): idrak yükünü artırır.
İrsi fayllarda sirlər.
CI-də '--set' vasitəsilə gizli yenidən təyin.
Sxem və render testlərinin olmaması.

14) Giriş çek siyahısı

  • Model müəyyən edin (iyerarxiya/laylar/kompozisiya).
  • Türlərə görə merj və strategiya qaydasını düzəldin.
  • Sxem və versiyanı dərc edin.
  • Sirləri bölüşün (yalnız linklər/reflər).
  • policy-checks və artefaktların imzaları əlavə edin.
  • Dry-run, diffs və mənşə vizualizasiyasını daxil edin.
  • Aktiv konfiqurasiya ixracını təmin edin.
  • -dəyişikliklər üçün mütərəqqi buraxılışları konfiqurasiya edin.

15) FAQ

S: Təbəqənin çox dərin olduğunu necə başa düşmək olar?
A: Parametrin dəyişdirilməsi üçün> 3 fayl açmaq və> 2 abstraksiya səviyyəsini «sürükləmək» lazımdırsa, strukturu nəzərdən keçirin.

Q: münaqişə massivləri ilə nə etmək lazımdır?
A: Açıq strategiyaları daxil edin: 'replace', 'append', 'uniqueBy (key)', 'patchBy (name)' və onları sənədlərdə qeyd edin.

S: Sirləri miras almaq olarmı?
A: Yox. Yalnız gizli saxlama və giriş siyasətlərinə istinadlar (URI/reflar) miras qalır.

Q: miras test necə?
A: Əsas overlay kombinasiyaları üçün «kəsiklər» çıxarın və qızıl fayllarla yoxlayın; hər PR-də CI-yə render edin.

Əlavə A: Mini Merj Spec

`scalars`: last-write-wins

'objects': deep-merge açarları

`arrays`:
  • default 'replace'
icazə verilir:
  • `append`
  • `uniqueBy(key)`
  • 'patchBy (key)' rekursiv element merjesi ilə
Xüsusi düyün işarələri:
  • `_merge: replace|deep`
  • `_strategy. array: replace|append|uniqueBy(name)|patchBy(name)`

Əlavə B: Nümunələr

B.1 Helm values (base üzərində prod)

yaml values. base. yaml replicas: 2 resources:
requests:
cpu: "100m"
memory: "128Mi"
logging:
level: info

values. prod. yaml replicas: 4 logging:
level: warn
Render komandası:

helm template svc chart/ -f values. base. yaml -f values. prod. yaml

Son faylın prioriteti 'values. prod. yaml`.

B.2 Kustomize overlays

yaml base/deployment. yaml apiVersion: apps/v1 kind: Deployment metadata:
name: app spec:
replicas: 2

overlays/prod/patch. yaml apiVersion: apps/v1 kind: Deployment metadata:
name: app spec:
replicas: 4

B.3 Ansible vars


group_vars/prod. yml # values of prod host_vars/prod-eu-1. yml # clarifications for extra vars host in CLI have highest priority

Nəticələr

Konfiqurasiya irsi müqavilə + merj alqoritmi + təhlükəsizlik siyasətidir, sadəcə «çox YAML faylları» deyil. Uğur müəyyən edilir:

1. aydın model və prioritetlər,

2. valid sxemləri və müstəqil overleylər,

3. sirləri miras imtina,

4. dry-run, policy-checks və diffs ilə GitOps-payplayn,

5. son dəyərlərin mənşəyinin müşahidə edilməsi.

Bu prinsipləri izləyərək, hər hansı bir mühit və topologiyalar üçün proqnozlaşdırıla bilən, ölçülə bilən və təhlükəsiz konfiqurasiyalar əldə edəcəksiniz.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

Telegram
@Gamble_GC
İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.