GH GambleHub

Kubernetes: Συστάδες και διαγράμματα Helm

Kubernetes: Συστάδες και διαγράμματα Helm

1) Αρχιτεκτονική συμπλέγματος - Κορυφαία προβολή

Επίπεδο ελέγχου: 'kube-apiserver', 'etcd', 'kube-scheduler', 'kube-controller-manager' (μέρος είναι κρυμμένο σε ελεγχόμενα σύννεφα).
Εργαζόμενος: 'kubelet', CRI runtime (containerd/CRI-O), CNI plugin, kube-proxy/ebpf-proxy.
Δίκτυο Intracluster: Pod-to-Pod, Service-VIP/ClusterIP, DNS CoreDNS.
Αποθήκευση: οδηγοί CSI, δυναμική παροχή PVC → φωτοβολταϊκών (Stories Class).
Όρια αστοχίας: κόμβος/AZ/περιοχή. Τοποθετήστε τα αντίγραφα ανά ζώνη (Topology Constrents/anti-affinity).

Τυπικοί ρόλοι

Εντολή πλατφόρμας: δημιουργεί/αναβαθμίζει ομάδες, CNI/CSI/Ingress, πολιτική και GitOps.
Ομάδες προϊόντων: διαγράμματα/κυκλοφορίες καταθέσεων, ακολουθούν πολιτικές και πόρους ασφαλείας.

2) Κύκλος ζωής των συνεργατικών σχηματισμών

Δημιουργία: kOps, kubeadm, Rancher, EKS/AKS/GKE. Ενεργοποίηση της ταυτοποίησης και του ελέγχου OIDC αμέσως.
Αναβαθμίσεις: δευτερεύουσες εκδόσεις με τη σειρά τους (επίπεδο ελέγχου → κόμβοι), ελεγχόμενες από το maxUnailable, δοκιμές στάσης.
Πρόσθετα (όλα μέσω Helm/GitOps): CNI (Calico/Cilium), οδηγός CSI, ελεγκτής εισόδου (NGINX/Gateway API/Contour/Traefik), Metrics-Server, Cluster-Autoscaler, κόμβος-τοπικό DNS, καταγραφή/μετρήσεις/ίχνος.
Backups: etcd στιγμιότυπο (εάν αυτοδιαχειριζόταν), Velero για χώρο ονομάτων/PVC.

3) Δίκτυα, υπηρεσίες και είσοδος

CNI: Calico (NetworkPolicy), Cilium (eBPF/servicemesh- фичи).
Υπηρεσία: 'ClusterIP', 'NodePor ,' Balancer '(L4 cloud balancing),' EndyName '.
Είσοδος/Πύλη API: δρομολόγηση L7, TLS, όριο ταχύτητας/ιστορικό WAF στην περίμετρο.
NetworkPolicy: άρνηση-όλα + ρητή δυνατότητα με ονοματεπώνυμο/ετικέτα εξ ορισμού.
Ακέφαλη υπηρεσία («clusterIP: No») για την ανακάλυψη Stat Set και υπηρεσίας.

4) Αποθήκευση (CSI) και κράτη

Stories Class: 'reclaimPolicy', 'ways Mode' ('RecureForFirstConsumer' για καλύτερη τοποθέτηση).
Stat Set: stable names/volumes ('wayingerChemplates'), 'podManagementPolicy: Parallel' για γρήγορες σαρώσεις.
ReadWrashMany: χρησιμοποιήστε προσεκτικά το κατανεμημένο αρχείο (EFS/Filestore) - αξιολογήστε την καθυστέρηση.
Στιγμιότυπα: 'SeasonSnap Class' + cron backups.

5) Πολυπλοκότητα και πολιτική

Χώροι ονομάτων ανά προϊόν/περιβάλλον.
RBAC: ελάχιστοι ρόλοι, χωριστοί λογαριασμοί υπηρεσιών, «Role »/« RoleBunding» αντί «ClusterRole» όπου είναι δυνατόν.
PSA (Pod Security Admission): 'baseline '/' restricted' modes (αντικατάσταση PSP).
ResourceΠοσοστώσεις/LimitRange: CPU/μνήμη/PVC/ Balancer.
OPA Gatekeeper/Kyverno: πολιτική εισδοχής (π.χ. απαγόρευση «: τελευταία», απαίτηση «πόροι», «readOnLongRootFilesystem»).
ImoPolicy/webhooks: επαλήθευση υπογραφής εικόνας (cosign/policy-controller).

6) Παρατηρησιμότητα και λειτουργία

