Кубернетҳо: Ҷадвалҳои кластерҳо ва Ҳелм
Кубернетҳо: Ҷадвалҳои кластерҳо ва Ҳелм
1) Меъмории кластер - Намуди боло
Ҳавопаймои назоратӣ: 'kube-apiserver', 'etcd', 'kube-scheduler', 'kube-controller-manager', (қисмат дар абрҳои идорашаванда пинҳон карда шудааст).
Коргар: 'kubelet', вақти кории CRI (контейнер/CRI-O), плагини CNI, kube-proxy/ebpf-proxy.
Шабакаи intracluster: Pod-to-Pod, Service-VIP/Cluster
Нигоҳдорӣ: драйверҳои CSI, таъминоти динамикии PVC → PV (Storage
Маҳдудиятҳои нокомӣ: гиреҳ/AZ/минтақа. Нусхабардориро аз рӯи минтақа ҷойгир кунед (Topology
Нақшҳои маъмулӣ
Фармони платформа: кластерҳо, CNI/CSI/Ingress, сиёсат ва GIT-ро эҷод/такмил медиҳад.
Гурӯҳҳои маҳсулот: диаграммаҳо/варақаҳои амонатӣ, сиёсати амният ва захираҳоро риоя кунед.
2) Давраи кластерӣ
Офариниш: Kops, kubeadm, Rancher, EKS/AKS/GKE. Дарҳол аутентификатсия ва аудити OIDC-ро фаъол созед.
Такмилдиҳӣ: версияҳои ночиз дар навбати худ (ҳавопаймои назоратӣ → гиреҳҳо), ки аз ҷониби макс дастнорас идора карда мешаванд, санҷишҳо дар саҳна.
Иловаҳо (ҳама тавассути Helm/Gitops): CNI (Calico/Cilium), ронандаи CSI, нозири Ingress (NGINX/Gateway API/Contour/Traefik), Metrics-Server, Cluster-Autoscaler, гиреҳ-DNS маҳаллӣ, воридшавӣ/ченакҳо/пайгирӣ.
Нусхабардорӣ: etcd сурат (агар худидоракунанда бошад), Velero барои фазои ном/PVC.
3) Шабакаҳо, хидматҳо ва воридшавӣ
CNI: Calico (Network .Policy), Cilium (eBPF/servicemesh-fichi).
Хизматрасонӣ: 'Cluster
Ingress/Gateway API: масири L7, TLS, таърихи меъёри лимит/WAF дар периметр.
Сиёсати шабака: рад кардан-ҳама + ба таври возеҳ бо фазои ном/нишона бо нобаёнӣ иҷозат дода мешавад.
Хизматрасонии бефосила ('claster
4) Нигоҳдорӣ (CSI) ва давлатҳо
Нигаҳдории синф: 'reclaim
StatefuL Set: Номҳо/ҷилдҳои устувор ('Volume
Бисёр хонед: файли тақсимшударо (EFS/Filestore) бодиққат истифода баред - таъхирро арзёбӣ кунед.
Суратҳо: Нусхаҳои эҳтиётии 'Volume
5) Бисёрфарҳангӣ ва сиёсат
Номҳо аз рӯи маҳсулот/муҳит.
RBAC: нақшҳои ҳадди ақал, ҳисобҳои алоҳидаи хидматӣ, 'Нақш '/' Рол Биндинг' ба ҷои 'Кластер Рол'.
PSA (Pod Security Admission): 'ҳолати ибтидоӣ '/' маҳдуд' (ивазкунии PSP).
Захира/Квота/Маҳдудият: потолки CPU/Хотира/PVC/Боркунӣ
OPA Gatekeeper/Kyverno: сиёсати қабул (масалан, манъкунӣ ': охирин', талабот 'захираҳо', 'хонед Танҳо Рут' Системаи ').
Тасвир/webhooks: санҷиши имзои тасвир (cosign/policy-controller).
6) Мушоҳида ва амалиёт
Нишондиҳандаҳо: Стек Прометей, kube-state-metrics, содиркунандагони гиреҳ.
Сабтҳо: Бит/Вектор Fluent/Объект/ES/Open-Search, гардиш дар гиреҳҳо.
Роҳҳо: Коллектори Open-Telemetry.
Панелҳои SLO: Модели RED оид ба воридшавӣ ва хидматҳои асосӣ.
Autoscale: HPA (аз рӯи ченакҳои барнома), VPA барои замина, Кластер-Автоскалер барои гиреҳҳо.
7) Намунаҳои намоён (варақи фиреб)
Ҷойгиркунӣ:yaml apiVersion: apps/v1 kind: Deployment metadata: { name: api, labels: { app: api } }
spec:
replicas: 3 strategy: { type: RollingUpdate, rollingUpdate: { maxUnavailable: 0, maxSurge: 1 } }
selector: { matchLabels: { app: api } }
template:
metadata:
labels: { app: api }
spec:
serviceAccountName: api-sa securityContext: { runAsNonRoot: true, fsGroup: 2000 }
containers:
- name: api image: registry. example. com/api:1. 2. 3 ports: [{ containerPort: 8080 }]
resources: { requests: { cpu: "200m", memory: "256Mi" }, limits: { cpu: "1", memory: "512Mi" } }
readinessProbe: { httpGet: { path: /healthz, port: 8080 }, periodSeconds: 5 }
livenessProbe: { httpGet: { path: /livez, port: 8080 }, initialDelaySeconds: 20 }
StatefielD Set (порча):
yaml apiVersion: apps/v1 kind: StatefulSet metadata: { name: db }
spec:
serviceName: db replicas: 3 podManagementPolicy: Parallel selector: { matchLabels: { app: db } }
template:
metadata: { labels: { app: db } }
spec:
containers:
- name: db image: postgres:16-alpine volumeMounts: [{ name: data, mountPath: /var/lib/postgresql/data }]
volumeClaimTemplates:
- metadata: { name: data }
spec:
accessModes: ["ReadWriteOnce"]
resources: { requests: { storage: 100Gi } }
storageClassName: fast-ssd
PDB (Pod
yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: { name: api-pdb }
spec:
minAvailable: 2 selector: { matchLabels: { app: api } }
Ingress (Nginx, мухтасар):
yaml apiVersion: networking. k8s. io/v1 kind: Ingress metadata:
name: api annotations:
nginx. ingress. kubernetes. io/proxy-read-timeout: "30"
spec:
tls: [{ hosts: ["api. example. com"], secretName: api-tls }]
rules:
- host: api. example. com http:
paths:
- path: /
pathType: Prefix backend: { service: { name: api, port: { number: 80 } } }
8) Ҳелм v3 - асосҳо ва сохтор
Диаграмма = қолабҳо + арзишҳо + метамаълумот.
mychart/
Chart. yaml # name, version (semver), type (application/library), dependencies values. yaml # default values. schema. json # (recommended) validation values templates/# .yaml. gotmpl (Deployment, Service, Ingress, …)
templates/tests/ # helm tests (smoke)
charts/# local dependencies (or OCI dependencies)
Диаграмма. yaml (мисол):
yaml apiVersion: v2 name: api description: API service type: application version: 1. 4. 0 # chart version (semver)
appVersion: "1. 2. 3" # dependencies application version:
- name: redis version: 17. x.x repository: "oci://registry. example. com/charts"
9) Шаблонҳои чарх - Амалияҳо
Дар '_ ёрирасон ёрирасонро истифода баред. tpl 'барои номҳо/тамғакоғазҳо/эзоҳҳо.
'Захираҳо', 'Context', 'омодагӣ/зиндагӣ' -ро дар ҳама ҷо муайян кунед.
Эҷод кардани тамғакоғазҳо аз рӯи схемаи стандартӣ ('app. kubernetes. io/').
Хусусиятҳоро тавассути 'values' ихтиёрӣ созед (ingress/hpa/pdb/servicemonitor).
Дохил кардан 'values. схема. json '- қатъ аз конфигуратсияҳои нодуруст.
Барои маълумоти ҳассос - Асрори операторони беруна (Сирри беруна, SOPS) ва арзишҳоро нигоҳ намедоранд.
gotmpl
{{- define "api. fullname" -}}
{{- printf "%s-%s".Chart. Name. Release. Name trunc 63 trimSuffix "-" -}}
{{- end -}}
Ҷойгиркунӣ. tpl (порча):
gotmpl apiVersion: apps/v1 kind: Deployment metadata:
name: {{ include "api. fullname". }}
labels: {{- include "api. labels". nindent 4 }}
spec:
replicas: {{.Values. replicaCount }}
strategy:
rollingUpdate:
maxSurge: 1 maxUnavailable: 0 selector:
matchLabels: {{- include "api. selectorLabels". nindent 6 }}
template:
metadata:
labels: {{- include "api. selectorLabels". nindent 8 }}
spec:
serviceAccountName: {{ include "api. serviceAccountName". }}
securityContext: {{- toYaml. Values. podSecurityContext nindent 8 }}
containers:
- name: {{.Chart. Name }}
image: "{{.Values. image. repository }}:{{.Values. image. tag }}"
imagePullPolicy: IfNotPresent ports: [{ containerPort: {{.Values. service. port }} }]
resources: {{- toYaml. Values. resources nindent 10 }}
envFrom:
- secretRef: { name: {{.Values. secretsRef }} }
10) Вобастагӣ, анборҳо ва OCI
Helm v3 регистрҳои OCI-ро дастгирӣ мекунад: 'oci ://registry/org/charts'.
Версияҳои вобастагии қулф ('ī 1. 2. 0`, `~1. 2 ') ва "бунёди вобастагии чарх" -ро иҷро кунед.
Диаграмма (мас) -ро имзо кунед, артефактҳоро дар анбори артефактҳои CI нигоҳ доред.
Диаграммаҳои китобхона: қолабҳои умумӣ (ingress/servicemonitor) барои истифодаи дубора.
11) Қалмоқҳо, CRD ва тартиби амалиёт
Қалмоқҳо: 'пешакӣ насб кардан', 'пас аз насб кардан', 'пеш аз навсозӣ', 'пас аз навсозӣ', 'озмоиш'. Илова кардани сиёсатҳо ('пеш аз эҷод кардан', 'қалмоқе-муваффақ').
CRD: дар 'crds/' гузоред (ба қолабҳо насб кунед), аз навсозиҳои CRD дар магас канорагирӣ кунед - алоҳида муҳоҷират кунед.
Муҳоҷирати пойгоҳи додаҳо/оғозёбӣ - қалмоқе бо кор ва номутобиқатӣ ва танаффус.
12) Санҷиши диаграмма ва CI
'helm lint' + тасдиқи схема.
Helm unittest (воҳиди), санҷиши диаграмма (ct) - васлкунӣ/насб дар намуди/minikube дар CI.
Санҷишҳои лаҳзаи қолибҳо ('қолаби чарх' → бо қолаб муқоиса кунед).
Санҷиши дуд 'озмоиши чарх' (баланд бардоштани 'санҷишҳои Pod' with).
13) Гитопҳо (Argo CD/Flux)
Манбаи ҳақиқат анбор аст. Диаграмма ҳамчун Helmrelease/Helmchart (Flux) ё Application (Argo) нигоҳ дошта мешавад.
Сиёсати ғалтак: худкор ҳамоҳангсозӣ бо prune/худтанзимкунӣ, статусҳо ва санҷиши саломатӣ.
Версияҳои таблиғотӣ: tag-bots/semver-range, PR-flow.
Репоро ба барномаҳо (диаграммаҳо) ва env тақсим кунед (аз ҳад зиёд/арзишҳо).
Идоракунии махфӣ: SOPS (синну сол/KMS), Асрори беруна.
14) Бехатарӣ: ҳадди аққал талаб карда мешавад
PSA маҳдуд аст: ҳеҷ гуна имтиёзҳо, ҳеҷ гуна Host-Path, имкониятҳои маҳдуд, решаҳои танҳо барои хондан.
Policy Image - танҳо тасвирҳои имзошуда/боваринок.
Сиёсати шабака: "бо нобаёнӣ баста шудааст".
RBAC: ҳисоби хидматрасонии ҳар як барнома, 'Нақш '/' Нақши ҳатмӣ' дар фазои ном.
Назорати қабул: Қоидаҳои дарвоза/Киверно (захираҳо/маҳдудиятҳо, тамғакоғазҳо, охирин нестанд).
Асрҳо: SOPS/Сирри беруна; сирри худро ба арзишҳо нагузоред/Git оддӣ.
15) Анти-намунаҳо
': охирин' дар диаграммаҳо ва тасвирҳо; набудани 'values. схема. json '.
Як диаграммаи азим "барои ҳама чиз" ба ҷои модулӣ.
CRD-ҳо бо қолибҳо дар 'қолабҳо/' → бетартибӣ дар навсозӣ нав карда мешаванд.
Номҳои сахт/порт/фазои ном дар қолибҳо.
Набудани захираҳо/маҳдудиятҳо ва намунаҳо → кашолакунӣ ва ноустуворӣ.
Бо дренаж/такмилдиҳӣ ҳеҷ гуна PDB → сифр хомӯш кардан имконнопазир аст.
Асрҳо дар Git бе рамзгузорӣ; бидуни сиёсати санҷиш зоҳир мешавад.
16) Рӯйхати санҷиши амалисозӣ (0-45 рӯз)
0-10 рӯз
Сохтани скелети асосӣ бо '_ ёрирасон. tpl ', тамғакоғазҳо, зондҳо, захираҳо, PDB/Ingress ихтиёрӣ.
Включить ПСА-ро махдуд кард, Шабакахо инкор мекунанд-хама, Resource
Конфигуратсияи Gitops (Argo/Flux), феҳристи хусусӣ, имзои тасвир/диаграмма.
11-25 рӯз
Ҷадвалро ба модулҳо/вобастагӣ тақсим кунед, илова кунед. схема. json ', озмоишҳо (' helm lint ', воҳиди, ct).
Пайвастшавиро пайваст кунед (Service. Monitor/Pod- Monitor), агентҳои журнал, OT-el.
Раванди такмилдиҳиро ворид кунед: марҳиласозӣ → canary → prod, муҳоҷирати қалмоқӣ бо бозгашт.
26-45 рӯз
Автоматикунонии навсозии вобастагӣ (bots/semver-range + PR).
Сиёсати Gatekeeper/Kyverno ва ҳисоботҳои сиёсатро ба CI илова кунед.
Ҳуҷҷатгузории дафтарчаи такмилдиҳии кластер, тартиботи DR (тасвири Velero/etcd).
17) Нишондиҳандаҳои камолот
100% барномаҳо тавассути дастӣ Helm/Gitops тамом мешаванд.
Ҳамаи диаграммаҳо 'values доранд. схема. json ', озмоишҳо, имзоҳо ва версияҳои вобастагӣ.
PSA маҳдуд/Network-Policy дар ҳама фазои ном фаъол аст.
PDB ва HPA дар ҳама хадамоти муҳим мавҷуданд.
SOPS/Сирри беруна, сиёсати охирин, имзои тасвир нест.
Такмили кластер ва диаграмма бидуни истироҳат (канарӣ/кабуд-сабз) анҷом дода мешавад, санҷишҳои барқароркунӣ мунтазам мебошанд.
18) Хулоса
Бунёди мустаҳками Кубернетес = меъмории мустаҳками кластер + сиёсатҳои қатъӣ + диаграммаҳои сифати саноатӣ аз ҷониби Git Қолибҳоро стандартисозӣ кунед, муҳити PSA/Network/Policy/RBAC-ро ҳифз кунед, арзишҳоро тасдиқ кунед ва санҷишҳо, имзо ва таблиғотро автоматӣ кунед. Он гоҳ навсозӣ ва релизҳо пешгӯишаванда мешаванд ва платформа барои гурӯҳҳои маҳсулот устувор ва қулай хоҳад буд.