Տեխնոլոգիաներ և ենթակառուցվածքներ www.Kubernetes կլաստերներ և Helm-charts
Kubernetes կլաստերներ և Helm-charts
1) Kubernetes և Helm դերը
Kubernetes-ը դիմումների պլատֆորմի հիմքն է 'ստանդարտացնում է դասավորությունը, ցանցը, ալգորիթմը, գաղտնիքները և ինքնազարգացումը։ Helm-ը կոդավորման/ձևանմուշների ղեկավարն է, որը վերափոխում է ագրեսիվ մանիֆեստները կրկնվող տարբերակների և կախվածությունների կառավարման հետ։ Միասին նրանք տալիս են կանխատեսելի դոպլոներ, արագ արձագանքներ և ենթակառուցվածքի միասնական լեզուն։
2) Դիզայն 2019
2. 1 Տեղաբանություն և անկայունություն
Multi-AZ: wwww.l plane և աշխատանքային փամփուշտների ցանկը բաժանված են գոտիներով։ PDB/TopologySpreadConstrainment հավասարության համար։
Multregion/DR: անկախ կլաստերներ per-region; միջտարածաշրջանային զանգերը միայն «սառը» ճանապարհներով (108 և/թելեմետրիա), «տաք» (դրամապանակներ) տեղական են։
Worker-puls պրոֆիլներով '«general», «comport», «io», «spot» (ֆոնային խնդիրների համար)։ Նշանակումը nodeDirector/affinity/tainae միջոցով։
2. 2 Անունների տարածքներ և բազմաֆիլմային մոդել
Namespace-մեկուսացումը/թիմերը '«payments», «wallet», «games», «reporting»։
Resourts Delta + LimitRange: CPU/RAM հիմնական սահմանները և առավելագույն կրկնօրինակը։ պաշտպանություն «փոշեկուլներից»։
RBAC 'read-only-ի դերը լռելյայն, write-ը միայն CI/CD և on-call դերերն են։
2. 3 Ցանց
CNI-ը NetworkPolicy-ի աջակցությամբ (Calico/Cil.ru): L3/L4 namespace/label քաղաքականությունը։
Ingress 24Gateway API-ը 'անցումը «GatewayClass/Gateway/HTTPRense» մոդելի և շատ տենանտերության համար։
Black Mesh (oporation): mTSA, retry/breaker, www.ality-a.ru; ներառել կետային հուսալիություն։
3) Մոսկվան և մեծացումը
3. 1 Skeiling
HPA-ն օգտագործողի չափումների վրա (RPS/latency/queue depth), ոչ միայն CPU-ն։
MSA-ն բեռնման ֆոնային դասարանում; վաճառքում '«recommendation only» կամ HPA-ի հետ միասին տարբեր մետրերով։
Cluster Autoscaler: անհատական node produps զգայուն ծառայությունների համար։ warm-pool գագաթներին (radia/խաղեր)։
3. 2 Ռեսուրսներ և QoS
Յուրաքանչյուր Pod-ն ունի reques.ru/limits; խուսափել 'latest' և «անսահմանափակ» բեռնարկղերից։
Priorts Class: քննադատական ծառայությունները («wallet», «payments») դուրս են մղում ոչ ռիթմիկ։
PDB 'Մենք թույլ չենք տալիս, որ ձեր ոտքը "կրակենք, երբ նորարարության մեջ է։
3. 3 Թարմացումներ առանց խոչընդոտների
RollingContate c www.Unavailable = 0 կրիտիկական ճանապարհների վրա։
PodDisruptionBudget + ReadinessProbes (не `startupProbe` вместо readiness).
Surge-հզորությունը արագ ածխաջրածինների համար գագաթների ժամանակ 'զգուշությամբ։
4) Պլատֆորմի անվտանգությունը
Pod You (Baseline/Resricted) namespace մակարդակում։ արգելքը 'privileged', hostPath, root.
NetworkPolicy: wwww.ru-deny և սպիտակ ցուցակները պորտերի/label։
Seccomp/AppArmor, non-root users, read-only rootfs.
Secrets: KFC/Vast պրովայդերը (CSI), չենք պահում գաղտնիքները «values» -ում։ yaml 'բաց տեսքով։
RBAC-նվազագույն 'ծառայողական հաշիվները տալիս ենք միայն անհրաժեշտ իրավունքներ։ կարճատև են։
Admission-վերահսկումը 'OPA/Gatekeeper/Kyverno - պիտակների enforce, limits, policy խախտումներ։
5) Observability
OpenTelemetry-ը Ingress/Gateway-ի հետքն է մեջբերում BD/kash ծառայության, պարտադիր պիտակները '108, «version», «region», «partner», «api _ version»։
Լոգները 'կառուցվածքային, առանց PII/PAN; միկրոավտոբիա կենտրոնացված պահեստում։
Մետրիկները ՝ RED/USE, SLO-dashbords, burn-rate ալերտներ։
Սինթետիկ 'փորձարկումներ ճիշտ երկրներից/ASN; պարամետրի և ներքին health-winks։
6) GitOps и progressive delivery
Argo CD/Flux: ցանկալի վիճակը պահպանվում է Git-ում։ յուրաքանչյուր namespace - իր ռեպոզորիան/պանակ։
Արտեֆակտների խթանումը '«dev nostage no.» PR-ի միջոցով, ոչ թե «kubectl apply»։
Canary/Blue-Green: Argo Rollouts/Gateway API; Հաջողության մետրերը 'P95/P99, error-rate, բիզնես SLI (CR դեպոզիտներ)։
Արձագանքներ ՝ Helm/Argo - կոճակով; գծապատկերներում, տարբերակները ֆիքսված են։
7) Helm: Լավագույն պրակտիկան
7. 1 Գծապատկերի կառուցվածքը
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)
Առաջարկություններ
«version» -ը աղյուսակի տարբերակն է (SemVer), «appVersion» -ը հավելվածի (պատկերների) տարբերակն է։
Ռեսուրսների խիստ անունները ՝ «+ + + include» svc. fullname"։ kubernetes. io/`.
Պարտադիր մանիֆեստներ ՝ Deploy.ru/StatefullPro, Live Account, HPA (եթե կիրառելի), PDB, NetworkPolicy։
7. 2 Values ռազմավարություն
Հիմնական 'values։ yaml '- դեֆոլտներ, առանց գաղտնիքների և առանձնահատկությունների։
Overraids: "values- ը + stage '24.yaml '+ per-region ֆայլեր։
Գաղտնիքները ՝ SOPS ("values-2019։ sops. yaml ') կամ Vox-միգրացիան CSI-ի միջոցով։
Ռեսուրսների և փորձարկման պարամետրերը values-ում են «խելացի» դեֆոլտներով։
7. 3 Կախվածություն և ընդհանուր կոդ
Ընդհանուր քարտրիջների գրադարանները (probes, annotom, NetworkPolicy)։
Կախվածություն ("requirements "/" Chart. yaml ') ձայնագրեք համաձայն։ խուսափեք խորը «մատրեշներից»։
7. 4 Ձևանմուշներ և ստուգումներ
Օգտագործեք «required» և «fail» -ը _ helpers-ում։ tpl 'քննադատական արժեքների համար։
Values սխեմայի վալիդացիան '«values»։ schema. json`.
Աղյուսակի յունիտ թեստերը '«helm unittest»; ստատիկ վերլուծություն - kubeconform/kubeval։
Տեղական կարգաբերումը «helm template» + «--values» + «kubeconform» է։
7. 5 Օրինագծեր և պահեստներ
Գծապատկերի իրականացումը OCI բեռնարկղերի գրանցամատյանում։ թեգերը SemVer-ով։
Helmfile/`helmfile. d 'բազմաշերտ դասավորությունների նվագախմբի համար։
Artefakts CI: սգավորված մանիֆեստներ + www.kfile կախվածություն։
8) Օրինակ 'Deploy.ru (Helm ձևանմուշների հատված)
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 CSI-ի միջոցով (Vance/KEA) կամ SOPS-ը Git-ռեպոզորիայում (GPG/KFC բանալիներ; արգելք 'kubectl edit')։
SystigMap/Secret systeksum-ը rolling-line-ի համար։
Մի պահել PAN/PII; օգտագործել թունավորումը։
Sealed Secrets-ը պատրաստված է, բայց նախընտրելի է SOPS-ից կամ ուղիղ CSI-ից։
10) Ցանցը և պարիմետրը
GatewAY-ի համար L7-routing, canarek և blue-green; sticky-նստաշրջանները միայն այն ժամանակ, երբ անհրաժեշտ է։
MTSA-ի ծառայությունների միջև mesh/sidecar-less (Cil.ru) - ստեղնաշարի միջուկի համար։
Egress: վերահսկվող արտաքին հանգույցների ցանկը (PMS/KYC), ֆիքսված NAT-IP, թայմաուտներ և գետերի բյուջե։
11) Stateful ծառայությունները և տվյալները
OLTP-BD-ի համար օգտագործեք ամպի կառավարվող ծառայությունները կամ օպերատորները (Postgres/MySQL) առանձին կլաստերում։
PVC/CSI-ը դիպուկահարների և բեքապների քաղաքականության հետ; «PodAntiAffinity» կրկնօրինակման համար։
Հերթերի/սթրիմինգի համար 'կառավարվող լուծումներ կամ ընտրված լուծումներ։ «Ընդհանուր» պլաստիկ կլաստերի մեջ պահեք նվազագույն վիճակը։
12) CI/CD փոխակրիչ (հանրաքվե)
1. Build & test 242) SCA/lint 363) Պատկերը գրանցամատյանում (SBSA, ստորագրություն)
2. Helm-charta + «helm unittest» + kubeconform-ի գեներացիան
3. SOPS դեկրիպտը CD 246) PR-ում GitOps-reposoria-ում
4. Argo/Flux-ը օգտագործում է 388) Argo Rollouts canary 249) Avto-դատավճիռը SLO 3510) Promocia/ravatat։
13) Հարթակի հասունության մետրերը
Օրինագծերի մասնաբաժինը GitOps-ի միջոցով (նպատակը ՝ 100%)։
Ձգման ժամանակը (P95) մինչև պատրաստ, MTTR արձագանքը։
Namespace 's Pod You և NetworkPolicy (նպատակը ՝ 100%)։
ծառայությունների տոկոսը HPA-ի և ճիշտ reques.ru/limits-ի հետ։
գծապատկերի% -ը 'values։ schema. json 'և unit թեստեր։
«Ձեռքով» փոփոխությունների պատճառած միջադեպերը (նպատակը ՝ 0)։
14) Ներդրման չեկի ցուցակ
1. Ստանդարտը գոտիներով, հանգույցների փամփուշտը պրոֆիլներով։ PDB/TopologySpreadConstraints.
2. Namespace-մոդելը, Resourts Delta/LimitRange, RBAC նվազագույն։
3. Pod Security (Restricted) и default-deny NetworkPolicy.
4. Gateway API/Ingress; egress-վերահսկողությունը և NAT-ամրագրումը պրովայդերների համար։
5. Observability: OTel treiss, RED/USE, գեո սինթեզիկա; SLO-dashbords։
6. GitOps (Argo/Flux), canary/blue-green, metric։
7. Helm-ստանդարտները 'կառուցվածք, շեմա։ Ջսոն, թեստեր, SOPS/Vox, OCI-գրանցումներ։
8. HPA/SNA, Cluster Autoscaler, warm-pool գագաթներին։
9. Վիրահատությունները տվյալների հետ 'CSI դիպուկահարներ, bakaps, օպերատորներ/wwww.ed BD։
10. DR/chaos թեստեր և game-days։
15) Anti-patterna
Մեկ «հսկա» կլաստեր ամեն ինչի համար առանց մեկուսացման և քվոտաների։
Բեռնարկղերը առանց ռեսուրսների սահմանափակումների, «latest» թեգերը, probes բացակայությունը։
Գաղտնիքները 'values-ում։ yaml 'բաց տեսքով, «kubectl edit» վաճառքում։
Ալգորիթմները GitOps-ի կողքով, մանիֆեստների ձեռքով ուղղությունները կենդանի կլաստերի վրա։
NetworkPolicy/Pod You-ի բացակայությունը «հարթ» ցանցն է։
Մեկ ընդհանուր HPA ազդանշան CPU-ի համար տարբեր բեռների համար։
OLTP-BD-ի պահպանումը «ընդհանուր» ռուսական ծրագրի ներսում առանց օպերատորի և բեքապների։
16) iGaming/fintech համատեքստը 'գործնական նոտաներ
Հիբրիդային webhuks: ingress/gateway և նեղ egress PSA; խիստ թայմաուտներ/ռեգրաններ; հանգույցների առանձին փամփուշտը։
VIP-2019 'գերակայություն և առանձին երթուղիներ։ PDB և topology spread կայունության համար։
Դելտրա/պիկի 'warm-pool հանգույցներ + նախատիպային HPA; տաքացնելով։
Հաշվետվություններ/CDC 'առանձին կլաստեր/փամփուշտներ, որպեսզի ETL-ը չազդի անցքի վրա։
Կարգավորիչ 'անփոփոխ լոգներ (WORM), PII-ի թունավորումը, ցանցերի հատվածը։
Արդյունքը
Ուժեղ Kubernetes-պլատֆորմը ոչ թե «YAML» է, այլ ստանդարտները 'մեկուսացում, անվտանգության քաղաքականություն, կառավարվող ռեսուրսներ, դիտարկումներ և GitOps-կարգապահություն։ Helm-charts-ը ձեր մատակարարման պայմանագիրն է 'կանխատեսելի օրինագծեր, թեստավորված ձևանմուշներ, գաղտնիքների հետ անվտանգ աշխատանք և պարզ արձագանքներ։ Այս սկզբունքները ամրացնելով ՝ դուք կստանաք պիկի զգացում ունեցող ապրանքներ, արագացնում են օրինագծերը և դիմանում բիզնեսի և կարգավորիչների պահանջներին։