GH GambleHub

Միգրացիաների ժառանգությունը

1) Ինչո՞ ւ է անհրաժեշտ խմբակցությունների ժառանգությունը

Հասուն ապրանքներում միգրացիոն վճարների թիվը աճում է ավելի արագ, քան ծառայությունների քանակը։ Ժառանգությունը թույլ է տալիս

Օգտագործեք ընդհանուր արժեքներ (տրամաբանություն, ռետրաններ, թայմաուտներ)։

Պատասխանատվությունը կիսելու համար պլատֆորմը հիմնական քաղաքականություններ է տալիս, ծառայությունների թիմերը միայն շեղումներ են։

Խուսափել հիվանդություններից և նվազեցնել ռասինխրոնիզացիայի ռիսկը։

Արագացնել օրինագծերը. Լռելյայն փոփոխությունները փոխանցվում են ծառի ներքև։

Պահպանել մուլտֆիլմ-միջավայրը և մուլտֆիլմի-տենանտիզմը միասնական մոտեցումով։

2) Ժառանգության մոդելները

2. 1 Հիերարխիկ (ծնող ռուսական երեխա)

Բազան (global) բացատրում է շրջակա միջավայրը (108/stage/dev) ռուսական տարածաշրջանը/կլաստերը տեղադրված են instans ծառայությունը։

Պարզ և թափանցիկ, բայց կարող է հանգեցնել «խորը շղթաների» և բարդ կարգաբերությունների։

2. 2 Շերտավոր (box/overlays)

Հիմնական շերտը + օվերլեների հավաքածու (feature-x, region-eu, 108-hardening)։

Լավ համադրվում է GitOps-ի և Kustomize-ի հետ։ հավատացյալները անկախ և կոմպոզիցիոն են։

2. 3 Կոմպոզիցիոն (մոդուլներ/փաթեթներ)

Կազմաձևումը պատրաստվում է մոդուլներից '«logging @ v2», «metrance @ v1», «http @ v3»։

Մոդուլների տարբերակների կառավարումը, սեմանտիկ համատեղելիությունը, ակնհայտ կախվածությունը։

2. 4 Քաղաքականություն արժեքների վերևում (Policy-as-Code)

Հիմնական «սահմանափակիչները» և ինվարանտները (OPA/Rego, Kyverno, Deltest)։

Ժառանգվում են ոչ թե արժեքները, այլ դրանց ընդունակության կանոնները։

3) Միաձուլման և առաջնահերթությունների ալգորիթմներ

Հիմնական հարցը հակամարտությունների լուծման կարգն է։ Խորհուրդ է տրվում ամրագրել ճշգրտության մեջ

1. Աղբյուրների կարգը 'ձախ կողմում (bentenv demengion)։

2. Կանոններ տեսակների համար

Սկալյար '«վերջինը հաղթեց» (last-write-ents)։

Օբյեկտ 'ռեքուրսիվ մանգը։

Տե՛ ս ՝ կամ փոխարինում ամբողջ, կամ ռազմավարություն

`append`/`prepend`

«uniqueBy (key)» (շատ բանալին)

«patch» (տարրի որոնումը «name» և մասնակի մերջ)։

3. Վերացված բանալիները (օրինակ ՝ «_ merge: replace '/_ merge: deep» հանգույցի մակարդակում)։

4. Ինտերակտիվ աղբյուրների գերակայությունը

Գործարկման դրոշները/ENV-2019> ռանտայմի գաղտնիքները> ֆայլերը կոդում լռելյայն արժեքով։

Օրինակ YAML-merga

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) Սխեմաներ և վալիդացիա

Սխեմայի առկայությունը անվտանգ ժառանգության պարտադիր պայման է։

JSON Schema/OpenAPI 'տեսակներ, պարտադիր դաշտեր, enum, patterns, սահմանափակումներ («minimum», «paternProperties»)։

Սխեմաների տարբերակումը (semver) 'major - կոտրող, minor - նոր դաշտեր, patch - ֆիքսներ։

Pre-merge և Post-merge-merge-ը 'valivation և բեկորներ, և արդյունքը։

Դեֆոլտներ 'տալ սխեմայի մակարդակում (wwww.aft-35+ աջակցում է «www.ru»)։

5) Շրջապատում և մոգության մատրիցա

Տիպիկ մատրիցա

