GH GambleHub

Kubernetes: кластерлер жана Helm чартс

Kubernetes: кластерлер жана Helm чартс

1) Кластердин Архитектура - жогору карап

Control Plane: 'kube-apiserver', 'etcd', 'kube-scheduler', 'kube-controller-manager', (башкарылуучу булуттардын бир бөлүгү катылган).
Worker: 'kubelet', CRI-рантайм (containerd/CRI-O), CNI-плагин, кубе-прокси/ebpf-прокси.
Ички кластердик тармак: Pod-to-Pod, Service-VIP/ClusterIP, DNS CoreDNS.
Сактоо: CSI айдоочулар, динамикалык PVC provizhining → PV (StorageClass).
Баш тартуу чектери: түйүн/AZ/аймак. Аймактар боюнча репликаларды жайгаштырыңыз (TopologySpreadConstraints/anti-affinity).

Типтүү ролдору

Платформа командасы: түзүү/жаңыртуу кластерлер, CNI/CSI/Ingress, саясат жана GitOps.
Азык-түлүк буйруктары: Деплойт хит-параддар/релиздер, коопсуздук саясатына жана ресурстарына ылайык.

2) Кластердин жашоо цикли

Түзүү: kOps, kubeadm, Rancher, EKS/AKS/GKE. Дароо OIDC аутентификация жана аудит кирет.
Upgrade: кезектешип minor-версиялары (control plane → түйүндөр), контролдонуучу maxUnavailable, стейджинг тесттери.
Add-ons (баары - Helm/GitOps аркылуу): CNI (Calico/Cilium), CSI айдоочу, Ingress-контроллер (NGINX/Gateway API/Contour/Traefik), Metrics-Server, Cluster Autoscaler, Node-Local DNS, Логин/метрика/трек.
Backaps: etcd snapshot (эгер өз алдынча башкарылса), namespace/PVC үчүн Velero.

3) Тармактар, кызматтар жана ingress

CNI: Calico (NetworkPolicy), Cilium (eBPF/servicemesh-фичи).
Service: 'ClusterIP', 'NodePort', 'LoadBalancer' (L4 булут балансы), 'ExternalName'.
Ingress/Gateway API: L7-багыттоо, TLS, периметри боюнча rate-limit/WAF тарыхы.
NetworkPolicy: демейки deny-all + ачык allow namespace/label.
Headless-service ('clusterIP: None') StatefulSet жана Discovery кызматы үчүн.

4) Сактоо (CSI) жана абалы

StorageClass: 'reclaimPolicy', 'volumeBindingMode' (мыкты жайгаштыруу үчүн 'WaitForFirstConsumer').
StatefulSet: туруктуу аттары/томдору ('volumeClaimTemplates'), 'podManagementPolicy: Parallel' тез жайгаштыруу үчүн.
ReadWriteMany: бөлүштүрүлгөн File колдонуу (EFS/Filestore) кылдат - жашыруун баалоо.
Сүрөттөр: 'VolumeSnapshotClass' + cron-backup.

5) Көп ижара жана саясат

Namespaces буюмдар/шаршемби күнү.
RBAC: минималдуу ролдору, жеке тейлөө эсептери, 'Role '/' RoleBinding' ордуна 'ClusterRole' мүмкүн болгон жерде.
PSA (Pod Security Admission): режимдери 'baseline '/' restricted' (PSP алмаштыруу).
ResourceQuota / LimitRange: потолки CPU/Memory/PVC/LoadBalancer.
OPA Gatekeeper/Kyverno: уруксат саясаты (мисалы, тыюу салуу ': latest', 'resources' талабы, 'readOnlyRootFilesystem').
ImagePolicy/Webhucks: сүрөттөрдүн кол тамгасын текшерүү (cosign/policy-controller).

6) Байкоо жана пайдалануу

Metrics: Prometheus-стек, kube-state-metrics, node-экспорттоочулар.
Logs: Fluent Bit/Vector → object/ES/OpenSearch, түйүндөрүндө айлануу.
Tracks: OpenTelemetry Collector.
SLO-дашборддор: ingress жана негизги кызматтарда RED-модель.
Autoscaler: HPA (тиркеменин метрикасы боюнча), VPA backgrund, Cluster-Autoscaler түйүндөрү үчүн.

7) Манифесттердин үлгүлөрү (шпаргалка)

Deployment (үзүндү):
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 }

StatefulSet

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 (PodDisruptionBudget):
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) Helm 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)
Chart. 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) Helm үлгүлөрү - практикасы

helpers '_ helpers. tpl 'ысымдар/белгилер/аннотациялар үчүн.
Бардык жерде 'resources', 'securityContext', 'readiness/liveness'.
Стандартташтырылган схема ('app. kubernetes. io/`).
'values' (ingress/hpa/pdb/servicemonitor) аркылуу кошумча чүчүкулак жасаңыз.
'values кирет. schema. json '- туура эмес конфигурацияларды токтотуу.
Сезимтал маалыматтар үчүн - тышкы операторлордон Secrets (External Secrets, SOPS), values сактоо эмес.

Мисал '_ helpers. tpl '(фрагмент):
gotmpl
{{- define "api. fullname" -}}
{{- printf "%s-%s".Chart. Name. Release. Name      trunc 63      trimSuffix "-" -}}
{{- end -}}
Deployment. 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 ') жана' helm dependency build '.
Чартты (prov) кол коюңуз, артефакттарды CI артефакт-репозиторийинде сактаңыз.
Library charts: жалпы үлгүлөрү (ingress/servicemonitor) кайра пайдалануу үчүн.

11) Hooks, CRD жана иш тартиби

