Konfigurasiýalary miras almak
1) Näme üçin konfigurasiýalary miras almak zerur?
Kämillik ýaşyna ýeten önümlerde konfigurasiýa parametrleriniň sany hyzmatlaryň sanyndan has çalt ösýär. Miras almak:- Umumy manylary (logirleme, retrailer, wagtlar) gaýtadan ulanmak.
- Jogapkärçiligi bölmek: platforma esasy syýasaty kesgitleýär, hyzmatlar buýruklary - diňe gyşarmalar.
- Gaýtalanmakdan gaça durmak we sinhronizasiýa töwekgelçiligini azaltmak.
- Çykyşy çaltlaşdyryň: üýtgeşmeler agajyň aşagyna ýaýlyma berilýär.
- Köp gurşawy we köp tenantlygy bir çemeleşme bilen saklamak.
2) Mirasyň modelleri
2. 1 Iýerarhiki (ene-ata → çaga)
Baza (global) → gurşaw (prod/stage/dev) → sebit/klaster → hyzmat → instans.
Ýönekeý we aç-açan, ýöne "çuňňur zynjyrlara" we çylşyrymly düzedişlere sebäp bolup biler.
2. 2 Gatlak (base/overlays)
Esasy gatlak + overleýs toplumy (feature-x, region-eu, security-hardening).
GitOps we Kustomize bilen gowy utgaşýar; overleýler garaşsyz we kompozisiýaly.
2. 3 Kompozisiýa (modullar/paketler)
Konfigurasiýa 'logging @v2', 'metrics @v1', 'http @v3' modullaryndan ýygnalýar.
Modullaryň wersiýalaryny dolandyrmak, semantiki laýyklyk, aç-açan garaşlylyk.
2. 4 Gymmatlyklaryň üstündäki syýasat (Policy-as-Code)
Esasy "çäklendirijiler" we alternatiwalar (OPA/Rego, Kyverno, Conftest).
Manylaryň özleri däl-de, olaryň kabul edilip bilinjek kadalary miras galýarlar.
3) Birleşmek algoritmleri we ileri tutulýan ugurlar
Esasy mesele konfliktleri çözmegiň tertibi. Aýratynlykda bellemek maslahat berilýär:1. Çeşmeleriň tertibi: çepden saga (base ← env ← region ← service ← instance).
2. Görnüşler üçin düzgünler:- Skalyar: "iň soňky ýeňiş" (last-write-wins).
- Obýekt: açarlar boýunça rekursiw merj.
- `append`/`prepend`
- 'uniqueBy (key)' (açar boýunça köplük)
- 'patch' ('name' elementi we bölekleýin merj).
- 3. Saklanan açarlar (mysal üçin, düwün derejesinde '_ merge: replace '/' _ merge: deep').
- Başlangyç baýdaklary/ENV-üýtgäp durýanlar> Kärendäniň syrlary> Diskdäki faýllar> Koddaky standart bahalar.
YAML-merj mysaly
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) Shemalar we tassyklama
Shemanyň bolmagy howpsuz mirasyň hökmany şertidir.
JSON Schema/OpenAPI: görnüşleri, hökmany meýdanlary, enum, patternleri, çäklendirmeleri ('minimum', 'format', 'patternProperties').
Shemalaryň wersiýasy (semver): major - döwüjiler, minor - täze meýdanlar, patch - fiksler.
Pre-merge we Post-merge barlagy: bölekleri we netijeleri tassyklamak.
Defoltlar: shema derejesinde set (draft-07 + 'default' -y goldaýar).
5) Gurşaw we ýerleşdiriş matrisi
Adaty matrisa:- env: dev, test, stage, prod region: eu-central-1, us-east-1 tier: batch, realtime, internal tenant: A/B/C (white-label, B2B)
- Kombinasiýalar overleus agajyny emele getirýär; artykmaç çuňlukdan gaça duruň (3-4 dereje ýeterlik).
6) Köp tenantlyk
Çemeleşmeler:- Gaty bölmek: tenant üçin aýratyn faýllar/bukjalar.
- Parametrlemek: bir şablon + values per tenant.
- Mirasdüşer syýasatlar: çeşmeleriň/kwotalaryň çäkleri, SLO, loglaryň satylmagy.
- Möhüm: howpsuzlyk çäkleri (syrlar/açarlar) tenantlaryň arasynda ýüze çykmaly däldir.
7) Syrlar we howpsuzlyk
Syrlary aç-açan miras almaň. 'secretRef', 'vaultPath' baglanyşyklary miras alýar.
KMS/Vault/SOPS: şifrlenen bahalary Git, açarlary daşarda saklaň.
Jogapkärçiligi paýlaşyň: platforma ýollary we syýasatlary dolandyrýar, hyzmat topary - hakykatdanam zerur zat.
Syýasatlar: CI barlaglarynda 'plaintext' syrlaryny gadagan etmek.
Rotation: "Aşak ýazmaň" - alias/abstraksiýalary ulanyň ('db/primary/password @ 2025-Q4').
Vault baglanyşygy bilen mysal
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) Wersiýalaşdyrmak we migrasiýa
Konfigurasiýa modullarynyň wersiýalary: 'logging @ 2. 3. 1`.
Shemalar üçin Changelog: jsonnet/ytt/aýratyn skriptlar bilen göçmek.
Howpsuz yza gaýdyp gelmek üçin iki taraplaýyn göçmek (up/down).
Uzyn şahalar: süýşmekden gaça durmak; bazada overleýleri yzygiderli gaýtadan işlemek.
9) Gurallar we amallar
9. 1 Kubernetes
Kustomize (overlays): 'bases '/' resources', 'patchesStrategicMerge '/' patchesJSON6902' arkaly tebigy miras modeli.
Helm (values): iýerarhiýasy 'values. yaml '+' --set '(ýöne CI-daky çaklamalara seresap boluň).
Kyverno/OPA: "ätiýaçlandyryş torlary" hökmünde syýasatlar.
yaml overlays/prod/kustomization. yaml resources:
-../../base patchesStrategicMerge:
- patch-resources. yaml commonLabels:
env: prod
9. 2 Terraform
Modullar + 'variables. tf 'şertnama hökmünde.
Hasaplanan gymmatlyklar üçin 'locals', 'override' ýok - katalog gatlaklaryny we iş ýerlerini ('workspaces') ulanyň.
Çeşmeleriň tertibi: <tfvars-faýllar <'-var '/' -var-file'.
hcl module "svc" {
source = "./modules/svc"
replicas = var. env == "prod"? 4: 2 logging = local. logging_base
}
9. 3 Ansible
Üýtgeýjileriň aç-açan iýerarhiýasy: role defaults <inventory group_vars <host_vars <extra vars.
Miras üçin - 'group _ vars/{ env }/{ region} .yml'.
9. 4 Jsonnet / ytt
Baý kompozisiýa, funksiýalar we "niýet açary" ('overlay. replace`, `overlay. merge`).
10) Şertnamalar we jogapkärçiligiň çäkleri
Platforma (platform team): merjiň shemasyny, syýasatyny, esasy bahalaryny, logikasyny kesgitleýär.
Önüm buýruklary: diňe şertnamanyň çäklerinde overleýler.
SRE/Howpsuzlyk: audit, tassyklamalar, signatura, enforcement.
11) CI/CD и GitOps
Pipline:1. Lint (format, näbelli açarlary gadagan).
2. Validate (JSON Schema/OpenAPI).
3. Dry-run/Render (helm template/kustomize build).
4. Policy check (OPA/Kyverno/Conftest).
5. Nyşana garşy diff (kubectl diff/ArgoCD diff).
6. Progressive delivery: çäkli traffikli kanareýka overleýleri.
7. Artefaktlaryň goly (Cosign, SLSA-attestasiýa).
12) Syn etmek we düzetmek
Gelip çykyşy yzarlamak (provenance): meýdany kim we haçan girizdi, ahyrky many haýsy gatlakdan geldi.
Merjeniň wizualizasiýasy: "ýeňiji" açarlaryň hasabaty.
Işjeň konfigurasiýany eksport etmek (gizlemek bilen endpoint '/config ').
Dyrmaşmak üçin alertler: yglan edilen we hakykatyň arasyndaky tapawutlar.
13) Anti-patternler
"Jadygöýlik" aç-açan ileri tutulýan düzgünler bolmazdan.
Çuň zynjyrlar (> 4-5 gatlak): aň-düşünjäni ýokarlandyrýar.
Miras galan faýllarda syrlar.
CI '-set' arkaly gizlin geçişler.
Rendering shemasynyň we synaglarynyň ýoklugy.
14) Girizmegiň çek-sanawy
- Modeli kesgitläň (iýerarhiýa/gatlaklar/kompozisiýa).
- Merjeniň we strategiýanyň görnüşlerini düzüň.
- Shema we wersiýa çap ediň.
- Syrlary bölüň (diňe salgylanmalar/refler).
- Policy-checks we artefaktlaryň gollaryny goşuň.
- Dry-run, diffleri we gelip çykyşyny wizuallaşdyrmagy açyň.
- Işjeň konfigurasiýany kärendesine eksport ediň.
- Üýtgeşmeler üçin progressiw neşirleri sazlaň.
15) FAQ
S: Gatlagyň gaty çuňdygyna nädip düşünmeli?
A: Eger parametri üýtgetmek üçin> 3 faýly açmaly we> 2 abstraksiýa derejesini "aýlamaly" bolsaňyz, gurluşa täzeden serediň.
Q: Gapma-garşylykly massiwler bilen näme etmeli?
A: Aç-açan strategiýalary giriziň: 'replace', 'append', 'uniqueBy (key)', 'patchBy (name)' - we olary resminamalarda belläň.
Q: Syrlary miras almak mümkinmi?
A: Ýok. Diňe gizlin ammar we giriş syýasatlaryna salgylanmalar (URI/reflar) miras galýar.
Q: Mirasy nädip barlamaly?
A: Düwmeleriň esasy kombinasiýalary üçin "bölekleri" aýyryň we altyn faýllar bilen barlaň; her PR üçin CI-e render ediň.
A goşundysy: Merjeniň kiçi spekasy
`scalars`: last-write-wins
'objects': açarlar boýunça deep-merge
`arrays`:- 'replace'
- `append`
- `uniqueBy(key)`
- 'patchBy (key)' elementleriň rekursiw merjemi bilen
- `_merge: replace|deep`
- `_strategy. array: replace|append|uniqueBy(name)|patchBy(name)`
B goşundy: Mysallar
B.1 Helm values (prod base)
yaml values. base. yaml replicas: 2 resources:
requests:
cpu: "100m"
memory: "128Mi"
logging:
level: info
values. prod. yaml replicas: 4 logging:
level: warn
Görkeziş buýrugy:
helm template svc chart/ -f values. base. yaml -f values. prod. yaml
Iň soňky faýl '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
Netijeler
Konfigurasiýalaryň mirasy diňe "köp YAML faýllary" däl-de, şertnama + merj algoritmi + howpsuzlyk syýasaty. Üstünlik:1. aýdyň model we ileri tutulýan ugurlar,
2. tassyklaýjy shemalar we garaşsyz overleýler,
3. syrlary miras almakdan ýüz öwürmek,
4. dry-run, policy-checks we diffs bilen GitOps-paypline,
5. jemleýji gymmatlyklaryň gelip çykyşynyň syn edilmegi.
Bu ýörelgelere eýerip, islendik gurşaw we topologiýalar üçin öňünden aýdyp boljak, ulaldylýan we ygtybarly konfigurasiýalary alarsyňyz.