env: dev, test, stage, prod region: eu-central-1, us-east-1 tier: batch, realtime, internal tenant: A/B/C (white-label, B2B)

Համադրությունները կազմում են օվերլեների ծառը։ խուսափեք ավելորդ խորությունից (3-4 մակարդակը բավարար է)։

6) Multi-tenanty

Մոտեցումներ

Կոշտ բաժանումը 'առանձին ֆայլեր/փաթեթներ ստվերով։

Դելբրիզացիա 'մեկ ձև + values per tenae։

Ժառանգված քաղաքականությունները 'ռեսուրսների/քվոտայի սահմաններ, SLO, rentenshn logs։

Կարևոր է, որ անվտանգության սահմանները (գաղտնիքները/բանալիները) չպետք է լինեն տենանտների միջև։

7) Գաղտնիքները և անվտանգությունը

Մի՛ ժառանգեք գաղտնիքները հստակ ձևով։ Հղումները ժառանգվում են ՝ «secretRef», «vig Path»։

KFC/VAST/SOPS: պահել ծածկագրված արժեքները Git-ում, բանալիները դուրս են։

Կիսեք պատասխանատվությունը 'պլատֆորմը ղեկավարվում է ճանապարհներով և քաղաքական գործիչներով, մրցույթի թիմը այն է, ինչ իսկապես անհրաժեշտ է։

Քաղաքական գործիչները 'CI ստուգումների ժամանակ «plaintext» գաղտնիքների արգելքը։

Rotation: Մի «վերաշարադրեք ներքև» - օգտագործեք alias/աբստրակցիաներ («db/primary/password @ 2025-Q4»)։

Օրինակ Vox-հղումով

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) Տարբերակումը և լուծումը

Կազմաձևման մոդուլների տարբերակները '"logging @ 2։ 3. 1`.

Changelog-ը սխեմաների համար 'jsonnet/ytt/castome ջութակների միջոցով։

Երկվորյակներ (up/down) անվտանգ արձագանքելու համար։

Երկար ճյուղեր 'խուսափել դրեյֆից։ պարբերաբար վերբեռնեք հավատալիքները բազայի վրա։

9) Գործիքներ և պրակտիկա

9. 1 Kubernetes

Kustomize (overlays) 'ժառանգության բնական մոդել' «bases »/« resources», «patchesStrategicMerge »/« patchesJSON6902» միջոցով։

Helm (values) 'հիերարխիա' values։ yaml '+ --set "(բայց զգույշ եղեք CI-ում վերափոխումներով)։

Kyverno/OPA 'քաղաքականությունը որպես «ապահովագրության ցանցեր»։

Kustomize-ի օրինակ

yaml overlays/prod/kustomization. yaml resources:
-../../base patchesStrategicMerge:
- patch-resources. yaml commonLabels:
env: prod

9. 2 Terraform

+ variables մոդուլները։ tf 'որպես պայմանագիր։

«www.als» հաշվարկային արժեքների համար, «override» ֆայլեր չկան, օգտագործեք ալյումինե շերտեր և աշխատանքային տարածություններ («workspaces»)։

Աղբյուրների կարգը 'լռելյայն արժեքներ

Օրինակ

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

9. 3 Ansible

Փոփոխականների հստակ հիերարխիա (առաջնահերթության աճով) 'role medaulation

Ժառանգության համար '«group _ vars/+ env +/+ region _ yml» կառուցվածքը։

9. 4 Jsonnet / ytt