Hooks: `pre-install`, `post-install`, `pre-upgrade`, `post-upgrade`, `test`. policies ('before-hook-creation', 'hook-succeeded') кошуу.
CRD: 'crds/' (темплейттерге чейин орнотулат), CRD жаңыртууларынан алыс болуңуз - көчүүнү өзүнчө жасаңыз.
DD миграциялары/инициализация - idempotency жана таймауттар менен job-hook.

12) Чартты жана CI тестирлөө

'helm lint' + схема валидациясы.
Helm unittest (unit), chart-testing (ct) - CIде kind/minikube монтаждоо/орнотуу.
Snapshot үлгүлөрүнүн тесттер ('helm template' → эталон менен салыштыруу).
Smoke-тесттер 'helm test' (текшерүү менен 'Pod' көтөрүп).

13) GitOps (Argo CD/Flux)

Чындыктын булагы - репозиторий. Чарт HelmRelease/HelmChart (Flux) же Application (Argo) катары сакталат.
Синк саясаты: auto-sync менен prune/self-heal, статустар жана ден соолук-текшерүү.
Промоушен версиялары: tag-botlar/semver-range, PR-flow.
repo apps (чарттар) жана env (overrides/values) бөлүнөт.
Secret-менеджмент: SOPS (age/KMS), External Secrets.

14) Коопсуздук: минималдуу зарыл

PSA restricted: артыкчылыктары жок, hostPath жок, чектелген capabilities менен, read-only rootfs.
ImagePolicy: гана кол коюлган/ишенимдүү сүрөттөр.
NetworkPolicy: "демейки кулпуланган".
RBAC: per-app тейлөө эсеби, namespace 'Role '/' RoleBinding'.
Admission-Control: Gatekeeper/Kyverno эрежелери (resources/limits, labels, no latest).
Сырлар: SOPS/External Secrets; values/plain Git.

15) Анти-үлгүлөрү

': хит-параддарда жана сүрөттөрдө latest'; жок 'values. schema. json`.
модулдук ордуна бир чоң чарт "бардык".
CRD 'templates/' → жаңыртылган башаламандык менен жаңыланат.
Катуу коддолгон аттары/порт/namespace шаблондордо.
Ресурстардын/лимиттердин жана үлгүлөрдүн жоктугу → латенттүүлүк жана туруксуздук.
Жок PDB → нөл downtime drain/upgrade мүмкүн эмес.
Сырлар жок Git; саясат-текшерүү жок манифесттер.

16) киргизүү чек-тизмеси (0-45 күн)

0-10 күн

Негизги чарт-скелетти '_ helpers менен баштоо. tpl ', labels, probes, resources, PDB/Ingress кошумча.
Включить PSA restricted, NetworkPolicy deny-all, ResourceQuota/LimitRange.
Орнотуу GitOps (Argo/Flux), жеке реестри, кол сүрөттөр/чарттар.

11-25 күн

Чартты модулга/көз карандылыкка бөлүү, 'values кошуу. schema. json ', тесттер (' helm lint ', unit, ct).
observability туташтыруу (ServiceMonitor/PodMonitor), лог-агенттер, OTel.
Жаңыртуу процессин киргизүү: staging → canary → prod, rollback менен хук-миграция.

26-45 күн

Көз карандылыкты жаңылоону автоматташтыруу (боттор/semver-ranges + PR).
Gatekeeper кошуу/Kyverno саясат жана CI саясый отчеттор.
Runbook топтомун, DR-жол-жоболорун документтештирүү (Velero/etcd snapshot).

17) Жетилүү метрикасы

100% тиркемелер Helm/GitOps аркылуу, кол менен 'kubectl apply' жок.
Бардык чарттарда 'values бар. schema. json ', тесттер, кол коюу жана көз карандылыктын белгиленген версиялары.
PSA restricted/NetworkPolicy бардык namespace киргизилген.
PDB жана HPA бардык маанилүү кызматтарда бар.
Secure Secrets (SOPS/External Secrets), "no latest" саясаты, сүрөт кол коюу.
Кластердин жана чарттын жаңыртуулары түшүүсүз (canary/blue-green) өткөрүлөт, калыбына келтирүү тесттери үзгүлтүксүз жүргүзүлөт.

18) Корутунду

Күчтүү Kubernetes-пайдубалы = ишенимдүү кластер архитектурасы + катуу саясат + GitOps тарабынан башкарылуучу өнөр жай сапаты Helm-чарттар. Стандартташтыруу үлгүлөрү, PSA/NetworkPolicy/RBAC айлана-чөйрөнү коргоо, Values тастыктоо жана автоматташтыруу тесттер, кол коюу жана промоушн. Ошондо жаңыртуулар жана релиздер алдын ала айтууга болот, ал эми платформа - азык-түлүк буйруктары үчүн туруктуу жана ыңгайлуу болот.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.