GH GambleHub

Kubernetes: Kümeler ve Dümen grafikleri

Kubernetes: Kümeler ve Dümen grafikleri

1) Küme Mimarisi - Üst Görünüm

Kontrol Düzlemi: 'Kube-apiserver', 'etcd', 'kube-scheduler', 'kube-controller-manager', (bir kısmı kontrollü bulutlarda gizlidir).
İşçi: 'kubelet', CRI çalışma zamanı (containerd/CRI-O), CNI eklentisi, kube-proxy/ebpf-proxy.
Intracluster ağ: Pod-to-Pod, Service-VIP/ClusterIP, DNS CoreDNS.
Depolama: CSI sürücüleri, dinamik PVC - PV sağlama (StorageClass).
Hata sınırları: düğüm/AZ/bölge. Kopyaları bölgeye göre yerleştir (TopologySpreadConditions/anti-affinity).

Tipik roller

Platform komutu: kümeler, CNI/CSI/Ingress, policy ve GitOps oluşturur/yükseltir.
Ürün ekipleri: para yatırma çizelgeleri/sürümleri, güvenlik politikalarını ve kaynaklarını izleyin.

2) Küme yaşam döngüsü

Oluşturma: kOps, kubeadm, Rancher, EKS/AKS/GKE. OIDC kimlik doğrulamasını ve denetimini hemen etkinleştirin.
Yükseltmeler: Sırayla küçük sürümler (kontrol düzlemi - düğümler), maxUnavailable tarafından kontrol edilir, evreleme testleri.
Eklentiler (tümü Helm/GitOps aracılığıyla): CNI (Calico/Cilium), CSI sürücüsü, Giriş denetleyicisi (NGINX/Gateway API/Contour/Traefik), Metrics-Server, Cluster-Autoscaler, Node-Local DNS, logging/metrics/trace.
Yedeklemeler: etcd snapshot (kendi kendini yönetiyorsa), isim alanı/PVC için Velero.

3) Ağlar, hizmetler ve giriş

CNI: Calico (NetworkPolicy), Cilium (eBPF/servicemesh- фичи).
Servis: 'ClusterIP', 'NodePort', 'LoadBalancer' (L4 bulut dengeleme), 'ExternalName'.
Giriş/Ağ Geçidi API'si: L7 yönlendirme, TLS, çevrede hız sınırı/WAF geçmişi.
NetworkPolicy: deny-all + explicit allow by namespace/label varsayılan olarak.
StatefulSet ve servis keşfi için başsız servis ('clusterIP: None').

4) Depolama (CSI) ve durumlar

StorageClass: 'reclaimPolicy', 'volumeBindingMode' (daha iyi yerleştirme için 'WaitForFirstConsumer').
StatefulSet: hızlı taramalar için kararlı adlar/birimler ('volumeClaimTemplates'), 'podManagementPolicy: Parallel'.
ReadWriteMany: dağıtılmış dosyayı (EFS/Filestore) dikkatli kullanın - gecikmeyi değerlendirin.
Anlık görüntüler: 'VolumeSnapshotClass' + cron yedeklemeleri.

5) Çok kiracılık ve politika

Ürün/ortama göre ad alanları.
RBAC: minimal roller, ayrı servis hesapları, mümkünse 'ClusterRole' yerine 'Role'/' RoleBinding'.
PSA (Pod Security Admission): 'Baseline'/' restricted' modları (PSP değiştirme).
KaynakKota/LimitAralık: потолки CPU/Bellek/PVC/LoadBalancer.
OPA Gatekeeper/Kyverno: kabul politikası (örn. yasaklama ': en son', gereksinim 'kaynaklar', 'OnlyRootFilesystem' okuyun).
ImagePolicy/webhooks: görüntü imza doğrulaması (cosign/policy-controller).

6) Gözlemlenebilirlik ve çalışma