Հարուստ կոմպոզիա, գործառույթներ և «բանալին մտադրություններ» («overlay»)։ replace`, `overlay. merge`).

10) Պայմանագրեր և պատասխանատվության սահմաններ

Պլատֆորմը (platform team), որոշում է սխեման, քաղաքականությունը, հիմնական արժեքները, մերգի տրամաբանությունը։

Ապրանքային թիմերը 'միայն պարտիզանները պայմանագրի սահմաններում։

MSE/Անվտանգություն ՝ աուդիտ, վալիդացիա, ազդանշաններ, enforcae։

11) CI/CD и GitOps

Դելպլինը բեմից

1. Lint (ձևաչափը, անհայտ տարածքների արգելքը)։

2. Validate (JSON Schema/OpenAPI).
3. Dry-run/Render (helm template/kustomize build).
4. Policy check (OPA/Kyverno/Conftest).

5. Diff-ի դեմ (kubectl diff/ArgoCD diff)։

6. Progressive progressive-ivery-ը 'քարե օվերելներ, որոնք սահմանափակ են։

7. Արտեֆակտների ստորագրությունը (Cosport, SLIM հավաստագրում)։

12) Դիտողությունն ու կարգաբերումը

Ծագման ուղին (provenae) 'ո՞ վ և երբ ներդրեց դաշտը, որի շերտը հասավ վերջնական կարևորությանը։

Մերջի վիզուալիզացիան '«հաղթողների» զեկույցը։

Runtime-էքսպորտը ակտիվ կազմաձևի (endpoint '/wwww.orld) հետ։

Ալբերտները դրեյֆի վրա 'տարբերություններ հայտարարված և իրական միջև։

13) Anti-patterna

«Մոգությունը» առանց ակնհայտ առաջնահերթությունների։

Խորը շղթաները (> 4-5 շերտեր), բարձրացնում են ճանաչողական բեռը։

Գաղտնիքները ժառանգված ֆայլերում։

Թաքնված վերագրանցումները «-set» -ի միջոցով CI-ում։

Ռենդերինգի սխեմայի և թեստերի բացակայությունը։

14) Ներդրման չեկի ցուցակ

  • Ռուսական մոդել (հիերարխիա/շերտեր/108)։
  • Ամրագրեք չափման և ռազմավարության կարգը ըստ տեսակի։
  • Հրապարակեք սխեման և տարբերակումը։
  • Բաժանեք գաղտնիքները (միայն հղումները/ռեփերը)։
  • Ավելացրեք policy-winks և արտեֆակտների ստորագրություններ։
  • Միացրեք www.y-run, և տեսողական ծագումը։
  • Ապահովեք ակտիվ կազմաձևի արտահանումը rantaime-ում։
  • Կատարեք առաջադիմական օրինագծեր 'փոխելու համար։

15) FAQ

Q 'Ինչպե՞ ս հասկանալ, որ շերտը չափազանց խորը է։

Եվ եթե դուք պետք է բացեք> 3 ֆայլեր և «պտտեք»> 2 վերացական մակարդակ, վերանայեք կառուցվածքը։

Q 'Ի՞ նչ անել հակամարտող զանգվածների հետ։

Ա 'Մուտքագրեք հստակ ռազմավարություններ' «replace», «append», «uniqueBy (key)», «patchBy (name)» և դրանք գրանցեք փաստաթղթերում։

Q 'Հնարավո՞ ր է գաղտնիքները ժառանգել։

Ա 'Ոչ։ Միայն հղումները (URI/refa) ժառանգվում են գաղտնիության և հասանելիության քաղաքականության վրա։

Q 'Ինչպե՞ ս փորձարկել ժառանգությունը։

Ա 'Նկարահանեք «կտրվածքներ» օվերների հիմնական համադրությունների համար և ստուգեք golden ֆայլերը։ կանգնել CI-ում յուրաքանչյուր PR-ում։

Հավելված A: Mini-spect merga

`scalars`: last-write-wins

'objects': deep-merge

`arrays`:
  • լռելյայն 'replace "
  • թույլատրվում են

`append`

`uniqueBy(key)`

«patchBy (key)» -ը տարրերի ռեկուրսիվ չափսի հետ

Հատուկ ռուսական հանգույցներ

`_merge: replace|deep`

`_strategy. array: replace|append|uniqueBy(name)|patchBy(name)`

Հավելված B: Օրինակներ

Bull Helm values (box)

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

values. prod. yaml replicas: 4 logging:
level: warn

Ռենդերինգի թիմը


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

Վերջին ֆայլի գերակայությունը «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

Արդյունքները

Միգրացիաների ժառանգությունը + merge + անվտանգության քաղաքականության ալգորիթմ է, ոչ միայն «շատ YAML ֆայլեր»։ Հաջողությունը որոշվում է

1. պարզ մոդել և գերակայություններ,

2. առաջնորդող սխեմաներ և ինքնուրույն հավատալիքներ,

3. հրաժարվելով գաղտնիքների ժառանգությունից,

4. GitOps-interpline-ը www.y-run, policy-winks-links-ով,

5. բարդ արժեքների ծագման դիտարկումը։

Այս սկզբունքներին հետևելով ՝ կստանաք կանխատեսելի, մեծացված և ապահով կազմաձևեր ցանկացած միջավայրում և տեղաբանության համար։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Telegram
@Gamble_GC
Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։