Μετρήσεις: Prometheus stack, kube-state-metrics, node exporters.
Αρχεία καταγραφής: Fluent Bit/Vector → object/ES/OpenSearch, περιστροφή σε κόμβους.
Διαδρομές: OpenTelemetry Collector.
Ταμπλό SLO: μοντέλο RED για την είσοδο και τις βασικές υπηρεσίες.
Αυτόματη κλίμακα: HPA (με μετρήσεις εφαρμογής), VPA για φόντο, Cluster-Autoscaler για κόμβους.

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 }
Stat Set (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 (PodDislicensBudget):
yaml apiVersion: policy/v1 kind: PodDisruptionBudget metadata: { name: api-pdb }
spec:
minAvailable: 2 selector: { matchLabels: { app: api } }
Είσοδος (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)
Διάγραμμα. 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 - Πρακτικές

Χρήση βοηθών σε '_ βοηθούς. tp για ονομασίες/ετικέτες/σημειώσεις.
Προσδιορίστε τους "πόρους", το "securitContro , την" ετοιμότητα/ζωντάνια "παντού.
Δημιουργία ετικετών σύμφωνα με ένα τυποποιημένο σχήμα ('app. kubernetes. ιο/').
Δημιουργία προαιρετικών χαρακτηριστικών μέσω «αξιών» (ingress/hpa/pdb/servicemonitor).
Συμπεριλαμβάνονται οι αξίες. σχήμα. json '- σταματήστε από εσφαλμένες ρυθμίσεις.
Για ευαίσθητα δεδομένα - Μυστικά από εξωτερικούς φορείς (εξωτερικά μυστικά, SOPS) και μη αποθήκευση σε τιμές.

Παράδειγμα '_ βοηθών. tpl '(θραύσμα):
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 ') και εκτελείται «κατασκευή εξάρτησης από το πηδάλιο».
Υπογράψτε το διάγραμμα (prov), αποθηκεύστε αντικείμενα στο αποθετήριο τεχνουργημάτων CI.
Διαγράμματα βιβλιοθήκης: γενικά πρότυπα (είσοδος/εξυπηρετητής) για επαναχρησιμοποίηση.

11) Αγκίστρια, ΟΚΑ και σειρά εργασιών

Αγκίστρια: 'προ-εγκατάσταση', 'μετά την εγκατάσταση', 'προ-αναβάθμιση', 'μετά την αναβάθμιση', 'δοκιμή'. Προσθήκη πολιτικών («πριν από τη δημιουργία», «επιτυχής»).
CRD: τοποθετήστε «crds/» (που έχουν οριστεί σε πρότυπα), αποφύγετε επικαιροποιήσεις CRD στην πτήση - μεταβείτε χωριστά.
Μετανάστευση βάσεων δεδομένων/αρχικοποίηση - αγκίστρι εργασίας με ιδιαιτερότητα και χρονοδιαγράμματα.

12) Δοκιμή χάρτη και ΚΚΠ

"helm lin + επικύρωση του συστήματος.
Helm unitest (μονάδα), δοκιμή χάρτη (ct) - συναρμολόγηση/εγκατάσταση σε είδος/minikube σε CI.
Στιγμιότυπο δοκιμών προτύπων ('πρότυπο πηδαλίου' → σύγκριση με ένα πρότυπο).
Δοκιμές καπνού "δοκιμή πηδαλίου" (ανύψωση "ελέγχων Po with).

13) GitOps (Argo CD/Flux)

Η πηγή της αλήθειας είναι το αποθετήριο. Το διάγραμμα αποθηκεύεται ως HelmRelease/HelmChart (Flux) ή Application (Argo).
Πολιτικές βυθίσεως: αυτόματος συγχρονισμός με δαμάσκηνο/αυτοθεραπεία, κατάσταση και υγειονομικοί έλεγχοι.
Εκδόσεις προώθησης: tag-bots/semver-range, PR-flow.
Διαιρέστε το repo σε εφαρμογές (διαγράμματα) και env (overrides/value).
Μυστική διαχείριση: SOPS (ηλικία/KMS), εξωτερικά μυστικά.

14) Ασφάλεια: ελάχιστη απαιτούμενη

Περιορισμός PSA: χωρίς προνόμια, χωρίς hostPath, περιορισμένες δυνατότητες, μόνο ανάγνωσης rootfs.
ImoPolicy - μόνο υπογεγραμμένες/αξιόπιστες εικόνες.
NetworkPolicy: «κλειδωμένο εξ ορισμού».
RBAC: per-app service account, 'Role '/' RoleBunding' in namespace.
Έλεγχος εισόδου: Κανόνες Gatekeeper/Kyverno (πόροι/όρια, ετικέτες, καμία τελευταία).
Μυστικά: SOPS/Εξωτερικά Μυστικά. δεν τοποθετούν μυστικά σε τιμές/απλό Git.

15) Αντι-μοτίβα