Metrikler: Prometheus yığını, kube-state-metrics, düğüm ihracatçıları.
Günlükler: Akıcı Bit/Vektör - nesne/ES/OpenSearch, düğümlerde dönüş.
Yollar: OpenTelemetry Collector.
SLO panoları: Giriş ve anahtar servislerde RED modeli.
Autoscale: HPA (uygulama metriklerine göre), arka plan için VPA, düğümler için Cluster-Autoscaler.

7) Tezahür kalıpları (hile sayfası)

Dağıtım:
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 (snippet):
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 } }
Giriş (Nginx, kısaca):
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 - temelleri ve yapısı

Grafik = şablonlar + değerler + meta veriler.


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)
Grafik. yaml (örnek):
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) Dümen Şablonları - Uygulamalar

'_ helpers içindeki yardımcıları kullan. İsimler/etiketler/ek açıklamalar için tpl '.
Her yerde 'kaynaklar', 'güvenlik' Bağlamı ',' hazırlık/canlılık 'belirtin.
Standart bir şemaya ('app. kubernetes. io/').
Özellikleri 'değerler' (ingress/hpa/pdb/servicemonitor) aracılığıyla isteğe bağlı hale getirin.
Include 'değerleri. şema. json '- yanlış yapılandırmalardan vazgeç.
Hassas veriler için - Dış operatörlerden gelen sırlar (Dış Sırlar, SAPS) ve değerlerde depolanmaz.

Örnek '_ yardımcıları. tpl '(fragman):
gotmpl
{{- define "api. fullname" -}}
{{- printf "%s-%s".Chart. Name. Release. Name      trunc 63      trimSuffix "-" -}}
{{- end -}}
Görev dağılımı. tpl (fragment):
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) Bağımlılıklar, depolar ve OCI

Helm v3, OCI kayıtlarını destekler: 'oci ://registry/org/charts'.
Bağımlı sürümleri kilitle ('^ 1. 2. 0`, `~1. 2 ') ve' helm dependency build 'çalıştırın.
Grafiği imzalayın (prov), eserleri CI eser deposunda saklayın.
Kütüphane çizelgeleri: genel şablonlar (giriş/servicemonitor) yeniden kullanım için.

11) Kancalar, CRD ve işlem sırası

Hooks: 'Pre-install', 'post-install', 'pre-upgrade', 'post-upgrade', 'test'. Politikalar ekle ('before-hook-creation', 'hook-succeed').
CRD: 'crds/' (şablonlara ayarlanmış) koyun, anında CRD güncellemelerinden kaçının - ayrı olarak geçirin.
Veritabanı geçişleri/başlatılması - idempotency ve zaman aşımları ile iş kanca.

12) Grafik ve CI testi

'helm lint' + planın doğrulanması.
Helm unittest (birim), grafik testi (ct) - CI'de ayni/minikube montaj/kurulum.
Şablonların anlık görüntü testleri ('dümen şablonu' - bir şablonla karşılaştırın).
Duman testleri 'dümen testi' (çeklerle 'Pod' yükseltin).

13) GitOps (Argo CD/Flux)

Gerçeğin kaynağı depodur. Grafik HelmRelease/HelmChart (Flux) veya Application (Argo) olarak depolanır.
Lavabo politikaları: Kuru erik/kendi kendine iyileşme, durumlar ve sağlık kontrolleri ile otomatik senkronizasyon.
Promosyon sürümleri: tag-bots/semver-range, PR-flow.
Repo'yu uygulamalara (grafikler) ve env'ye (geçersiz kılmalar/değerler) bölün.
Gizli yönetim: SOP (yaş/KMS), Dış Sırlar.

14) Güvenlik: minimum gerekli

PSA kısıtlı: ayrıcalık yok, hostPath yok, sınırlı yetenekler, salt okunur rootflar.
ImagePolicy - yalnızca imzalı/güvenilir görüntüler.
NetworkPolicy: "locked by default".
RBAC: uygulama başına hizmet hesabı, ad alanında 'Rol'/' RoleBinding'.
Giriş kontrolü: Gatekeeper/Kyverno kuralları (kaynaklar/sınırlar, etiketler, en son yok).
Sırlar: SAPS/Dış Sırlar; Sırları değerlere/düz Git'e koymayın.

15) Anti-desenler

': son' çizelgeleri ve görüntüleri; 'değerlerinin yokluğu. şema. Json '.
Modüler yerine'her şey için "büyük bir grafik.
CRD'ler 'şablonlar/' içindeki şablonlarla güncellenir - yükseltmelerde kaos.
Şablonlarda sabit kodlu adlar/port/ad alanı.
Kaynak/limit ve numune eksikliği - gecikme sürüklenme ve kararsızlık.
Hiçbir PDB yok - drenaj/yükseltmelerle sıfır kesinti mümkün değildir.
Şifrelemesiz Git sırları; Çek politikası olmadan tezahür eder.

16) Uygulama kontrol listesi (0-45 gün)

0-10 gün

'_ helpers'ile temel bir grafik iskeleti oluşturun. tpl ', etiketler, problar, kaynaklar, isteğe bağlı PDB/Giriş.
PSA kısıtlı Включить, NetworkPolicy tüm inkar, ResourceCota/LimitRange.
GitOps (Argo/Flux), özel kayıt, görüntü/grafik imzasını yapılandırın.

11-25 gün

Grafiği modüllere/bağımlılıklara bölün, 'değer' ekleyin. şema. Json ', testler (' helm lint ', ünite, ct).
Bağlantı gözlemlenebilirliği (ServiceMonitor/PodMonitor), log ajanları, OTel.
Yükseltme işlemini girin: evreleme - kanarya - prod, geri alma ile kanca geçişi.

26-45 gün

Bağımlılık güncellemelerini otomatikleştirin (botlar/semver-aralıkları + PR).
Gatekeeper/Kyverno politikalarını ve politika raporlarını CI'ye ekleyin.
Küme yükseltme çalışma kitabını, DR yordamlarını (Velero/etcd snapshot) belgeleyin.

17) Olgunluk metrikleri

Uygulamaların %100'ü 'kubectl apply' manually olmadan Helm/GitOps aracılığıyla tüketilir.
Tüm grafiklerin 'değerleri' vardır. şema. Json ', testler, imza ve taahhüt bağımlılık sürümleri.
PSA restricted/NetworkPolicy tüm ad alanlarında etkindir.
PDB ve HPA tüm kritik hizmetlerde mevcuttur.
SOP/Dış Sırlar, en son politika yok, görüntü imzası.
Küme ve grafik yükseltmeleri kesinti olmadan gerçekleştirilir (kanarya/mavi-yeşil), geri yükleme testleri düzenlidir.

18) Sonuç

Güçlü Kubernetes temeli = sağlam küme mimarisi + sıkı politikalar + GitOps tarafından yönetilen endüstriyel kaliteli Dümen grafikleri. Şablonları standartlaştırın, PSA/NetworkPolicy/RBAC ortamını güvence altına alın, değerleri doğrulayın ve testleri, imzayı ve promosyonu otomatikleştirin. Daha sonra yükseltmeler ve sürümler öngörülebilir hale gelecek ve platform ürün ekipleri için istikrarlı ve uygun hale gelecektir.

Contact

Bizimle iletişime geçin

Her türlü soru veya destek için bize ulaşın.Size yardımcı olmaya her zaman hazırız!

Telegram
@Gamble_GC
Entegrasyona başla

Email — zorunlu. Telegram veya WhatsApp — isteğe bağlı.

Adınız zorunlu değil
Email zorunlu değil
Konu zorunlu değil
Mesaj zorunlu değil
Telegram zorunlu değil
@
Telegram belirtirseniz, Email’e ek olarak oradan da yanıt veririz.
WhatsApp zorunlu değil
Format: +ülke kodu ve numara (örneğin, +90XXXXXXXXX).

Butona tıklayarak veri işlemenize onay vermiş olursunuz.