': τελευταία' σε διαγράμματα και εικόνες· απουσία αξιών. σχήμα. json '.
Ένα τεράστιο διάγραμμα «για τα πάντα» αντί για αρθρωτό.
Τα CRD ενημερώνονται με τα υποδείγματα στα «υποδείγματα/» χάος στις αναβαθμίσεις.
Κωδικοποιημένα ονόματα/θύρα/χώρος ονομάτων στα υποδείγματα.
Έλλειψη πόρων/ορίων και δειγμάτων → μετατόπιση της καθυστέρησης και αστάθεια.
Το PDB → μηδέν downtime δεν είναι δυνατό με αποστράγγιση/αναβαθμίσεις.
Μυστικά σε Git χωρίς κρυπτογράφηση. εκδηλώνεται χωρίς πολιτική ελέγχου.

16) Κατάλογος ελέγχου εφαρμογής (0-45 ημέρες)

0- 10 ηµέρες

Δημιουργία ενός βασικού σκελετού διαγραμμάτων με '_ βοηθούς. tp , ετικέτες, καθετήρες, πόροι, προαιρετικό PDB/Ingress.
PSA περιορισμένη, NetworkPolicy αρνείται-all, ResourceΠοσόστωση/LimitRange.
Ρύθμιση GitOps (Argo/Flux), ιδιωτικό μητρώο, υπογραφή εικόνας/χάρτη.

11-25 ημέρες

Διαιρέστε το διάγραμμα σε ενότητες/εξαρτήσεις, προσθήκη 'αξίες. σχήμα. json ', δοκιμές (' helm lint ', μονάδα, ct).
Παρατηρησιμότητα σύνδεσης (Service Monitor/PodMonitor), μέσα καταγραφής, OTEL.
Εισάγετε τη διαδικασία αναβάθμισης: stage → canary → prod, αγκίστρι μετανάστευσης με rollback.

26-45 ημέρες

Αυτόματη ενημέρωση εξάρτησης (bots/semver-ranges + PR).
Προσθήκη πολιτικών και εκθέσεων πολιτικής της Gatekeeper/Kyverno στην ΚΚΠ.
Τεκμηρίωση του δρομολογίου αναβάθμισης συμπλέγματος, διαδικασίες DR (στιγμιότυπο Velero/etcd).

17) Μετρήσεις διάρκειας

Το 100% των εφαρμογών εξαντλούνται μέσω Helm/GitOps, χωρίς το 'kubectl να εφαρμόζεται χειροκίνητα.
Όλα τα διαγράμματα έχουν 'αξίες. σχήμα. json ', δοκιμές, υπογραφή και δεσμευμένες εκδόσεις εξάρτησης.
Η περιορισμένη PSA/NetworkPolicy ενεργοποιείται σε όλους τους χώρους ονομάτων.
Τα PDB και HPA είναι παρόντα σε όλες τις κρίσιμες υπηρεσίες.
SOPS/Εξωτερικά μυστικά, καμία τελευταία πολιτική, υπογραφή εικόνας.
Οι αναβαθμίσεις συστάδων και διαγραμμάτων εκτελούνται χωρίς downtime (καναρίνι/μπλε-πράσινο), οι δοκιμές αποκατάστασης είναι τακτικές.

18) Συμπέρασμα

Ισχυρό ίδρυμα Kubernetes = ισχυρή αρχιτεκτονική συμπλέγματος + αυστηρές πολιτικές + βιομηχανική ποιότητα διαγράμματα Helm που διαχειρίζονται οι GitOps. Τυποποίηση προτύπων, διασφάλιση του περιβάλλοντος PSA/NetworkPolicy/RBAC, επικύρωση τιμών, και αυτόματες δοκιμές, υπογραφή, και προώθηση. Στη συνέχεια, οι αναβαθμίσεις και οι κυκλοφορίες θα γίνουν προβλέψιμες και η πλατφόρμα θα γίνει σταθερή και βολική για τις ομάδες προϊόντων.

Contact

Επικοινωνήστε μαζί μας

Επικοινωνήστε για οποιαδήποτε βοήθεια ή πληροφορία.Είμαστε πάντα στη διάθεσή σας.

Telegram
@Gamble_GC
Έναρξη ολοκλήρωσης

Το Email είναι υποχρεωτικό. Telegram ή WhatsApp — προαιρετικά.

Το όνομά σας προαιρετικό
Email προαιρετικό
Θέμα προαιρετικό
Μήνυμα προαιρετικό
Telegram προαιρετικό
@
Αν εισαγάγετε Telegram — θα απαντήσουμε και εκεί.
WhatsApp προαιρετικό
Μορφή: κωδικός χώρας + αριθμός (π.χ. +30XXXXXXXXX).

Πατώντας «Αποστολή» συμφωνείτε με την επεξεργασία δεδομένων.