Workshop wiki · Greek

Πρόγραμμα σπουδών: Kubernetes

Πλήρες πρόγραμμα εκμάθησης Kubernetes: Fundamentals, Intermediate, Professional, Advanced and Security, labs, έργα και κριτήρια αξιολόγησης.

Workshop examples as ZIP files
Learning progress in the web app

Mark chapters as read, view reading progress and check off practice modules after enabling the optional web app. Workshop progress is calculated from chapters across all document pages. Your choices stay on this device; there is no account or server sync. Installation is not required. Withdrawing your choice in Privacy settings deletes the progress.

Reading progress0%
0%
0 / 27 chapters read
Other language versionGerman ↗English ↗

Πρόγραμμα σπουδών: Kubernetes

Αυτό το πρόγραμμα σπουδών οργανώνει ένα εργαστήριο Kubernetes από τις εισαγωγικές έννοιες μέχρι την προχωρημένη λειτουργία πλατφόρμας και ασφάλειας. Έχει σχεδιαστεί ώστε να μπορείς να δημιουργήσεις από αυτό μεμονωμένες εκπαιδευτικές ενότητες, πολυήμερα εργαστήρια, μαθησιακές διαδρομές για ομάδες ή ένα ολοκληρωμένο εσωτερικό πρόγραμμα κατάρτισης.

Το έγγραφο συνδυάζει θεωρία, κατανόηση αρχιτεκτονικής, πρακτικές ασκήσεις, κριτήρια αξιολόγησης και ωριμότητα λειτουργίας.

1. Σκοπός του προγράμματος σπουδών

Αυτό το πρόγραμμα σε βοηθά να κατανοήσεις το Kubernetes ως μοντέλο πλατφόρμας για τη λειτουργία εφαρμογών σε containers και όχι απλώς ως σύνολο μεμονωμένων εντολών. Μαθαίνεις πώς δηλώνονται, διατίθενται, παρακολουθούνται, ασφαλίζονται και κλιμακώνονται οι εφαρμογές, καθώς και πώς αναλύονται οι αστοχίες τους.

Μετά την ολοκλήρωση όλου του προγράμματος θα μπορείς να:

  • εξηγείς την αρχιτεκτονική και τις αρμοδιότητες του Kubernetes,
  • διαβάζεις, γράφεις, επικυρώνεις και διαχειρίζεσαι Kubernetes resources,
  • διαθέτεις εφαρμογές με προσανατολισμό στην παραγωγή χρησιμοποιώντας Deployments, Services, ConfigMaps, Secrets, probes και προδιαγραφές πόρων,
  • αναλύεις συνήθεις αστοχίες με kubectl, logs, Events, metrics και κατάσταση resources,
  • κατατάσσεις θέματα πλατφόρμας όπως networking, storage, scheduling, add-ons, observability, GitOps και backup,
  • εφαρμόζεις ελέγχους ασφάλειας όπως RBAC, ServiceAccounts, Pod Security Standards, NetworkPolicies και προστασία Secrets,
  • τεκμηριώνεις αρχιτεκτονικές αποφάσεις και καθιστάς τις λύσεις Kubernetes ελέγξιμες.

1.1. Τι προσφέρει αυτό το πρόγραμμα

Το πρόγραμμα προορίζεται για εργαστήρια, εσωτερική εκπαίδευση, bootcamps και οργανωμένη αυτοδιδασκαλία. Συνδυάζει εννοιολογικές εξηγήσεις με πρακτικές ασκήσεις. Κάθε ενότητα συνδέεται με την πραγματική λειτουργία: Τι συμβαίνει στο cluster; Πώς επαληθεύεις την κατάστασή του; Ποιοι κίνδυνοι προκύπτουν; Πώς μπορείς να κάνεις rollback;

1.2. Τι δεν αντικαθιστά αυτό το πρόγραμμα

Το πρόγραμμα δεν αντικαθιστά την τεκμηρίωση της παραγωγικής πλατφόρμας του οργανισμού σου, τα λειτουργικά εγχειρίδια συγκεκριμένων παρόχων ή μια πλήρη πολιτική ασφάλειας. Παρέχει μια επαγγελματική δομή με την οποία μπορείς να δημιουργήσεις, να ελέγξεις ή να βελτιώσεις αυτά τα έγγραφα.

01 / 27

2. Διδακτικό μοντέλο

Το εργαστήριο ακολουθεί έναν επαναλαμβανόμενο μαθησιακό κύκλο:

text
Κατανόηση -> Εφαρμογή -> Παρατήρηση -> Διάγνωση -> Θωράκιση -> Τεκμηρίωση

Όπου είναι δυνατόν, κάθε θέμα εξετάζεται σε πέντε βήματα:

Βήμα Στόχος Τυπική δραστηριότητα
1. Έννοια Κατανοείς τον σκοπό και τα όρια μιας έννοιας Kubernetes. Διάγραμμα αρχιτεκτονικής, μοντέλο resources, σχέσεις objects
2. Manifest Περιγράφεις δηλωτικά την επιθυμητή κατάσταση. Ανάγνωση, σύνταξη και επικύρωση YAML
3. Εκτέλεση Εφαρμόζεις την αλλαγή στο cluster. kubectl apply, rollout, κλήση Service
4. Παρατήρηση Επαληθεύεις αν η πραγματική κατάσταση συμφωνεί με την επιθυμητή. kubectl get, describe, logs, Events, metrics
5. Διαδρομή αστοχίας Προκαλείς ή διερευνάς μια αστοχία και εντοπίζεις τη διόρθωση. Debugging, rollback, προσαρμογή πολιτικής

2.1. Αρχές μάθησης

  • Σκέψου δηλωτικά: Περιγράφεις την επιθυμητή κατάσταση αντί να συνδέεις χειροκίνητα διαδικασίες μέσα στο cluster.
  • Διάβαζε την κατάσταση: Μαθαίνεις να χρησιμοποιείς τα spec, status, conditions και Events ως πηγές διάγνωσης.
  • Προκάλεσε αστοχίες ελεγχόμενα: Μαθαίνεις γρηγορότερα όταν αναπαράγεις συνηθισμένες αστοχίες με ασφαλή τρόπο.
  • Συμπερίλαβε τη λειτουργία: Κάθε άσκηση περιλαμβάνει επικύρωση, teardown και σύντομη λειτουργική αξιολόγηση.
  • Ενσωμάτωσε την ασφάλεια από την αρχή: Οι πτυχές ασφάλειας εξετάζονται σε όλη τη διάρκεια και δεν προστίθενται μόνο στο τέλος.
  • Κάνε την εργασία ελέγξιμη: Κάθε λύση πρέπει να είναι κατανοητή, να μπορεί να εκδοθεί σε versions και να επαληθεύεται.

2.2. Βάθος ανά θέμα

Δεν χρειάζονται όλα τα θέματα το ίδιο βάθος. Για αρχάριους αρκούν τα νοητικά μοντέλα και οι ασφαλείς τυπικές διαδρομές. Οι ομάδες πλατφόρμας χρειάζονται επιπλέον οπτική για upgrades, αστοχίες, ασφάλεια και λειτουργία.

Βάθος Περιγραφή Κατάλληλο για
Επισκόπηση Μπορείς να εξηγήσεις τον σκοπό και την ορολογία. Προσανατολισμό, διοίκηση, νέα μέλη ομάδας
Εφαρμογή Μπορείς να δημιουργήσεις και να τροποποιήσεις resources. Developers, DevOps, διαχειριστές
Λειτουργία Μπορείς να αναλύσεις αστοχίες, να ελέγξεις rollouts και να αξιολογήσεις κινδύνους. SREs, ομάδες πλατφόρμας
Σχεδιασμός Μπορείς να λάβεις και να αιτιολογήσεις αρχιτεκτονικές αποφάσεις. Tech leads, architects
Ασφάλεια Μπορείς να μειώσεις την επιφάνεια επίθεσης και να οργανώσεις την αντιμετώπιση incidents. Security engineers, DevSecOps
02 / 27

3. Κοινό και ρόλοι

Το πρόγραμμα είναι αρθρωτό. Μπορείς να το προσαρμόσεις σε διαφορετικούς ρόλους.

Ομάδα στόχος Τυπική ανάγκη Σχετικά επίπεδα
Developers Να κάνουν deploy εφαρμογές, να διαβάζουν logs, να χρησιμοποιούν Services και να κατανοούν τη διαμόρφωση. Fundamentals, Intermediate
Junior DevOps Να συντηρούν manifests, να υποστηρίζουν rollouts και να αναλύουν αστοχίες. Fundamentals, Intermediate
System Engineers Να κατανοούν τη λειτουργία του cluster και να εξετάζουν Nodes, networking, storage και add-ons. Intermediate, Professional
Platform Engineers Να σχεδιάζουν πρότυπα πλατφόρμας, GitOps, multi-tenancy, add-ons και upgrades. Professional, Advanced
SREs Να εμβαθύνουν σε SLOs, observability, incident response και ανάλυση αστοχιών. Intermediate, Professional, Advanced
Security Engineers Να εφαρμόζουν RBAC, Pod Security, απομόνωση δικτύου, runtime security και forensics. Advanced and Security
Tech Leads Να καθορίζουν αρχιτεκτονικές αποφάσεις, όρια πλατφόρμας και πρότυπα ομάδων. Professional, Advanced
Administrators Να κατανοούν πρόσβαση cluster, Nodes, kubeadm, backups, πιστοποιητικά και upgrades. Fundamentals, Professional

3.1. Αναμενόμενα αποτελέσματα ανά ρόλο

Developers

Μετά την εκπαίδευση, πρέπει να μπορείς να διαθέσεις σωστά μια εφαρμογή στο Kubernetes. Αυτό περιλαμβάνει Deployment, Service, διαμόρφωση, probes, προδιαγραφές πόρων, logs και απλό rollback.

DevOps και System Engineers

Πρέπει να μπορείς να λειτουργείς workloads με προσανατολισμό στην παραγωγή. Αυτό περιλαμβάνει debugging, στρατηγικές rollout, storage, Ingress, DNS, διαχείριση πόρων, Helm ή Kustomize και βασικό επίπεδο ασφάλειας.

Platform Engineers και SREs

Πρέπει να μπορείς να αξιολογείς αποφάσεις πλατφόρμας. Αυτό περιλαμβάνει αρχιτεκτονική cluster, add-ons, GitOps, observability, multi-tenancy, στρατηγικές upgrade, backup και disaster recovery.

Security Engineers

Πρέπει να μπορείς να αναγνωρίζεις επιφάνειες επίθεσης ειδικές για το Kubernetes και να υλοποιείς τεχνικούς ελέγχους. Αυτό περιλαμβάνει RBAC, ServiceAccounts, Admission, Pod Security Standards, NetworkPolicies, προστασία Secrets, ασφάλεια images και runtime detection.

03 / 27

4. Προϋποθέσεις

4.1. Εννοιολογικές προϋποθέσεις

Για συμμετοχή στο εισαγωγικό επίπεδο χρειάζεσαι:

  • βασική κατανόηση containers και images,
  • βασικές δεξιότητες Linux shell,
  • βασική γνώση HTTP, DNS, ports και TCP/IP,
  • βασική γνώση YAML,
  • ικανότητα συστηματικής ανάγνωσης μηνυμάτων σφάλματος.

Για τα θέματα Professional και Advanced χρειάζεσαι επιπλέον:

  • εμπειρία με CI/CD ή GitOps,
  • εμπειρία με υπηρεσίες και logs Linux,
  • κατανόηση TLS, πιστοποιητικών, authentication και authorization,
  • βασική γνώση cloud networking, load balancing και storage,
  • εμπειρία με συστήματα monitoring και logging.

4.2. Τεχνικές προϋποθέσεις

Για τα labs χρειάζεσαι τουλάχιστον:

  • kubectl,
  • πρόσβαση σε Kubernetes cluster,
  • περιβάλλον shell,
  • Git,
  • editor,
  • προαιρετικά Helm, Kustomize, jq, yq, stern, k9s και crictl.

Ανάλογα με τον στόχο του εργαστηρίου, για τοπικά εργαστήρια μπορούν να χρησιμοποιηθούν:

  • kind,
  • minikube,
  • k3d,
  • k3s,
  • VMs βασισμένα σε kubeadm,
  • Managed Kubernetes clusters από cloud providers.

4.3. Έλεγχος προετοιμασίας

Πριν από το εργαστήριο επαλήθευσε:

bash
kubectl version --client
kubectl config current-context
kubectl cluster-info
kubectl get nodes -o wide
kubectl auth can-i get pods -A

Για τις περισσότερες ασκήσεις χρειάζεσαι Namespace στο οποίο επιτρέπεται να δημιουργείς, να τροποποιείς και να διαγράφεις resources.

04 / 27

5. Μαθησιακές διαδρομές

5.1. Μαθησιακή διαδρομή για Developers

Στόχος: Μπορείς να κάνεις deploy, να διαμορφώνεις, να επαληθεύεις και να αναλύεις την εφαρμογή σου στο Kubernetes.

Προτεινόμενη σειρά:

  1. Βασικό μοντέλο Kubernetes.
  2. Pods, Deployments και ReplicaSets.
  3. Services και DNS.
  4. ConfigMaps και Secrets.
  5. Probes και rollouts.
  6. Logs, Events και debugging.
  7. Προδιαγραφές πόρων και βασική κλιμάκωση.
  8. Τελική άσκηση: rollout εφαρμογής με προσανατολισμό στην παραγωγή.

5.2. Μαθησιακή διαδρομή για DevOps και System Engineers

Στόχος: Μπορείς να λειτουργείς workloads, να αναλύεις αστοχίες και να καθιερώνεις αξιόπιστα πρότυπα για ομάδες.

Προτεινόμενη σειρά:

  1. Ολοκλήρωση του Fundamentals.
  2. Λεπτομερής εξέταση των Workload Controllers.
  3. Διαχείριση πόρων και scheduling.
  4. Ingress, Gateway API και NetworkPolicies.
  5. Storage και stateful workloads.
  6. Επικύρωση Helm, Kustomize και CI/CD.
  7. Observability και αρχική διαχείριση incidents.
  8. Τελική άσκηση: σταθεροποίηση εφαρμογής με σφάλματα.

5.3. Μαθησιακή διαδρομή για Platform Engineers

Στόχος: Μπορείς να σχεδιάζεις, να λειτουργείς και να εξελίσσεις πλατφόρμες Kubernetes.

Προτεινόμενη σειρά:

  1. Αρχιτεκτονική cluster και Control Plane.
  2. kubeadm, Managed Kubernetes και distributions.
  3. CNI, CSI, Ingress και load balancing.
  4. Observability stack.
  5. GitOps και add-ons πλατφόρμας.
  6. Multi-tenancy, quotas, πολιτικές και έλεγχος κόστους.
  7. Backup, restore και disaster recovery.
  8. Τελική άσκηση: δημιουργία platform blueprint.

5.4. Μαθησιακή διαδρομή για Security Engineers

Στόχος: Μπορείς να θωρακίζεις workloads και πλατφόρμες Kubernetes, να ανιχνεύεις επιθέσεις και να χειρίζεσαι incidents με οργανωμένο τρόπο.

Προτεινόμενη σειρά:

  1. Kubernetes threat model.
  2. Πρόσβαση στο API, authentication και authorization.
  3. RBAC least privilege.
  4. ServiceAccounts και συμπεριφορά tokens.
  5. Pod Security Standards και Admission Control.
  6. SecurityContext, capabilities, seccomp, AppArmor και SELinux.
  7. NetworkPolicies και πολιτικές service mesh/CNI.
  8. Προστασία Secrets, ασφάλεια images και runtime detection.
  9. Τελική άσκηση: security review και προσομοίωση incident.
05 / 27

6. Επίπεδα ικανότητας

6.1. Επίπεδο A: Προσανατολισμός

Μπορείς να περιγράψεις τι κάνει το Kubernetes, σε τι χρησιμεύει ένα cluster και ποια βασικά components συμμετέχουν.

Αναμενόμενη ικανότητα:

  • Εξηγείς το Control Plane και τα Worker Nodes.
  • Διακρίνεις Pod, Deployment και Service.
  • Κατανοείς Desired State και Reconciliation.
  • Μπορείς να εμφανίσεις ένα Namespace και απλά resources.

6.2. Επίπεδο B: Εφαρμογή

Μπορείς να δημιουργείς, να διαθέτεις και να επαληθεύεις απλά workloads.

Αναμενόμενη ικανότητα:

  • Γράφεις απλά manifests.
  • Χρησιμοποιείς με ασφάλεια τα kubectl apply, get, describe, logs και delete.
  • Εκθέτεις μια εφαρμογή μέσω Service.
  • Ελέγχεις Events, logs και κατάσταση resources.

6.3. Επίπεδο C: Workloads με προσανατολισμό στην παραγωγή

Μπορείς να διαμορφώνεις ανθεκτικά workloads.

Αναμενόμενη ικανότητα:

  • Ορίζεις Requests, Limits και probes.
  • Χρησιμοποιείς συνειδητά ConfigMaps και Secrets.
  • Ελέγχεις rollouts και rollbacks.
  • Κατανοείς HPA, PDB και απλά σενάρια Ingress.
  • Αναγνωρίζεις συνηθισμένες αστοχίες.

6.4. Επίπεδο D: Λειτουργία πλατφόρμας

Μπορείς να αξιολογείς αποφάσεις για το cluster και την πλατφόρμα.

Αναμενόμενη ικανότητα:

  • Κατανοείς Control Plane HA, etcd, CNI, CSI και add-ons.
  • Αξιολογείς distributions και Managed Kubernetes.
  • Σχεδιάζεις διαδικασίες observability, GitOps, backup, restore και upgrade.
  • Ορίζεις πρότυπα multi-tenancy.

6.5. Επίπεδο E: Ασφάλεια και ανθεκτικότητα

Μπορείς να θωρακίζεις σκόπιμα το Kubernetes και να αντιμετωπίζεις incidents.

Αναμενόμενη ικανότητα:

  • Εφαρμόζεις RBAC least privilege.
  • Ελέγχεις ServiceAccounts και tokens.
  • Χρησιμοποιείς Pod Security Standards και SecurityContexts.
  • Αξιολογείς NetworkPolicies, ασφάλεια images, προστασία Secrets και runtime detection.
  • Εκτελείς οργανωμένη ανάλυση incidents.
06 / 27

7. Συνολική δομή του εργαστηρίου

Το πρόγραμμα χωρίζεται σε τέσσερα βασικά επίπεδα:

Επίπεδο Εστίαση Αποτέλεσμα
Fundamentals Βασικοί όροι, αρχιτεκτονική, απλά Deployments Μπορείς να διαθέτεις και να επαληθεύεις απλές εφαρμογές.
Intermediate Workloads παραγωγής, διαμόρφωση, debugging Μπορείς να δημιουργείς ανθεκτικά workloads και να αναλύεις αστοχίες.
Professional Λειτουργία πλατφόρμας, add-ons, αρχιτεκτονική, GitOps Μπορείς να σχεδιάζεις και να λειτουργείς πλατφόρμες Kubernetes.
Advanced and Security Θωράκιση, πολιτικές, runtime security, incident response Μπορείς να μειώνεις κινδύνους και να αντιμετωπίζεις incidents ασφάλειας.

7.1. Προτεινόμενη σειρά ενοτήτων

flowchart TD
  A[Fundamentals] --> B[Intermediate]
  B --> C[Professional]
  B --> D[Advanced and Security]
  C --> E[Platform Project]
  D --> F[Security Project]
  E --> G[Final Assessment]
  F --> G

7.2. Ελάχιστη διαδρομή για σύντομο εργαστήριο

Όταν ο χρόνος είναι περιορισμένος, το εργαστήριο πρέπει να περιλαμβάνει τουλάχιστον:

  1. Αρχιτεκτονική cluster και μοντέλο resources.
  2. Namespace, Pod, Deployment, ReplicaSet και Service.
  3. ConfigMap, Secret, probes και προδιαγραφές πόρων.
  4. Logs, Events, describe και rollback.
  5. Βασικά RBAC και Pod Security.
  6. Τελική άσκηση με Deployment, Service και ανάλυση αστοχίας.
07 / 27

8. Επίπεδο 1: Fundamentals

8.1. Στόχος

Κατανοείς τη βασική ιδέα του Kubernetes και μπορείς να διαθέσεις, να εκθέσεις και να επαληθεύσεις απλές εφαρμογές.

8.2. Κοινό στόχος

  • Αρχάριοι.
  • Developers.
  • Junior DevOps.
  • Διαχειριστές με περιορισμένη εμπειρία Kubernetes.
  • Ομάδες που θα χρησιμοποιήσουν το Kubernetes ως πλατφόρμα στόχο.

8.3. Μαθησιακοί στόχοι

Μετά από αυτό το επίπεδο μπορείς να:

  • εξηγείς το Kubernetes ως πλατφόρμα orchestration,
  • διακρίνεις το Control Plane από τα Worker Nodes,
  • περιγράφεις τον ρόλο του API Server, του etcd, του Scheduler, του Controller Manager, του kubelet και του kube-proxy,
  • εξηγείς Desired State, Actual State και Reconciliation,
  • κατατάσσεις Namespaces, Pods, Deployments, ReplicaSets και Services,
  • εφαρμόζεις Labels και selectors,
  • χρησιμοποιείς το kubectl για εμφάνιση, δημιουργία και διαγραφή resources,
  • χρησιμοποιείς logs και Events για βασική ανάλυση αστοχιών.

8.4. Ενότητα F1: Εισαγωγή και νοητικό μοντέλο

Πτυχή Περιεχόμενο
Στόχος Κατανοείς γιατί υπάρχει το Kubernetes και ποιο πρόβλημα λύνει.
Βασικά ερωτήματα Τι σημαίνει orchestration; Τι είναι Desired State; Τι κάνει ένας Controller;
Πρακτική Εμφάνισε πληροφορίες cluster, επαλήθευσε το context, δημιούργησε Namespace.
Αποτέλεσμα Μπορείς να εξηγήσεις πώς μια αλλαγή εισέρχεται στο cluster μέσω του Kubernetes API.

Περιεχόμενο:

  • Container orchestration.
  • Desired State και Actual State.
  • Δηλωτική διαμόρφωση.
  • Kubernetes API ως κεντρική διεπαφή.
  • Controllers ως συνεχείς βρόχοι ελέγχου.
  • Όρια σε σχέση με Docker, CI/CD, monitoring και cloud providers.

Άσκηση:

bash
kubectl version --client
kubectl cluster-info
kubectl config current-context
kubectl get nodes -o wide
kubectl create namespace workshop
kubectl get namespace workshop

Ερωτήσεις αναστοχασμού:

  • Γιατί ένα Kubernetes manifest δεν είναι script;
  • Τι συμβαίνει όταν το Desired State δεν συμφωνεί με το Actual State;
  • Γιατί το API αποτελεί το κεντρικό σημείο ενσωμάτωσης;

8.5. Ενότητα F2: Αρχιτεκτονική cluster

Πτυχή Περιεχόμενο
Στόχος Γνωρίζεις τα βασικά components ενός cluster.
Βασικά ερωτήματα Τι εκτελείται στο Control Plane; Τι εκτελείται στα Worker Nodes; Πού αποθηκεύεται η κατάσταση του cluster;
Πρακτική Εξέτασε Nodes, Pods συστήματος και Namespaces.
Αποτέλεσμα Μπορείς να διαχωρίζεις καθαρά components και αρμοδιότητες.

Περιεχόμενο:

  • Control Plane.
  • Worker Nodes.
  • API Server.
  • etcd.
  • Scheduler.
  • Controller Manager.
  • Cloud Controller Manager.
  • kubelet.
  • Container Runtime.
  • kube-proxy ή eBPF dataplane.
  • CNI plugin.
  • CoreDNS.

Άσκηση:

bash
kubectl get nodes -o wide
kubectl get namespaces
kubectl get pods -n kube-system -o wide
kubectl describe node <node-name>

Συνηθισμένες παγίδες:

  • Συγχέεις components του Control Plane με components των workloads.
  • Περιμένεις ότι ένα Pod ξεκινά απευθείας σε Node μέσω kubectl.
  • Παραβλέπεις ότι οι Controllers συμφιλιώνουν συνεχώς την κατάσταση.

8.6. Ενότητα F3: Μοντέλο resources και YAML

Πτυχή Περιεχόμενο
Στόχος Μπορείς να διαβάζεις Kubernetes objects και να γράφεις απλά manifests.
Βασικά ερωτήματα Τι σημαίνουν apiVersion, kind, metadata, spec και status;
Πρακτική Εφάρμοσε ένα manifest, εμφάνισε ένα resource και εξέτασε την κατάστασή του.
Αποτέλεσμα Αναγνωρίζεις τη δομή όλων των Kubernetes objects.

Περιεχόμενο:

  • API groups και kinds.
  • Metadata των objects.
  • Namespaces.
  • Labels και annotations.
  • spec ως Desired State.
  • status ως ανατροφοδότηση του συστήματος.
  • Conditions και Events.
  • Ταυτότητα resource μέσω ονόματος, Namespace και UID.

Παράδειγμα:

yaml
apiVersion: v1
kind: Namespace
metadata:
  name: workshop
  labels:
    purpose: training

Άσκηση:

bash
kubectl apply -f namespace.yaml
kubectl get namespace workshop -o yaml
kubectl explain pod.spec.containers

8.7. Ενότητα F4: Pods

Πτυχή Περιεχόμενο
Στόχος Κατανοείς τα Pods ως τη μικρότερη μονάδα που μπορεί να γίνει deploy.
Βασικά ερωτήματα Γιατί δεν διαθέτεις απευθείας containers; Τι μοιράζονται τα containers ενός Pod;
Πρακτική Ξεκίνησε Pod, διάβασε logs και εξέτασε την περιγραφή του.
Αποτέλεσμα Μπορείς να αναγνωρίζεις τις καταστάσεις Pod και απλές αστοχίες.

Περιεχόμενο:

  • Pod ως ομάδα ενός ή περισσότερων containers.
  • Κοινή ταυτότητα δικτύου.
  • Ports των containers.
  • Volumes μέσα στο Pod.
  • Restart policy.
  • Phases του Pod.
  • Καταστάσεις containers.
  • Events ως πηγή διάγνωσης αστοχιών.

Άσκηση:

bash
kubectl run nginx-demo -n workshop --image=nginx:1.27 --restart=Never
kubectl get pod nginx-demo -n workshop -o wide
kubectl describe pod nginx-demo -n workshop
kubectl logs nginx-demo -n workshop
kubectl delete pod nginx-demo -n workshop

Βασική διαπίστωση:

Ένα Pod συνήθως δεν είναι αντικείμενο που διαχειρίζεσαι μακροπρόθεσμα με το χέρι. Για κανονικές εφαρμογές χρησιμοποιείς Controllers όπως Deployments.

8.8. Ενότητα F5: Deployments και ReplicaSets

Πτυχή Περιεχόμενο
Στόχος Μπορείς να διαθέτεις stateless εφαρμογές με δηλωτικό τρόπο.
Βασικά ερωτήματα Ποια είναι η διαφορά μεταξύ Pod, ReplicaSet και Deployment;
Πρακτική Δημιούργησε Deployment, κλιμάκωσέ το και εξέτασε το rollout.
Αποτέλεσμα Μπορείς να διαθέτεις εφαρμογή με επαναλήψιμο τρόπο.

Περιεχόμενο:

  • Deployment ως Controller για stateless εφαρμογές.
  • ReplicaSet ως μηχανισμός αναπαραγωγής.
  • Pod template.
  • Selectors.
  • Rolling update.
  • Revisions.
  • Rollback.

Παράδειγμα:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: workshop
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: nginx
          image: nginx:1.27
          ports:
            - containerPort: 80

Άσκηση:

bash
kubectl apply -f deployment.yaml
kubectl get deployment,replicaset,pod -n workshop
kubectl rollout status deployment/web -n workshop
kubectl scale deployment/web -n workshop --replicas=3
kubectl rollout history deployment/web -n workshop

8.9. Ενότητα F6: Services και Service Discovery

Πτυχή Περιεχόμενο
Στόχος Μπορείς να κάνεις τα Pods προσβάσιμα μέσω σταθερών εσωτερικών διευθύνσεων.
Βασικά ερωτήματα Γιατί χρειάζονται Services αφού τα Pods έχουν ήδη δικές τους IPs;
Πρακτική Δημιούργησε Service, εξέτασε Endpoints και δοκίμασε το DNS.
Αποτέλεσμα Κατανοείς το Service Discovery μέσα στο cluster.

Περιεχόμενο:

  • Pod IP ως προσωρινή διεύθυνση.
  • Service ως σταθερή αφαίρεση.
  • Label selector.
  • ClusterIP.
  • NodePort.
  • LoadBalancer.
  • Endpoints και EndpointSlices.
  • CoreDNS.
  • Ονόματα DNS των Services.

Παράδειγμα:

yaml
apiVersion: v1
kind: Service
metadata:
  name: web
  namespace: workshop
spec:
  selector:
    app: web
  ports:
    - name: http
      port: 80
      targetPort: 80
  type: ClusterIP

Άσκηση:

bash
kubectl apply -f service.yaml
kubectl get service,endpoints,endpointslice -n workshop
kubectl run dns-test -n workshop --rm -it --image=busybox:1.36 --restart=Never -- sh
wget -qO- http://web.workshop.svc.cluster.local

8.10. Ενότητα F7: Βασικές λειτουργίες kubectl

Πτυχή Περιεχόμενο
Στόχος Χρησιμοποιείς με ασφάλεια το kubectl για τυπικές εργασίες.
Βασικά ερωτήματα Πώς βρίσκεις resources; Πώς εξετάζεις την κατάστασή τους; Πώς επικυρώνεις αλλαγές;
Πρακτική Εμφάνισε, περιέγραψε, εφάρμοσε και διέγραψε resources.
Αποτέλεσμα Μπορείς να προσανατολίζεσαι μέσα στο cluster.

Περιεχόμενο:

  • Context και kubeconfig.
  • Namespaces.
  • get.
  • describe.
  • logs.
  • apply.
  • delete.
  • diff.
  • explain.
  • Μορφές εξόδου.
  • Field selector και Label selector.

Άσκηση:

bash
kubectl get all -n workshop
kubectl get pods -n workshop -l app=web
kubectl describe deployment web -n workshop
kubectl logs deployment/web -n workshop
kubectl diff -f deployment.yaml
kubectl delete -f deployment.yaml

8.11. Ενότητα F8: Τελική άσκηση Fundamentals

Στόχος της άσκησης:

Διαθέτεις μια απλή web εφαρμογή, την εκθέτεις εσωτερικά στο cluster, εξετάζεις logs και Events και τεκμηριώνεις το teardown.

Εργασίες:

  1. Δημιούργησε Namespace.
  2. Δημιούργησε Deployment με δύο replicas.
  3. Δημιούργησε ClusterIP Service.
  4. Εξέτασε Pods, ReplicaSets, Deployment και Service.
  5. Δοκίμασε DNS από debug Pod.
  6. Άλλαξε το image και παρατήρησε το rollout.
  7. Εκτέλεσε rollback.
  8. Διάγραψε καθαρά όλους τους πόρους.

Κριτήρια αποδοχής:

  • Το Namespace έχει σαφές όνομα.
  • Το Deployment έχει Labels και selectors που ταιριάζουν.
  • Το Service δείχνει στα αναμενόμενα Pods.
  • Το rollout μπορεί να παρακολουθηθεί.
  • Το teardown τεκμηριώνεται.
08 / 27

9. Επίπεδο 2: Intermediate

9.1. Στόχος

Μπορείς να διαμορφώνεις, να διαγιγνώσκεις και να λειτουργείς workloads με προσανατολισμό στην παραγωγή. Η έμφαση είναι στην ανθεκτικότητα, τη διαμόρφωση, τους πόρους, τα rollouts, τη δικτύωση, το storage και τη λειτουργική ανάλυση αστοχιών.

9.2. Κοινό στόχος

  • DevOps Engineers.
  • Developers με λειτουργική ευθύνη.
  • System Engineers.
  • Χρήστες Kubernetes με βασικές γνώσεις.
  • Ομάδες που θέλουν να λειτουργούν εφαρμογές στο Kubernetes με απαιτήσεις παραγωγής.

9.3. Μαθησιακοί στόχοι

Μετά από αυτό το επίπεδο μπορείς να:

  • διακρίνεις Deployments, StatefulSets, DaemonSets, Jobs και CronJobs,
  • χρησιμοποιείς σωστά ConfigMaps και Secrets,
  • διαμορφώνεις liveness, readiness και startup probes,
  • εξηγείς Requests, Limits και κλάσεις QoS,
  • κατατάσσεις HPA και PDB,
  • εφαρμόζεις βασικές αρχές Ingress, Gateway API και DNS,
  • χρησιμοποιείς PV, PVC και StorageClass,
  • κατανοείς κανόνες scheduling όπως Node Affinity, Pod Affinity, Taints και tolerations,
  • χρησιμοποιείς Helm και Kustomize για packaging και διαχείριση παραλλαγών,
  • αναλύεις συστηματικά συνηθισμένες αστοχίες.

9.4. Ενότητα I1: Σύγκριση Workload Controllers

Workload Σκοπός Τυπική χρήση
Deployment stateless εφαρμογές που κλιμακώνονται web υπηρεσίες, APIs, workers χωρίς σταθερή ταυτότητα
StatefulSet stateful εφαρμογές με σταθερή ταυτότητα databases, brokers, replicated systems
DaemonSet ένα Pod ανά Node ή ομάδα Nodes agents logs, components CNI, Node Exporter
Job εργασίες μίας εκτέλεσης migrations, batch processing
CronJob προγραμματισμένες εργασίες περιοδική συντήρηση, αναφορές, backups

Άσκηση:

  • Δημιούργησε Deployment για web εφαρμογή.
  • Δημιούργησε Job για εργασία μίας εκτέλεσης.
  • Δημιούργησε CronJob με σύντομο διάστημα δοκιμής.
  • Εξέτασε τα Pods που δημιουργούνται και τα logs τους.
  • Διάγραψε τους δοκιμαστικούς πόρους.

Κριτήρια αποδοχής:

  • Μπορείς να εξηγήσεις γιατί ένα Deployment δεν ταιριάζει σε κάθε περίπτωση.
  • Αναγνωρίζεις πότε η σταθερή ταυτότητα ή η προγραμματισμένη εκτέλεση έχει μεγαλύτερη σημασία από την οριζόντια κλιμάκωση.

9.5. Ενότητα I2: Διαμόρφωση με ConfigMaps και Secrets

Πτυχή ConfigMap Secret
Σκοπός μη εμπιστευτική διαμόρφωση εμπιστευτικές τιμές
Παραδείγματα feature flags, URLs, log level passwords, tokens, πιστοποιητικά
Χρήση environment variables ή volumes environment variables ή volumes
Κίνδυνος λανθασμένη διαμόρφωση διαρροή δεδομένων, υπερβολικά δικαιώματα

Περιεχόμενο:

  • Διαχωρισμός διαμόρφωσης από τα images.
  • ConfigMaps ως αρχεία ή environment variables.
  • Secrets ως Kubernetes resources.
  • Το Base64 δεν είναι encryption.
  • Συμπεριφορά rollout όταν αλλάζει η διαμόρφωση.
  • Περιορισμός πρόσβασης στα Secrets μέσω RBAC.
  • Κατάταξη εξωτερικών συστημάτων διαχείρισης Secrets.

Άσκηση:

bash
kubectl create configmap app-config \
  -n workshop \
  --from-literal=LOG_LEVEL=info \
  --dry-run=client -o yaml > configmap.yaml

kubectl create secret generic app-secret \
  -n workshop \
  --from-literal=API_TOKEN=dummy \
  --dry-run=client -o yaml > secret.yaml

Εργασίες:

  1. Σύνδεσε ConfigMap ως environment variable.
  2. Σύνδεσε Secret ως volume.
  3. Επαλήθευσε αν η εφαρμογή βλέπει τις τιμές.
  4. Άλλαξε το ConfigMap.
  5. Παρατήρησε αν γίνεται αυτόματα rollout.
  6. Τεκμηρίωσε πώς ενεργοποιείται σκόπιμα ένα rollout.

9.6. Ενότητα I3: Probes και κύκλος ζωής εφαρμογής

Probe Σκοπός Επίδραση
Startup Probe προστατεύει εφαρμογές που ξεκινούν αργά liveness και readiness περιμένουν την ολοκλήρωση του startup
Readiness Probe δηλώνει αν ένα Pod μπορεί να λαμβάνει κίνηση προσαρμόζονται τα Endpoints του Service
Liveness Probe εντοπίζει containers που δεν λειτουργούν πλέον μπορεί να γίνει restart του container

Περιεχόμενο:

  • Διαφορά μεταξύ «η διεργασία εκτελείται» και «η εφαρμογή είναι έτοιμη».
  • HTTP, TCP και exec probes.
  • Initial delay, timeout, period και failure threshold.
  • Graceful shutdown.
  • terminationGracePeriodSeconds.
  • preStop hook.
  • Επίδραση στα rollouts.

Άσκηση:

  1. Πρόσθεσε readiness probe.
  2. Πρόσθεσε liveness probe.
  3. Δημιούργησε σκόπιμα λανθασμένο probe.
  4. Παρατήρησε Events και restarts των containers.
  5. Διόρθωσε το probe.

Αστοχία:

Ένα υπερβολικά επιθετικό liveness probe μπορεί να επανεκκινεί συνεχώς μια εφαρμογή που ακόμη ξεκινά. Χρησιμοποίησε Startup Probe ή ρεαλιστικά όρια.

9.7. Ενότητα I4: Διαχείριση πόρων

Περιεχόμενο:

  • CPU Requests.
  • Memory Requests.
  • CPU Limits.
  • Memory Limits.
  • Κλάσεις QoS: Guaranteed, Burstable, BestEffort.
  • OOMKilled.
  • NodePressure.
  • LimitRange.
  • ResourceQuota.
  • Metrics Server.
  • Horizontal Pod Autoscaler.

Παράδειγμα:

yaml
resources:
  requests:
    cpu: "100m"
    memory: "128Mi"
  limits:
    cpu: "500m"
    memory: "256Mi"

Άσκηση:

  1. Πρόσθεσε Requests και Limits σε Deployment.
  2. Εξέτασε την κλάση QoS που προκύπτει.
  3. Όρισε ResourceQuota στο Namespace.
  4. Δημιούργησε σκόπιμα manifest που παραβιάζει το quota.
  5. Ανάλυσε το μήνυμα σφάλματος.

Κριτήρια αποδοχής:

  • Μπορείς να εξηγήσεις γιατί η απουσία Requests δυσκολεύει το scheduling και τον σχεδιασμό χωρητικότητας.
  • Διακρίνεις OOMKilled από CrashLoopBackOff.
  • Κατανοείς ότι τα Limits δεν συνεπάγονται αυτόματα καλή απόδοση.

9.8. Ενότητα I5: Rollouts, rollbacks και διαθεσιμότητα

Περιεχόμενο:

  • Στρατηγική Deployment.
  • RollingUpdate.
  • maxUnavailable.
  • maxSurge.
  • Ιστορικό revisions.
  • Κατάσταση rollout.
  • Rollback.
  • PodDisruptionBudget.
  • Readiness ως σήμα rollout.

Άσκηση:

bash
kubectl rollout status deployment/web -n workshop
kubectl rollout history deployment/web -n workshop
kubectl set image deployment/web nginx=nginx:1.28 -n workshop
kubectl rollout undo deployment/web -n workshop

Εργασίες:

  1. Άλλαξε το image σε έγκυρη έκδοση.
  2. Παρατήρησε το rolling update.
  3. Άλλαξε το image σε μη έγκυρη έκδοση.
  4. Ανάλυσε το rollout που έχει κολλήσει.
  5. Εκτέλεσε rollback.
  6. Πρόσθεσε PodDisruptionBudget.

9.9. Ενότητα I6: Networking, DNS, Ingress και Gateway API

Περιεχόμενο:

  • Δίκτυο Pods.
  • Service Discovery.
  • ClusterIP, NodePort και LoadBalancer.
  • Ονόματα DNS για Services.
  • Endpoints και EndpointSlices.
  • Ingress Controller.
  • Ingress resources.
  • Gateway API ως επεκτάσιμο μοντέλο routing.
  • Τερματισμός TLS.
  • NetworkPolicies.

Άσκηση:

  1. Εξέτασε Service και EndpointSlices.
  2. Δοκίμασε DNS από debug Pod.
  3. Δημιούργησε απλό κανόνα Ingress ή HTTPRoute, αν το περιβάλλον το υποστηρίζει.
  4. Πρόσθεσε NetworkPolicy με προεπιλεγμένη άρνηση.
  5. Επίτρεψε ρητά κίνηση από συγκεκριμένο Label Pod.

Κριτήρια αποδοχής:

  • Μπορείς να εξηγήσεις γιατί ένα Service χωρίς Endpoints δεν λειτουργεί.
  • Διακρίνεις προβλήματα DNS από προβλήματα Selector του Service.
  • Γνωρίζεις ότι τα NetworkPolicies εφαρμόζονται μόνο αν τα υποστηρίζει το Network Plugin.

9.10. Ενότητα I7: Storage

Περιεχόμενο:

  • Προσωρινό storage Pod.
  • Volumes.
  • PersistentVolume.
  • PersistentVolumeClaim.
  • StorageClass.
  • Dynamic provisioning.
  • Access modes.
  • Reclaim policy.
  • CSI.
  • Επέκταση volume.
  • Backup και restore.

Άσκηση:

  1. Δημιούργησε PVC.
  2. Σύνδεσέ το σε Pod ή Deployment.
  3. Γράψε δοκιμαστικά δεδομένα.
  4. Διάγραψε το Pod.
  5. Επαλήθευσε αν τα δεδομένα παραμένουν.
  6. Εξέτασε PV, PVC, StorageClass και Events.

Κριτήρια αποδοχής:

  • Διακρίνεις τη διάρκεια ζωής του Pod από τη διάρκεια ζωής των δεδομένων.
  • Μπορείς να αναλύσεις PVC σε κατάσταση Pending.
  • Μπορείς να εξηγήσεις γιατί τα stateful workloads χρειάζονται σχεδιασμό backup και restore.

9.11. Ενότητα I8: Scheduling

Περιεχόμενο:

  • Node Selector.
  • Node Affinity.
  • Pod Affinity.
  • Pod Anti-Affinity.
  • Taints.
  • Tolerations.
  • Topology Spread Constraints.
  • PriorityClass.
  • Preemption.
  • Requests πόρων ως βάση του scheduling.

Άσκηση:

  1. Πρόσθεσε Label σε Node, αν επιτρέπεται.
  2. Κάνε scheduling ενός Pod σε Nodes με κατάλληλο Label μέσω Node Selector.
  3. Χρησιμοποίησε toleration για Node με Taint.
  4. Δημιούργησε σκόπιμα Pod που παραμένει Pending.
  5. Ανάλυσε τα Events του Scheduler.

Συνηθισμένη παρανόηση:

Οι κανόνες scheduling δεν αποτελούν όρια ασφάλειας. Ελέγχουν την τοποθέτηση, αλλά δεν αντικαθιστούν RBAC, Admission, Pod Security ή απομόνωση δικτύου.

9.12. Ενότητα I9: Helm και Kustomize

Περιεχόμενο:

  • Σκοπός του packaging και του templating.
  • Δομή Helm chart.
  • Values files.
  • Helm template και dry run.
  • Κύκλος ζωής Helm release.
  • Bases και overlays του Kustomize.
  • Patches.
  • Generators.
  • Επικύρωση στο CI/CD.

Άσκηση:

bash
helm lint ./chart
helm template demo ./chart -f values.yaml
helm upgrade --install demo ./chart -n workshop --dry-run
kubectl kustomize overlays/dev
kubectl apply -k overlays/dev --dry-run=server

Κριτήρια αποδοχής:

  • Μπορείς να εξηγήσεις πότε είναι χρήσιμο το Helm.
  • Μπορείς να εξηγήσεις πότε το Kustomize είναι απλούστερο και πιο διαφανές.
  • Επικυρώνεις τα παραγόμενα manifests πριν τα εφαρμόσεις.

9.13. Ενότητα I10: Debugging και αρχική διερεύνηση

Περιεχόμενο:

  • kubectl get.
  • kubectl describe.
  • Logs από τρέχοντα και προηγούμενα containers.
  • Events.
  • Debug Pods.
  • Ephemeral containers.
  • Port forwarding.
  • Δοκιμές Service και DNS.
  • Κατάσταση resources.
  • CrashLoopBackOff.
  • ImagePullBackOff.
  • Pending.
  • OOMKilled.
  • Forbidden.

Άσκηση:

Λαμβάνεις μια εφαρμογή με σκόπιμα σφάλματα. Πρέπει να τεκμηριώσεις την αιτία, τη διόρθωση και την επικύρωση.

Πιθανές αστοχίες:

  • Λανθασμένο image.
  • Secret key που λείπει.
  • Λανθασμένος Selector του Service.
  • Πολύ χαμηλά memory Limits.
  • Εσφαλμένο readiness probe.
  • Απουσία δικαιώματος RBAC.
  • PVC χωρίς κατάλληλη StorageClass.

Κριτήρια αποδοχής:

  • Τεκμηριώνεις χωριστά συμπτώματα και αιτίες.
  • Στηρίζεις τη διάγνωση σε logs, Events ή πεδία Status.
  • Κάνεις τη μικρότερη αναγκαία διόρθωση.
  • Επαληθεύεις την επιτυχία μετά τη διόρθωση.
09 / 27

10. Επίπεδο 3: Professional

10.1. Στόχος

Μπορείς να σχεδιάζεις, να λειτουργείς και να αξιολογείς πλατφόρμες Kubernetes. Η έμφαση είναι στην αρχιτεκτονική cluster, στα distributions, στον κύκλο ζωής, στη δικτύωση, στο storage, στο observability, στο GitOps, στο multi-tenancy, στο κόστος και στο disaster recovery.

10.2. Κοινό στόχος

  • Platform Engineers.
  • Cloud Engineers.
  • SREs.
  • System Architects.
  • Tech Leads.
  • Έμπειροι DevOps Engineers.

10.3. Μαθησιακοί στόχοι

Μετά από αυτό το επίπεδο μπορείς να:

  • αξιολογείς αρχιτεκτονικές cluster,
  • κατατάσσεις distributions και μοντέλα λειτουργίας,
  • εξηγείς την υψηλή διαθεσιμότητα του Control Plane και τους κινδύνους του etcd,
  • συνυπολογίζεις τις εκδόσεις Kubernetes και το version skew,
  • αξιολογείς CNI, CSI και load balancing,
  • σχεδιάζεις observability stacks για Kubernetes,
  • κατατάσσεις το GitOps με Argo CD ή Flux,
  • λειτουργείς add-ons πλατφόρμας με ελεγχόμενο τρόπο,
  • σχεδιάζεις multi-tenancy με Namespaces, RBAC, quotas και NetworkPolicies,
  • σχεδιάζεις backup, restore και disaster recovery.

10.4. Ενότητα P1: Αρχιτεκτονική cluster και μοντέλο λειτουργίας

Περιεχόμενο:

  • Single-cluster έναντι multi-cluster.
  • Multi-zone και multi-region.
  • Υψηλή διαθεσιμότητα Control Plane.
  • Node Pools των Workers.
  • Διαχωρισμένα Node Pools για σύστημα και workloads.
  • Cluster ανά περιβάλλον.
  • Cluster ανά tenant.
  • Κοινό cluster με Namespaces.
  • Cluster API και αυτοματοποίηση κύκλου ζωής.
  • Managed Kubernetes έναντι clusters που λειτουργεί η ίδια η ομάδα.

Ερωτήματα απόφασης:

  • Ποιος λειτουργεί το Control Plane;
  • Ποιος εφαρμόζει patches στα Nodes;
  • Ποιος έχει την ευθύνη για CNI, CSI και Ingress;
  • Πώς γίνεται backup της κατάστασης του cluster;
  • Πώς δοκιμάζονται οι αλλαγές πλατφόρμας;
  • Τι βαθμό απομόνωσης απαιτεί το μοντέλο tenants;

Άσκηση:

Δημιούργησε αρχιτεκτονική cluster στόχο για ένα ενδεικτικό σενάριο. Τεκμηρίωσε:

  • μοντέλο λειτουργίας,
  • περιβάλλοντα,
  • Node Pools,
  • παραδοχές δικτύου,
  • απαιτήσεις storage,
  • διαδρομή upgrade,
  • σχέδιο backup και restore,
  • κινδύνους και ανοιχτές αποφάσεις.

10.5. Ενότητα P2: Distributions και διαδρομές εγκατάστασης

Περιεχόμενο:

  • kubeadm.
  • Managed Kubernetes.
  • RKE2.
  • k3s.
  • k0s.
  • OpenShift.
  • Talos.
  • kind και minikube ως περιβάλλοντα μάθησης και δοκιμών.
  • Διαφορές παραγωγικότητας και λειτουργίας.
  • Μοντέλο υποστήριξης.
  • Διαδρομή upgrade.
  • Ευθύνη για add-ons.

Κριτήρια αξιολόγησης:

Κριτήριο Καθοδηγητική ερώτηση
Λειτουργική ευθύνη Ποιος εφαρμόζει patches και παρακολουθεί την πλατφόρμα;
Επεκτασιμότητα Πόσο ελεύθερα μπορείς να εγκαθιστάς add-ons και πολιτικές;
Ασφάλεια Ποια μέτρα θωράκισης περιλαμβάνονται και ποια πρέπει να προσθέσεις εσύ;
Δικτύωση Ποιες επιλογές CNI και load balancing είναι διαθέσιμες;
Storage Ποιοι CSI drivers είναι διαθέσιμοι και υποστηριζόμενοι;
Κύκλος ζωής Πώς λειτουργούν upgrades, rollbacks και παράθυρα υποστήριξης;
Συμμόρφωση Ποιες απαιτήσεις υπάρχουν για audit, encryption και πρόσβαση;

10.6. Ενότητα P3: kubeadm και κύκλος ζωής cluster

Περιεχόμενο:

  • Σκοπός του kubeadm.
  • kubeadm init.
  • kubeadm join.
  • Πιστοποιητικά.
  • Bootstrap tokens.
  • Αρχεία kubeconfig.
  • Επέκταση Control Plane.
  • Σύνδεση Worker.
  • Σχεδιασμός upgrades.
  • Version skew.
  • Reset και recovery.
  • Όρια του kubeadm.

Άσκηση:

Σε κατάλληλο lab περιβάλλον:

  1. Επαλήθευσε τις προϋποθέσεις των Nodes.
  2. Αρχικοποίησε Control Plane.
  3. Εγκατάστησε CNI plugin.
  4. Πρόσθεσε Worker Node.
  5. Επαλήθευσε την κατάσταση του cluster.
  6. Προσομοίωσε πρόβλημα πιστοποιητικού ή join.
  7. Τεκμηρίωσε τη διόρθωση.

Σημείωση:

Το kubeadm είναι εργαλείο bootstrap. Η δημιουργία μηχανών, η πλήρως αυτοματοποιημένη διαχείριση add-ons και η ολοκληρωμένη λειτουργία της πλατφόρμας απαιτούν πρόσθετα εργαλεία ή διαδικασίες.

10.7. Ενότητα P4: Λειτουργία etcd και Control Plane

Περιεχόμενο:

  • etcd ως συνεπής αποθήκη key-value.
  • Snapshot και restore.
  • Quorum.
  • Καθυστέρηση και απόδοση storage.
  • Πιστοποιητικά.
  • Defragmentation.
  • Monitoring.
  • Συχνότητα backups.
  • Δοκιμή restore.
  • Components Control Plane ως Static Pods.

Άσκηση:

  1. Εξέτασε τα Pods του Control Plane.
  2. Δημιούργησε snapshot του etcd σε lab περιβάλλον.
  3. Τεκμηρίωσε τα βήματα restore.
  4. Όρισε διάστημα μεταξύ δοκιμών restore.
  5. Διατύπωσε τους κινδύνους από ελαττωματικό backup του etcd.

Κριτήρια αποδοχής:

  • Μπορείς να εξηγήσεις γιατί backup χωρίς δοκιμή restore δεν επαρκεί.
  • Γνωρίζεις τις επιπτώσεις απώλειας quorum.
  • Διακρίνεις το backup εφαρμογών από το backup της κατάστασης του cluster.

10.8. Ενότητα P5: CNI, δίκτυο Services και load balancing

Περιεχόμενο:

  • Αρμοδιότητες CNI.
  • Δίκτυο Pods.
  • Δίκτυο Services.
  • kube-proxy.
  • eBPF dataplanes.
  • Υλοποίηση ClusterIP.
  • Ενσωμάτωση LoadBalancer.
  • Ingress Controller.
  • Gateway Controller.
  • Υποστήριξη NetworkPolicy.
  • DNS και CoreDNS.
  • Service Mesh ως προαιρετικό πρόσθετο μοντέλο.

Άσκηση:

Ανάλυσε τη δικτυακή διαδρομή ενός request:

text
Client -> Load Balancer -> Ingress/Gateway -> Service -> EndpointSlice -> Pod

Για κάθε βήμα τεκμηρίωσε:

  • το Kubernetes resource που συμμετέχει,
  • το component της πλατφόρμας,
  • πιθανή πηγή αστοχίας,
  • κατάλληλες διαγνωστικές εντολές.

10.9. Ενότητα P6: CSI και λειτουργία storage

Περιεχόμενο:

  • CSI drivers.
  • StorageClasses.
  • Dynamic provisioning.
  • Reclaim policies.
  • Volume binding mode.
  • Snapshots.
  • Επέκταση volumes.
  • Κλάσεις απόδοσης.
  • Backup και restore για stateful workloads.
  • Τόπος αποθήκευσης δεδομένων.
  • Encryption.

Άσκηση:

Δημιούργησε σχέδιο storage για τρεις τύπους workloads:

  1. Stateless API.
  2. Database.
  3. Message broker.

Αξιολόγησε για καθένα:

  • την ανάγκη μόνιμης αποθήκευσης,
  • τον στόχο backup,
  • τον χρόνο restore,
  • τις απαιτήσεις απόδοσης,
  • τις απαιτήσεις διαθεσιμότητας,
  • τους κινδύνους σε αστοχία Node.

10.10. Ενότητα P7: Observability

Περιεχόμενο:

  • Metrics.
  • Logs.
  • Traces.
  • Events.
  • Κατάσταση Kubernetes objects.
  • Prometheus.
  • Grafana.
  • Loki.
  • Tempo.
  • OpenTelemetry.
  • Alerting.
  • SLOs και SLIs.
  • Golden signals.
  • Runbooks.

Άσκηση:

Σχεδίασε μοντέλο observability για μια ενδεικτική εφαρμογή:

  • Ποια metrics χρειάζεσαι;
  • Ποια logs χρειάζεσαι;
  • Ποια traces βοηθούν στην ανάλυση αστοχιών;
  • Ποια Kubernetes Events είναι σχετικά;
  • Ποια alerts είναι χρήσιμα;
  • Ποια alerts θα δημιουργούσαν μόνο θόρυβο;

Κριτήρια αποδοχής:

  • Διαχωρίζεις σήματα υποδομής, πλατφόρμας και εφαρμογής.
  • Ορίζεις alerts με σαφή διαδρομή ενέργειας.
  • Αποφεύγεις metrics που δείχνουν μόνο συμπτώματα χωρίς πλαίσιο.

10.11. Ενότητα P8: GitOps και διάθεση αλλαγών

Περιεχόμενο:

  • Git ως Desired State.
  • Pull-based deployment.
  • Argo CD.
  • Flux.
  • Ανίχνευση drift.
  • Sync waves.
  • Health checks.
  • Secrets στο μοντέλο GitOps.
  • Παραλλαγές περιβαλλόντων.
  • Προώθηση releases.
  • Rollback μέσω Git.
  • Policy gates στο CI/CD.

Άσκηση:

  1. Οργάνωσε GitOps repository για Dev, Stage και Prod.
  2. Όρισε ποια αρχεία συντηρούν οι ομάδες.
  3. Όρισε ποια αρχεία αποτελούν πρότυπα πλατφόρμας.
  4. Όρισε βήματα επικύρωσης.
  5. Περιέγραψε τη διαδρομή rollback.

10.12. Ενότητα P9: Add-ons πλατφόρμας

Συνήθη add-ons:

  • Metrics Server.
  • Ingress Controller.
  • Gateway Controller.
  • cert-manager.
  • ExternalDNS.
  • Cluster Autoscaler.
  • Karpenter ή εναλλακτικό Node autoscaling.
  • CNI plugin.
  • CSI driver.
  • Components observability.
  • Policy Engines.
  • External Secrets Operator.
  • Argo CD ή Flux.

Αξιολόγηση ανά add-on:

Ερώτηση Γιατί έχει σημασία
Ποιος λειτουργεί το add-on; Η σαφής ανάθεση ευθύνης αποτρέπει κενά παρακολούθησης.
Ποια δικαιώματα χρειάζεται; Τα add-ons συχνά διαθέτουν εκτεταμένα δικαιώματα cluster.
Πώς αναβαθμίζεται; Τα add-ons μπορούν να εμποδίσουν upgrades του cluster.
Πώς παρακολουθείται; Τα components της πλατφόρμας χρειάζονται δικά τους alerts.
Πώς αφαιρείται; Οι διαδικασίες δοκιμής και αστοχίας πρέπει να είναι γνωστές.

10.13. Ενότητα P10: Multi-tenancy

Περιεχόμενο:

  • Στρατηγική Namespaces.
  • RBAC ανά ομάδα.
  • ResourceQuota.
  • LimitRange.
  • NetworkPolicies.
  • Pod Security Admission.
  • Ξεχωριστά Node Pools.
  • RuntimeClass.
  • Admission Policies.
  • Απομόνωση Secrets.
  • Απομόνωση logging και monitoring.
  • Cost centers και Labels.

Άσκηση:

Σχεδίασε μοντέλο tenants για τρεις ομάδες:

  • Ομάδα A: εσωτερικό API.
  • Ομάδα B: batch workloads.
  • Ομάδα C: επεξεργασία ευαίσθητων δεδομένων.

Τεκμηρίωσε:

  • Namespaces,
  • ρόλους και δικαιώματα,
  • quotas,
  • κανόνες δικτύου,
  • επίπεδο Pod Security,
  • εξαιρέσεις και διαδικασία έγκρισης.

10.14. Ενότητα P11: Κόστος και χωρητικότητα

Περιεχόμενο:

  • Requests ως βάση του σχεδιασμού.
  • Overcommitment.
  • Αδρανής χωρητικότητα.
  • Κόστος ανά Namespace.
  • Labels για cost centers.
  • HPA, VPA και Cluster Autoscaler.
  • Spot ή preemptible Nodes.
  • Δικαιώματα και κίνδυνοι του autoscaling.
  • Metrics κόστους.

Άσκηση:

Ανάλυσε ένα Namespace:

  • άθροισμα CPU Requests,
  • άθροισμα Memory Requests,
  • πραγματική χρήση,
  • αχρησιμοποίητη χωρητικότητα,
  • workloads χωρίς Requests,
  • πιθανές βελτιστοποιήσεις.

10.15. Ενότητα P12: Backup, restore και disaster recovery

Περιεχόμενο:

  • Backup του etcd.
  • Backup δεδομένων εφαρμογών.
  • Kubernetes manifests.
  • Secrets.
  • PV snapshots.
  • Σειρά restore.
  • RPO και RTO.
  • Επαναδημιουργία cluster.
  • Επαναφορά μέσω GitOps.
  • Δοκιμές disaster recovery.

Άσκηση:

Δημιούργησε σχέδιο disaster recovery για εφαρμογή με database:

  • Τι γίνεται backup;
  • Πόσο συχνά γίνεται backup;
  • Πού αποθηκεύεται το backup;
  • Ποιος επιτρέπεται να κάνει restore;
  • Πώς δοκιμάζεται το restore;
  • Ποια ακολουθία ισχύει κατά την ανάκαμψη;
10 / 27

11. Επίπεδο 4: Advanced and Security

11.1. Στόχος

Μπορείς να θωρακίζεις το Kubernetes, να αξιολογείς κινδύνους, να ανιχνεύεις επιθέσεις και να χειρίζεσαι incidents με οργανωμένο τρόπο. Η έμφαση είναι στην πρόσβαση API, στο RBAC, στο Admission, στο Pod Security, στην τμηματοποίηση δικτύου, στην προστασία Secrets, στην image supply chain, στη runtime detection και στη forensics.

11.2. Κοινό στόχος

  • Security Engineers.
  • DevSecOps Engineers.
  • Platform Engineers.
  • SREs.
  • Ομάδες incident response.
  • Architects με ευθύνη ασφάλειας.

11.3. Μαθησιακοί στόχοι

Μετά από αυτό το επίπεδο μπορείς να:

  • δημιουργείς Kubernetes threat model,
  • διακρίνεις authentication, authorization και Admission,
  • εφαρμόζεις και επαληθεύεις RBAC least privilege,
  • σχεδιάζεις με ασφαλή τρόπο ServiceAccounts και tokens,
  • εφαρμόζεις Pod Security Standards,
  • αξιολογείς SecurityContexts,
  • κατατάσσεις capabilities, seccomp, AppArmor και SELinux,
  • χρησιμοποιείς NetworkPolicies και πολιτικές ειδικές για CNI,
  • διαχειρίζεσαι ασφαλέστερα τα Secrets,
  • μειώνεις τους κινδύνους images και supply chain,
  • οργανώνεις runtime security και incident response.

11.4. Ενότητα S1: Kubernetes threat modeling

Περιεχόμενο:

  • Assets μέσα στο cluster.
  • Επιφάνειες επίθεσης.
  • API Server ως κεντρικός στόχος.
  • ServiceAccount tokens.
  • Secrets.
  • Κίνδυνοι διαφυγής από container.
  • Privileged Pods.
  • Lateral movement.
  • Κίνδυνοι supply chain.
  • Μη ασφαλείς εξαιρέσεις Admission.
  • Ανεξέλεγκτη αύξηση δικαιωμάτων cluster-admin.

Άσκηση:

Δημιούργησε threat model για μια ενδεικτική πλατφόρμα. Τεκμηρίωσε:

  • assets που χρειάζονται προστασία,
  • πιθανούς επιτιθέμενους,
  • σημεία εισόδου,
  • διαδρομές κλιμάκωσης προνομίων,
  • τεχνικούς ελέγχους,
  • σήματα ανίχνευσης,
  • ανοιχτούς κινδύνους.

11.5. Ενότητα S2: Authentication, Authorization και Admission

Περιεχόμενο:

  • Authentication: Ποιος είσαι;
  • Authorization: Τι επιτρέπεται να κάνεις;
  • Admission: Επιτρέπεται αυτή η αλλαγή ή θα μεταβληθεί;
  • Users, Groups και ServiceAccounts.
  • RBAC.
  • Webhook Authorization.
  • Mutating Admission Webhooks.
  • Validating Admission Webhooks.
  • ValidatingAdmissionPolicy.
  • Audit logs.

Άσκηση:

  1. Έλεγξε τα δικαιώματά σου με kubectl auth can-i.
  2. Δημιούργησε Role με τα ελάχιστα δικαιώματα.
  3. Σύνδεσέ το με ServiceAccount.
  4. Δοκίμασε επιτρεπόμενες και απαγορευμένες ενέργειες.
  5. Τεκμηρίωσε τα αναμενόμενα σφάλματα Forbidden.

11.6. Ενότητα S3: RBAC least privilege

Περιεχόμενο:

  • Role.
  • ClusterRole.
  • RoleBinding.
  • ClusterRoleBinding.
  • Verbs.
  • Resources.
  • API groups.
  • Namespaced έναντι cluster-wide.
  • Aggregated ClusterRoles.
  • Impersonation.
  • Επικίνδυνα δικαιώματα όπως *, create pods, bind, escalate και impersonate.

Άσκηση:

Δημιούργησε μοντέλο RBAC για εφαρμογή:

  • Το Deployment επιτρέπεται να διαβάζει ConfigMaps.
  • Το Deployment δεν επιτρέπεται να κάνει list στα Secrets.
  • Ο Operator μπορεί να διαχειρίζεται resources μόνο στο δικό του Namespace.
  • Οι Developers μπορούν να διαβάζουν logs αλλά όχι να τροποποιούν ClusterRoles.

Κριτήρια αποδοχής:

  • Αποφεύγεις εκτεταμένα ClusterRoleBindings.
  • Μπορείς να επαληθεύεις δικαιώματα με kubectl auth can-i --as.
  • Τεκμηριώνεις γιατί απαιτείται κάθε δικαίωμα.

11.7. Ενότητα S4: ServiceAccounts και tokens

Περιεχόμενο:

  • Default ServiceAccount.
  • Αυτόματη προβολή token.
  • Bound ServiceAccount tokens.
  • Διάρκεια ζωής token.
  • Audience.
  • Μοντέλα Workload Identity.
  • Πρόσβαση από Pods.
  • Ελαχιστοποίηση πρόσβασης στο API.

Άσκηση:

  1. Δημιούργησε ειδικό ServiceAccount.
  2. Ανάθεσέ το σε Deployment.
  3. Αφαίρεσε περιττά δικαιώματα API.
  4. Εξέτασε τη σύνδεση του token.
  5. Απενεργοποίησε το αυτόματο mounting του token όταν δεν χρειάζεται.

11.8. Ενότητα S5: Pod Security Standards και Admission

Τα Pod Security Standards ορίζουν τρία επίπεδα πολιτικής:

Επίπεδο Σκοπός Χρήση
Privileged ελάχιστοι περιορισμοί μόνο για ιδιαίτερα προνομιούχα components συστήματος
Baseline μείωση γνωστών διαδρομών κλιμάκωσης προνομίων γενικό ελάχιστο πρότυπο
Restricted ισχυρότερη θωράκιση workloads ευαίσθητα ή αυστηρά ρυθμιζόμενα workloads

Περιεχόμενο:

  • Pod Security Admission.
  • Namespace Labels για enforce, audit και warn.
  • Baseline έναντι Restricted.
  • Εξαιρέσεις.
  • Μεταφορά παλαιών workloads.
  • Διάκριση από το προηγούμενο PodSecurityPolicy.
  • Συνδυασμός με Policy Engines.

Άσκηση:

  1. Ενεργοποίησε Pod Security Admission μέσω Namespace Labels σε lab περιβάλλον.
  2. Δημιούργησε Pod που παραβιάζει το Restricted.
  3. Ανάλυσε την προειδοποίηση ή την απόρριψη.
  4. Θωράκισε το Pod βήμα προς βήμα.

11.9. Ενότητα S6: SecurityContext και θωράκιση containers

Περιεχόμενο:

  • runAsNonRoot.
  • runAsUser.
  • runAsGroup.
  • fsGroup.
  • readOnlyRootFilesystem.
  • allowPrivilegeEscalation.
  • Linux capabilities.
  • seccomp.
  • AppArmor.
  • SELinux.
  • Privileged containers.
  • hostNetwork, hostPID και hostIPC.
  • Κίνδυνοι hostPath.

Παράδειγμα:

yaml
securityContext:
  runAsNonRoot: true
  runAsUser: 1000
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  seccompProfile:
    type: RuntimeDefault
  capabilities:
    drop:
      - ALL

Άσκηση:

  1. Εξέτασε μη ασφαλές Pod.
  2. Πρόσθεσε ρυθμίσεις SecurityContext.
  3. Αφαίρεσε περιττά capabilities.
  4. Επαλήθευσε τη συμβατότητα με την εφαρμογή.
  5. Τεκμηρίωσε τις απαραίτητες εξαιρέσεις.

11.10. Ενότητα S7: Απομόνωση δικτύου

Περιεχόμενο:

  • Default allow έναντι deny-by-default.
  • Κανόνες Ingress και Egress.
  • Namespace selector.
  • Pod selector.
  • IPBlock.
  • Εξαιρέσεις DNS.
  • Επεκτάσεις ειδικές για CNI.
  • Πολιτικές Cilium.
  • Πολιτικές Layer 7.
  • Service Mesh και mTLS.

Άσκηση:

  1. Δημιούργησε πολιτική deny-by-default στο Namespace.
  2. Επίτρεψε κίνηση από frontend προς backend.
  3. Επίτρεψε κίνηση DNS προς CoreDNS.
  4. Δοκίμασε επιτρεπόμενες και αποκλεισμένες συνδέσεις.
  5. Τεκμηρίωσε την αναμενόμενη συμπεριφορά.

Κριτήρια αποδοχής:

  • Επαληθεύεις αν το CNI σου εφαρμόζει NetworkPolicies.
  • Δοκιμάζεις τους κανόνες στην πράξη.
  • Συνυπολογίζεις DNS και εξωτερικές εξαρτήσεις.

11.11. Ενότητα S8: Ασφάλεια Secrets

Περιεχόμενο:

  • Kubernetes Secrets.
  • Base64 και encryption.
  • Encryption at rest.
  • RBAC για Secrets.
  • Διανομή Secrets.
  • Εξωτερικά συστήματα Secrets.
  • External Secrets Operator.
  • SOPS.
  • Vault.
  • Cloud Secret Manager.
  • Rotation.
  • Auditing.
  • Ακούσια καταγραφή σε logs.

Άσκηση:

Ανάπτυξε μοντέλο Secrets:

  • Ποια Secrets αποθηκεύονται στο Kubernetes;
  • Ποια Secrets παραμένουν εξωτερικά;
  • Ποιος μπορεί να διαβάζει Secrets;
  • Πώς γίνεται rotation των Secrets;
  • Πώς αποτρέπεις τη διαρροή Secrets σε Git ή logs;

11.12. Ενότητα S9: Ασφάλεια images και supply chain

Περιεχόμενο:

  • Image tags έναντι digests.
  • Ελάχιστα base images.
  • Vulnerability scanning.
  • SBOM.
  • Signatures.
  • Cosign.
  • Βασική έννοια SLSA.
  • Admission Policies για images.
  • Private registries.
  • ImagePullSecrets.
  • Provenance.

Άσκηση:

  1. Εξέτασε τη στρατηγική tagging ενός image.
  2. Αντικατάστησε ασαφές tag με digest.
  3. Όρισε πολιτική για επιτρεπόμενα registries.
  4. Περιέγραψε πώς ενσωματώνεται η επαλήθευση υπογραφής στο Admission.

11.13. Ενότητα S10: Runtime security

Περιεχόμενο:

  • Ύποπτη εκκίνηση διεργασιών.
  • Shell μέσα σε containers.
  • Πρόσβαση εγγραφής σε system paths.
  • Συνδέσεις δικτύου.
  • Πρόσβαση σε ServiceAccount tokens.
  • Falco.
  • Tetragon.
  • Σήματα βασισμένα σε eBPF.
  • RuntimeClass.
  • Sandboxed runtimes.

Άσκηση:

  1. Όρισε σχετικά runtime signals.
  2. Αντιστοίχισε τα σήματα σε πραγματικές διαδρομές επίθεσης.
  3. Σχεδίασε alerts με διαδρομή ενέργειας.
  4. Διάκρινε false positives από πραγματικά incidents.

11.14. Ενότητα S11: Incident response και forensics

Περιεχόμενο:

  • Ταξινόμηση incidents.
  • Containment.
  • Διατήρηση τεκμηρίων.
  • Διατήρηση της κατάστασης Pods και Nodes.
  • Logs, Events και audit logs.
  • Ύποπτες αλλαγές RBAC.
  • Ύποπτα images.
  • Ύποπτη πρόσβαση σε Secrets.
  • Lateral movement.
  • Ανάκαμψη και διδάγματα.

Άσκηση:

Σε ένα παραβιασμένο lab σενάριο, εκτέλεσε:

  1. Αρχική διερεύνηση.
  2. Εντοπισμό επηρεαζόμενων resources.
  3. Έλεγχο εξάπλωσης.
  4. Σχεδιασμό containment.
  5. Διατήρηση τεκμηρίων.
  6. Εξαγωγή βασικής αιτίας.
  7. Ορισμό διορθωτικών μέτρων.
  8. Τεκμηρίωση επόμενων εργασιών.

Κριτήρια αποδοχής:

  • Δεν διαγράφεις πρόωρα τεκμήρια.
  • Διαχωρίζεις το containment από την ανάλυση βασικής αιτίας.
  • Τεκμηριώνεις αποφάσεις και παραδοχές.
11 / 27

12. Περιβάλλον πρακτικής εξάσκησης

12.1. Παραλλαγές

Περιβάλλον Κατάλληλο για Πλεονεκτήματα Όρια
kind τοπικά labs, δοκιμές CI, σύντομες ασκήσεις γρήγορο, επαναλήψιμο, εύκολο teardown δεν διαθέτει πλήρες cloud load balancing
minikube τοπικές ασκήσεις για αρχάριους απλά add-ons, καλό μαθησιακό περιβάλλον απέχει περισσότερο από παραγωγή με πολλά Nodes
k3d τοπικά clusters k3s ελαφρύ και γρήγορο διαφορές ειδικές για k3s
VMs με kubeadm labs αρχιτεκτονικής και διαχείρισης κοντά σε cluster που λειτουργεί η ίδια η ομάδα περισσότερη προσπάθεια εγκατάστασης
Managed Kubernetes labs πλατφόρμας και cloud συνθήκες παρόμοιες με παραγωγή, ενσωμάτωση cloud κόστος, διαφορές ανά πάροχο

12.2. Ελάχιστες απαιτήσεις για το lab cluster

Για Fundamentals:

  • λειτουργικό cluster,
  • ξεχωριστό Namespace ανά συμμετέχοντα ή ομάδα,
  • δικαιώματα για Pods, Deployments, Services, ConfigMaps και Secrets,
  • πρόσβαση σε logs και Events.

Για Intermediate:

  • Metrics Server,
  • Ingress Controller ή Gateway Controller,
  • StorageClass,
  • δυνατότητα χρήσης NetworkPolicies,
  • προαιρετικά Helm και Kustomize.

Για Professional:

  • πρόσβαση στα add-ons του cluster,
  • σύστημα observability ή demo stack,
  • δυνατότητα εξέτασης Nodes ή Node Pools,
  • προαιρετικό lab kubeadm ή sandbox Managed Kubernetes.

Για Advanced and Security:

  • περιβάλλον δοκιμών RBAC,
  • Pod Security Admission,
  • CNI με υποστήριξη NetworkPolicies,
  • δοκιμαστικό registry ή ενδεικτικά images,
  • προαιρετικά Falco, Tetragon, Cilium ή Policy Engine.

12.3. Κανόνες ονοματοδοσίας

Προτεινόμενη σύμβαση:

text
namespace: workshop-<name>
app:       <team>-<app>
labels:    app.kubernetes.io/name, app.kubernetes.io/part-of, app.kubernetes.io/component

Παράδειγμα:

yaml
metadata:
  labels:
    app.kubernetes.io/name: web
    app.kubernetes.io/part-of: kubernetes-workshop
    app.kubernetes.io/component: frontend
    training.kubernetes.io/owner: team-a

12.4. Κανόνες ασφάλειας για τα labs

  • Μη χρησιμοποιείς πραγματικά Secrets παραγωγής.
  • Χρησιμοποίησε αποκλειστικά Namespaces.
  • Διάγραψε τα resources του lab μετά την άσκηση.
  • Μη χρησιμοποιείς δικαιώματα cluster-admin όταν αρκούν δικαιώματα Namespace.
  • Τεκμηρίωσε σκόπιμες εξαιρέσεις πολιτικής.
  • Έλεγξε το τρέχον context πριν από καταστροφικές εντολές.
12 / 27

13. Labs του εργαστηρίου

13.1. Lab 0: Εγκατάσταση και προσανατολισμός

Στόχος:

Επαληθεύεις ότι η πρόσβασή σου λειτουργεί και ότι εργάζεσαι στο σωστό cluster.

Εργασίες:

  1. Έλεγξε την τοπική έκδοση kubectl.
  2. Έλεγξε το τρέχον context.
  3. Εμφάνισε Nodes και Namespaces.
  4. Δημιούργησε το Namespace του εργαστηρίου σου.
  5. Έλεγξε τα δικαιώματά σου.

Εντολές:

bash
kubectl version --client
kubectl config current-context
kubectl get nodes
kubectl create namespace workshop-<name>
kubectl auth can-i create deployments -n workshop-<name>

Αποτέλεσμα:

Μπορείς να δηλώσεις με βεβαιότητα σε ποιο cluster και Namespace εργάζεσαι.

13.2. Lab 1: Deploy της πρώτης εφαρμογής

Στόχος:

Διαθέτεις απλή web εφαρμογή με Deployment και Service.

Εργασίες:

  1. Δημιούργησε Deployment.
  2. Κλιμάκωσέ το σε δύο replicas.
  3. Δημιούργησε ClusterIP Service.
  4. Εξέτασε Pods, ReplicaSets και Endpoints.
  5. Δοκίμασε την εφαρμογή από debug Pod.

Αποτέλεσμα:

Η εφαρμογή είναι προσβάσιμη εσωτερικά στο cluster.

13.3. Lab 2: Rollout και rollback

Στόχος:

Ελέγχεις μια αλλαγή και επιστρέφεις στην προηγούμενη κατάσταση όταν παρουσιαστούν αστοχίες.

Εργασίες:

  1. Άλλαξε το image σε νέα έκδοση.
  2. Παρατήρησε το rollout.
  3. Όρισε μη έγκυρο image.
  4. Ανάλυσε την αστοχία.
  5. Εκτέλεσε rollback.

Αποτέλεσμα:

Μπορείς να εντοπίσεις και να αναιρέσεις ελαττωματική αλλαγή.

13.4. Lab 3: Διαμόρφωση και Secrets

Στόχος:

Διαχωρίζεις τον κώδικα της εφαρμογής από τη διαμόρφωση εκτέλεσης.

Εργασίες:

  1. Δημιούργησε ConfigMap.
  2. Δημιούργησε Secret με δοκιμαστικές τιμές.
  3. Σύνδεσε και τα δύο σε Deployment.
  4. Επαλήθευσε τις τιμές μέσα στο Pod.
  5. Άλλαξε τη διαμόρφωση και ενεργοποίησε rollout.

Αποτέλεσμα:

Η εφαρμογή χρησιμοποιεί εξωτερική διαμόρφωση και δεν έχει hard-coded τιμές.

13.5. Lab 4: Probes και πόροι

Στόχος:

Κάνεις μια εφαρμογή ασφαλέστερη κατά το rollout και ευκολότερη στο scheduling.

Εργασίες:

  1. Πρόσθεσε readiness probe.
  2. Πρόσθεσε liveness probe.
  3. Πρόσθεσε startup probe αν ο χρόνος εκκίνησης έχει σημασία.
  4. Όρισε Requests και Limits.
  5. Εξέτασε Events και κλάση QoS.

Αποτέλεσμα:

Το workload προγραμματίζεται ευκολότερα και παρέχει στο Kubernetes ουσιαστικά σήματα υγείας.

13.6. Lab 5: Ingress, Gateway ή εξωτερική πρόσβαση

Στόχος:

Κάνεις μια εφαρμογή προσβάσιμη μέσω HTTP.

Εργασίες:

  1. Έλεγξε τον διαθέσιμο Ingress ή Gateway Controller.
  2. Δημιούργησε resource δρομολόγησης.
  3. Διαμόρφωσε hostname ή path.
  4. Έλεγξε τις παραδοχές TLS.
  5. Δοκίμασε την πρόσβαση.

Αποτέλεσμα:

Κατανοείς τη διαδρομή από την εξωτερική κίνηση έως την εφαρμογή.

13.7. Lab 6: Storage

Στόχος:

Χρησιμοποιείς μόνιμα δεδομένα στο Kubernetes.

Εργασίες:

  1. Έλεγξε τις StorageClasses.
  2. Δημιούργησε PVC.
  3. Σύνδεσε το PVC σε Pod.
  4. Γράψε δεδομένα.
  5. Διάγραψε και αντικατάστησε το Pod.
  6. Έλεγξε ξανά τα δεδομένα.

Αποτέλεσμα:

Κατανοείς τη διαφορά μεταξύ της διάρκειας ζωής του Pod και των δεδομένων.

13.8. Lab 7: RBAC

Στόχος:

Δημιουργείς ελάχιστα δικαιώματα για ServiceAccount.

Εργασίες:

  1. Δημιούργησε ServiceAccount.
  2. Δημιούργησε Role με ελάχιστα δικαιώματα.
  3. Δημιούργησε RoleBinding.
  4. Έλεγξε δικαιώματα με kubectl auth can-i.
  5. Δοκίμασε απαγορευμένες ενέργειες.

Αποτέλεσμα:

Μπορείς να εφαρμόσεις στην πράξη την αρχή least privilege.

13.9. Lab 8: NetworkPolicies

Στόχος:

Απομονώνεις workloads μέσα στο Namespace.

Εργασίες:

  1. Δημιούργησε πολιτική deny-by-default.
  2. Επίτρεψε ρητά κίνηση από frontend προς backend.
  3. Επίτρεψε κίνηση DNS.
  4. Δοκίμασε επιτρεπόμενες και αποκλεισμένες συνδέσεις.
  5. Τεκμηρίωσε τις παραδοχές για το CNI.

Αποτέλεσμα:

Μπορείς να ελέγχεις την επικοινωνία δικτύου στο cluster.

13.10. Lab 9: Ανάλυση αστοχιών

Στόχος:

Αναλύεις αρκετούς συνηθισμένους τρόπους αστοχίας.

Περιπτώσεις αστοχίας:

  • Pod Pending.
  • CrashLoopBackOff.
  • ImagePullBackOff.
  • Service χωρίς Endpoints.
  • Αποτυχία επίλυσης DNS.
  • PVC Pending.
  • RBAC Forbidden.
  • OOMKilled.
  • Rollout που έχει κολλήσει.

Διαδικασία:

  1. Περιέγραψε το σύμπτωμα.
  2. Εμφάνισε σχετικά resources.
  3. Έλεγξε Events.
  4. Έλεγξε logs.
  5. Εντόπισε την αιτία.
  6. Κάνε την ελάχιστη αναγκαία διόρθωση.
  7. Επαλήθευσε την επιτυχία.

Αποτέλεσμα:

Μπορείς να χειρίζεσαι και να τεκμηριώνεις αστοχίες με συστηματικό τρόπο.

13.11. Lab 10: Platform blueprint

Στόχος:

Σχεδιάζεις πλατφόρμα Kubernetes με προσανατολισμό στην παραγωγή.

Εργασίες:

  1. Επίλεξε μοντέλο λειτουργίας.
  2. Όρισε δομή clusters και Namespaces.
  3. Όρισε add-ons.
  4. Όρισε observability.
  5. Όρισε βασικό επίπεδο ασφάλειας.
  6. Όρισε backup και restore.
  7. Όρισε διαδικασία upgrade και rollback.

Αποτέλεσμα:

Μπορείς να αιτιολογείς αρχιτεκτονικές αποφάσεις.

13.12. Lab 11: Security review

Στόχος:

Ελέγχεις μια εφαρμογή για κινδύνους ασφάλειας Kubernetes.

Σημεία ελέγχου:

  • ServiceAccount.
  • RBAC.
  • Secrets.
  • SecurityContext.
  • Επίπεδο Pod Security.
  • NetworkPolicies.
  • Πηγή image.
  • Προδιαγραφές πόρων.
  • Πρόσβαση στον Host.
  • Privileges.
  • Logs και ευαίσθητα δεδομένα.

Αποτέλεσμα:

Συντάσσεις εύρημα ασφάλειας με προτεραιότητα, κίνδυνο και πρόταση διόρθωσης.

13 / 27

14. Τελικά έργα

14.1. Έργο Α: Rollout εφαρμογής με προσανατολισμό στην παραγωγή

Κοινό στόχος:

  • Developers.
  • DevOps Engineers.
  • Συμμετέχοντες Intermediate.

Εργασία:

Λαμβάνεις μια απλή εφαρμογή και πρέπει να την κάνεις rollout στο Kubernetes με απαιτήσεις παραγωγής.

Ελάχιστες απαιτήσεις:

  • Namespace.
  • Deployment με τουλάχιστον δύο replicas.
  • Service.
  • ConfigMap.
  • Secret με δοκιμαστικές τιμές.
  • Readiness και liveness probe.
  • Requests και Limits.
  • Τεκμηρίωση rollout και rollback.
  • Τεκμήρια debugging.
  • Οδηγίες teardown.

Επεκτάσεις:

  • Ingress ή Gateway API.
  • HPA.
  • PDB.
  • NetworkPolicy.
  • Helm ή Kustomize.

Αξιολόγηση:

  • Λειτουργικότητα.
  • Ανθεκτικότητα.
  • Ιχνηλασιμότητα.
  • Λειτουργική ωριμότητα.
  • Βασικό επίπεδο ασφάλειας.

14.2. Έργο Β: Σχεδιασμός πλατφόρμας

Κοινό στόχος:

  • Platform Engineers.
  • SREs.
  • Tech Leads.
  • Συμμετέχοντες Professional.

Εργασία:

Σχεδιάζεις πλατφόρμα Kubernetes για πολλές ομάδες.

Ελάχιστες απαιτήσεις:

  • Στρατηγική clusters.
  • Μοντέλο Namespaces και tenants.
  • Σχεδιασμός RBAC.
  • Quotas και LimitRanges.
  • Μοντέλο δικτύου.
  • Στρατηγική Ingress ή Gateway.
  • Στρατηγική storage.
  • Μοντέλο observability.
  • Μοντέλο GitOps.
  • Μοντέλο backup και disaster recovery.
  • Στρατηγική upgrade.
  • Αρμοδιότητες add-ons.

Αξιολόγηση:

  • Σαφή όρια αρμοδιοτήτων.
  • Ρεαλιστικές λειτουργικές παραδοχές.
  • Δυνατότητα upgrade.
  • Επίπεδο ασφάλειας.
  • Κλιμάκωση.
  • Σαφήνεια.

14.3. Έργο Γ: Αξιολόγηση ασφάλειας Kubernetes

Κοινό στόχος:

  • Security Engineers.
  • DevSecOps.
  • Συμμετέχοντες Advanced.

Εργασία:

Ελέγχεις ένα ενδεικτικό cluster ή μια διαμόρφωση Namespace για κινδύνους ασφάλειας.

Ελάχιστες απαιτήσεις:

  • Έλεγχος RBAC.
  • Έλεγχος ServiceAccount.
  • Έλεγχος Pod Security.
  • Έλεγχος SecurityContext.
  • Έλεγχος Secrets.
  • Έλεγχος NetworkPolicy.
  • Έλεγχος images και registry.
  • Έλεγχος Admission.
  • Μοντέλο runtime signals.
  • Σύντομο σχέδιο incident response.

Αξιολόγηση:

  • Αξιολόγηση κινδύνου.
  • Ελέγξιμα τεκμήρια.
  • Προτεραιοποίηση.
  • Ρεαλιστικές προτάσεις διόρθωσης.
  • Απουσία άσκοπα καταστροφικών μέτρων.
14 / 27

15. Κριτήρια αξιολόγησης

15.1. Γενική κλίμακα αξιολόγησης

Κατηγορία 0 βαθμοί 1 βαθμός 2 βαθμοί 3 βαθμοί
Λειτουργία δεν λειτουργεί λειτουργεί εν μέρει λειτουργεί με μικρά προβλήματα λειτουργεί πλήρως
Μοντέλο Kubernetes λανθασμένη χρήση όρων οι βασικοί όροι είναι εν μέρει σωστοί το μοντέλο resources είναι κυρίως σωστό το μοντέλο resources εξηγείται με σιγουριά
Ποιότητα manifests ελλιπή ή μη εφαρμόσιμα εφαρμόσιμα αλλά ανοργάνωτα καθαρή δομή σαφή, συντηρήσιμα και κατάλληλα για versioning
Λειτουργία καμία επικύρωση απλός οπτικός έλεγχος χρήση logs, Events και Status πλήρης διάγνωση και teardown
Ασφάλεια κανένας έλεγχος ελάχιστοι έλεγχοι ουσιαστικό βασικό επίπεδο σωστή εφαρμογή least privilege και πολιτικών
Τεκμηρίωση λείπει σύντομη ιχνηλάσιμη ελέγξιμη και χρήσιμη στη λειτουργία

15.2. Βάση επιτυχίας

Μια άσκηση θεωρείται επιτυχής όταν:

  • η λειτουργικότητα αποδεικνύεται,
  • τα σημαντικότερα resources έχουν σωστά ονόματα και εξηγούνται,
  • τεκμηριώνεται τουλάχιστον ένα βήμα επικύρωσης,
  • δεν χρησιμοποιήθηκε πραγματικό Secret,
  • υπάρχει διαδρομή teardown.

15.3. Κριτήρια άριστης λύσης

Μια λύση είναι άριστη όταν:

  • είναι δηλωτική και επαναλήψιμη,
  • χρησιμοποιεί σαφή Labels και κανόνες ονοματοδοσίας,
  • περιλαμβάνει προδιαγραφές πόρων,
  • ορίζει ουσιαστικά health checks,
  • λαμβάνει υπόψη rollout και rollback,
  • ορίζει συνειδητά SecurityContext και ServiceAccount,
  • περιορίζει την πρόσβαση στο δίκτυο,
  • τεκμηριώνει σημαντικούς τρόπους αστοχίας,
  • έχει επικυρωθεί με kubectl diff ή server-side dry run,
  • δεν απαιτεί περιττά δικαιώματα σε επίπεδο cluster.
15 / 27

16. Παραλλαγές προγράμματος

16.1. Σύντομο εργαστήριο: 1 ημέρα

Στόχος:

Αποκτάς πρακτική εισαγωγή και μπορείς να διαθέτεις απλά workloads.

Ώρα Θέμα
09:00 - 09:30 Επισκόπηση, αρχιτεκτονική, επιθυμητή εικόνα
09:30 - 10:30 Cluster, Namespaces, Pods, kubectl
10:45 - 12:00 Deployments, ReplicaSets, Services
13:00 - 14:00 ConfigMaps, Secrets, probes
14:00 - 15:00 Rollouts, logs, Events, debugging
15:15 - 16:15 Πόροι, βασική ιδέα HPA και PDB
16:15 - 17:00 Τελική άσκηση και ανασκόπηση

Δεν περιλαμβάνονται:

  • εις βάθος λειτουργία πλατφόρμας,
  • κύκλος ζωής kubeadm,
  • πλήρης θωράκιση ασφάλειας,
  • σχεδιασμός multi-tenancy.

16.2. Τυπικό εργαστήριο: 2 ημέρες

Στόχος:

Μπορείς να δημιουργείς workloads με προσανατολισμό στην παραγωγή και να αναλύεις συνήθεις αστοχίες.

Ημέρα 1

Ώρα Θέμα
09:00 - 10:00 Αρχιτεκτονική και μοντέλο resources
10:00 - 11:30 Pods, Deployments, Services
11:30 - 12:00 Labels, selectors, DNS
13:00 - 14:00 ConfigMaps και Secrets
14:00 - 15:00 Probes και rollouts
15:15 - 16:30 Διαχείριση πόρων
16:30 - 17:00 Ανασκόπηση ημέρας

Ημέρα 2

Ώρα Θέμα
09:00 - 10:00 Storage και PVCs
10:00 - 11:00 Ingress, Gateway API και NetworkPolicies
11:00 - 12:00 Helm και Kustomize
13:00 - 14:30 Debugging και συνηθισμένες αστοχίες
14:30 - 15:30 Βασικά RBAC και Pod Security
15:45 - 16:45 Τελικό έργο
16:45 - 17:00 Ανασκόπηση και επόμενα βήματα

16.3. Εργαστήριο Professional: 3 ημέρες

Στόχος:

Μπορείς να λειτουργείς workloads και να λαμβάνεις αποφάσεις πλατφόρμας.

Ημέρα 1

  • Επανάληψη των βασικών εννοιών Kubernetes.
  • Εμβάθυνση στους Workload Controllers.
  • Πόροι, probes και rollouts.
  • Labs debugging.

Ημέρα 2

  • Networking, Ingress και Gateway API.
  • Storage και CSI.
  • Scheduling.
  • Helm, Kustomize και GitOps.

Ημέρα 3

  • Αρχιτεκτονική cluster.
  • Distributions και kubeadm.
  • Observability.
  • Multi-tenancy.
  • Backup και disaster recovery.
  • Platform blueprint.

16.4. Εργαστήριο ασφάλειας: 2 ημέρες

Στόχος:

Μπορείς να αναγνωρίζεις και να μειώνεις κινδύνους ασφάλειας ειδικούς για το Kubernetes.

Ημέρα 1

Ώρα Θέμα
09:00 - 10:00 Threat modeling
10:00 - 11:30 Authentication, Authorization, Admission
11:30 - 12:00 Ανάλυση RBAC
13:00 - 14:00 ServiceAccounts και tokens
14:00 - 15:30 Pod Security Standards
15:45 - 17:00 Lab SecurityContext

Ημέρα 2

Ώρα Θέμα
09:00 - 10:30 NetworkPolicies και πολιτικές CNI
10:30 - 11:30 Ασφάλεια Secrets
11:30 - 12:00 Ασφάλεια images και supply chain
13:00 - 14:00 Runtime security
14:00 - 15:30 Incident response
15:45 - 17:00 Αξιολόγηση ασφάλειας και ανασκόπηση

16.5. Πλήρες πρόγραμμα κατάρτισης: 6 έως 8 ημέρες

Στόχος:

Χτίζεις διατηρήσιμη τεχνογνωσία Kubernetes στην ομάδα.

Προτεινόμενη δομή:

  1. Ημέρα: Fundamentals.
  2. Ημέρα: Workloads και διαμόρφωση.
  3. Ημέρα: Networking, storage και scheduling.
  4. Ημέρα: Debugging, Helm, Kustomize και διάθεση αλλαγών.
  5. Ημέρα: Αρχιτεκτονική πλατφόρμας και kubeadm.
  6. Ημέρα: Observability, GitOps, multi-tenancy και disaster recovery.
  7. Ημέρα: Θωράκιση ασφάλειας.
  8. Ημέρα: Incident response, τελικό έργο και ανασκόπηση.
16 / 27

17. Οδηγός εκπαιδευτή

17.1. Προετοιμασία

Πριν από το εργαστήριο:

  • δοκίμασε το περιβάλλον cluster,
  • προετοίμασε Namespaces ή πρόσβαση,
  • έλεγξε τα δικαιώματα,
  • επικύρωσε τα ενδεικτικά manifests,
  • προετοίμασε εσκεμμένες περιπτώσεις αστοχίας,
  • τεκμηρίωσε εντολές teardown,
  • σημείωσε διαφορές ειδικές για τον πάροχο,
  • δοκίμασε λειτουργίες δικτύου και storage,
  • προγραμμάτισε Ingress ή Gateway API μόνο αν τα υποστηρίζει το περιβάλλον.

17.2. Διεξαγωγή

Μια καλή διεξαγωγή ακολουθεί το μοτίβο:

  1. Εξήγησε σύντομα την έννοια.
  2. Δείξε το resource σε manifest.
  3. Εφάρμοσε το manifest.
  4. Εξέτασε το Status.
  5. Προκάλεσε αστοχία.
  6. Ανάλυσε την αστοχία.
  7. Κάνε τη διόρθωση.
  8. Τεκμηρίωσε το αποτέλεσμα.

17.3. Μικτές ομάδες

Σε μικτές ομάδες:

  • υποστήριξε τους αρχάριους με σαφή ορολογία,
  • ενέταξε τους προχωρημένους μέσω περιπτώσεων αστοχίας,
  • σήμανε τα θέματα πλατφόρμας ως προαιρετική εμβάθυνση,
  • συγκέντρωσε νωρίς ερωτήσεις ασφάλειας και κατέταξέ τες συστηματικά,
  • χώρισε τα labs σε βασικές και πρόσθετες εργασίες.

17.4. Συνήθεις παγίδες χρόνου

  • Προβλήματα τοπικής εγκατάστασης.
  • Ελλείποντα δικαιώματα cluster.
  • Απουσία Ingress Controller.
  • Απουσία StorageClass.
  • NetworkPolicies χωρίς CNI που τα υποστηρίζει.
  • Container images που δεν μπορούν να γίνουν pull.
  • Προβλήματα DNS ή proxy σε εταιρικά δίκτυα.
  • Υπερβολικά μεγάλες θεματικές ενότητες χωρίς ασκήσεις.

17.5. Προτεινόμενα όρια ύλης στο εργαστήριο

Το Kubernetes δεν πρέπει να εξετάζεται απομονωμένα από τα γειτονικά συστήματα. Πρέπει όμως να είναι σαφές ποιο εργαλείο φέρει κάθε ευθύνη.

Θέμα Ευθύνη Kubernetes Δεν είναι αυτόματα ευθύνη Kubernetes
Build εκτέλεση images δημιουργία images
Deployment Desired State στο cluster πλήρης διακυβέρνηση releases
Networking Services, routing, πολιτικές εταιρικό δίκτυο, ζώνες DNS, firewalls εκτός cluster
Storage σύνδεση PVCs και Volumes schema database, λογικά backups
Security RBAC, Admission, Pod Security πλήρης στρατηγική IAM εκτός cluster
Observability Status, Events, metrics ολόκληρη η οργάνωση incident response
17 / 27

18. Έλεγχοι γνώσεων και ερωτήσεις αναστοχασμού

18.1. Fundamentals

  • Ποια είναι η διαφορά μεταξύ Pod και Deployment;
  • Γιατί τα Pods είναι προσωρινά;
  • Πώς βρίσκει ένα Service τα Pods του;
  • Ποια είναι η διαφορά μεταξύ spec και status;
  • Γιατί το kubectl describe είναι συχνά χρησιμότερο από μόνο το kubectl get κατά την ανάλυση αστοχίας;
  • Πώς αναγνωρίζεις αν ένα Service έχει Endpoints;
  • Γιατί πρέπει να γίνεται versioning ενός manifest;

18.2. Intermediate

  • Πότε χρειάζεσαι Startup Probe;
  • Πώς διαφέρουν Readiness και Liveness;
  • Τι συμβαίνει όταν ένα container υπερβεί το memory Limit του;
  • Γιατί είναι σημαντικά τα Requests για το scheduling;
  • Γιατί μια αλλαγή ConfigMap δεν ενεργοποιεί πάντα αυτόματα rollout;
  • Πώς αναλύεις Pod σε κατάσταση Pending;
  • Πώς διακρίνεις προβλήματα DNS, Service και Endpoints;
  • Ποιοι κίνδυνοι προκύπτουν όταν λείπουν NetworkPolicies;

18.3. Professional

  • Ποιες αρμοδιότητες παραμένουν σε εσένα όταν χρησιμοποιείς Managed Kubernetes;
  • Γιατί το etcd είναι ιδιαίτερα κρίσιμο;
  • Τι σημαίνει version skew;
  • Πώς σχεδιάζεις ασφαλές upgrade του cluster;
  • Ποια add-ons είναι κρίσιμα για τη λειτουργία της πλατφόρμας;
  • Πώς διακρίνεις το backup του cluster από το backup δεδομένων εφαρμογών;
  • Πότε είναι χρήσιμο το multi-cluster;
  • Ποια σήματα ανήκουν σε καλό μοντέλο Kubernetes observability;

18.4. Advanced and Security

  • Γιατί ένα ClusterRoleBinding με cluster-admin είναι επικίνδυνο;
  • Ποια δικαιώματα επιτρέπουν κλιμάκωση προνομίων;
  • Τι προσφέρουν τα Pod Security Standards και τι δεν προσφέρουν;
  • Γιατί το Base64 δεν είναι encryption;
  • Ποιοι κίνδυνοι προκύπτουν από το hostPath;
  • Πώς δοκιμάζεις NetworkPolicies;
  • Ποιες ενδείξεις υποδηλώνουν παραβιασμένο Pod;
  • Τι πρέπει να διατηρήσεις πριν διαγράψεις ύποπτο Pod;
18 / 27

19. Συνήθεις παρανοήσεις

Παρανόηση Διόρθωση
Το Kubernetes απλώς ξεκινά containers. Το Kubernetes διαχειρίζεται Desired State, networking, storage, rollouts, δικαιώματα και επεκτάσεις.
Ένα Pod είναι σαν VM. Ένα Pod είναι προσωρινό και συνήθως διαχειρίζεται από Controllers.
Ένα Service είναι Load Balancer. Ένα Service είναι σταθερή αφαίρεση· εξωτερικοί Load Balancers δημιουργούνται μόνο για συγκεκριμένους τύπους Service και κατάλληλη ενσωμάτωση.
Τα Secrets είναι κρυπτογραφημένα επειδή έχουν κωδικοποιηθεί σε Base64. Το Base64 είναι μόνο encoding. Η προστασία απαιτεί RBAC, encryption at rest και ενδεχομένως εξωτερικά συστήματα Secrets.
Τα Liveness Probes κάνουν τις εφαρμογές πιο σταθερές. Λανθασμένα ρυθμισμένα Liveness Probes μπορούν να μειώσουν τη σταθερότητα.
Τα Limits είναι πάντα ωφέλιμα. Υπερβολικά στενά Limits μπορούν να προκαλέσουν OOMKills ή CPU throttling.
Τα NetworkPolicies λειτουργούν πάντα. Εφαρμόζονται μόνο αν τα υποστηρίζει το CNI plugin.
Το Ingress λειτουργεί χωρίς Controller. Τα Ingress resources απαιτούν αντίστοιχο Controller.
Το GitOps αντικαθιστά τα tests. Το GitOps συγχρονίζει το Desired State, αλλά δεν αντικαθιστά την επικύρωση.
Managed Kubernetes σημαίνει ότι δεν υπάρχουν εργασίες λειτουργίας πλατφόρμας. Πολλές εργασίες παραμένουν: add-ons, πολιτικές, workloads, κόστος, observability και ασφάλεια.
Η ασφάλεια είναι ξεχωριστό κεφάλαιο στο τέλος. Η ασφάλεια πρέπει να ενσωματώνεται στην αρχιτεκτονική, στα workloads, στο networking, στη διάθεση αλλαγών και στη λειτουργία.
19 / 27

20. Προτεινόμενη διάρκεια

Επίπεδο Κοινό στόχος Διάρκεια Αποτέλεσμα
Fundamentals αρχάριοι, Junior DevOps, Developers, διαχειριστές 1 ημέρα διαθέτεις, επαληθεύεις και καταργείς απλές εφαρμογές
Intermediate DevOps, System Engineers, χρήστες Kubernetes 1 έως 2 ημέρες διαμορφώνεις και διαγιγνώσκεις workloads με απαιτήσεις παραγωγής
Professional Platform Engineers, Cloud Engineers, SREs, Tech Leads 2 έως 3 ημέρες αξιολογείς την αρχιτεκτονική και τη λειτουργία πλατφόρμας
Advanced and Security Security Engineers, DevSecOps, Platform Architects 1 έως 2 ημέρες θωρακίζεις το Kubernetes και οργανώνεις την αντιμετώπιση incidents
Πλήρες πρόγραμμα μικτές ομάδες πλατφόρμας και εφαρμογών 6 έως 8 ημέρες ολοκληρωμένη μαθησιακή διαδρομή με τελικό έργο

20.1. Διάρκεια ανά βάθος

Βάθος Διάρκεια Εστίαση
Ενημέρωση 2 έως 4 ώρες όροι, αρχιτεκτονική, κίνδυνοι
Πρακτική εισαγωγή 1 ημέρα Deployments, Services, logs, Events
Εισαγωγή με απαιτήσεις παραγωγής 2 ημέρες probes, πόροι, storage, Ingress, debugging
Εκπαίδευση πλατφόρμας 3 έως 5 ημέρες λειτουργία cluster, add-ons, GitOps, disaster recovery
Εμβάθυνση στην ασφάλεια 2 ημέρες θωράκιση, πολιτικές, runtime, incident response
20 / 27

21. Αντιστοίχιση σε πρακτικούς ρόλους

21.1. Developers

Απαραίτητα θέματα:

  • Namespaces.
  • Pods.
  • Deployments.
  • Services.
  • ConfigMaps.
  • Βασικές αρχές Secrets.
  • Probes.
  • Προδιαγραφές πόρων.
  • Logs και Events.
  • Rollout και rollback.

Προαιρετικά θέματα:

  • HPA.
  • Ingress ή Gateway API.
  • Helm ή Kustomize.
  • NetworkPolicies.

21.2. DevOps Engineers

Απαραίτητα θέματα:

  • Όλα τα θέματα των Developers.
  • Workload Controllers.
  • Storage.
  • Scheduling.
  • Helm και Kustomize.
  • Επικύρωση CI/CD.
  • Debugging.
  • Βασικά RBAC.
  • PDB και HPA.

Προαιρετικά θέματα:

  • GitOps.
  • Observability.
  • kubeadm.
  • SecurityContext.

21.3. Platform Engineers

Απαραίτητα θέματα:

  • Αρχιτεκτονική cluster.
  • Distributions.
  • CNI και CSI.
  • Ingress και Gateway API.
  • Observability.
  • GitOps.
  • Multi-tenancy.
  • Add-ons.
  • Backup και disaster recovery.
  • Στρατηγική upgrade.
  • Έλεγχος κόστους.

Προαιρετικά θέματα:

  • Runtime security.
  • Service Mesh.
  • Cluster API.
  • Policy Engines.

21.4. Security Engineers

Απαραίτητα θέματα:

  • Threat modeling.
  • RBAC.
  • ServiceAccounts.
  • Pod Security Standards.
  • Admission Control.
  • SecurityContext.
  • NetworkPolicies.
  • Ασφάλεια Secrets.
  • Ασφάλεια images.
  • Runtime detection.
  • Incident response.

Προαιρετικά θέματα:

  • Ασφάλεια Service Mesh.
  • Ασφάλεια βασισμένη σε eBPF.
  • Forensics σε επίπεδο Node.
  • Αυτοματοποίηση συμμόρφωσης.
21 / 27

22. Προχωρημένα θέματα

Αυτά τα θέματα είναι κατάλληλα για ενότητες εμβάθυνσης ή ξεχωριστά εργαστήρια:

  • Εσωτερική λειτουργία Kubernetes API.
  • Ανάπτυξη Controllers.
  • Operator SDK.
  • CustomResourceDefinitions.
  • ValidatingAdmissionPolicy.
  • Policy-as-Code με Kyverno, Gatekeeper ή Validating Admission Policies.
  • Service Mesh με Istio, Linkerd ή Consul.
  • eBPF και Cilium.
  • Cluster API.
  • GitOps για πολλά clusters.
  • Progressive Delivery με Argo Rollouts ή Flagger.
  • Canary, blue-green και A/B deployments.
  • Workload Identity.
  • Confidential Containers.
  • Sandboxed runtimes.
  • Scheduling GPU και accelerators.
  • Dynamic Resource Allocation.
  • Λύσεις backup όπως Velero.
  • Διαχείριση κόστους Kubernetes.
  • FinOps για ομάδες πλατφόρμας.
  • SLO engineering στο Kubernetes.
  • Chaos engineering.

22.1. Ενότητα εμβάθυνσης: Controllers και Operators

Μαθησιακοί στόχοι:

  • Κατανοείς πώς οι Controllers συμφιλιώνουν το Desired State.
  • Μπορείς να κατατάξεις τα CRDs ως επεκτάσεις API.
  • Αναγνωρίζεις κινδύνους από Operators με ανεπαρκή λειτουργική διαχείριση.

Περιεχόμενο:

  • Reconciliation Loop.
  • Owner References.
  • Finalizers.
  • Conditions.
  • CRDs.
  • Controller Runtime.
  • Operator pattern.
  • Θέματα upgrade και backup για CRDs.

22.2. Ενότητα εμβάθυνσης: Policy-as-Code

Μαθησιακοί στόχοι:

  • Μπορείς να επικυρώνεις αυτόματα τεχνικούς κανόνες πλατφόρμας.
  • Κατανοείς τη διαφορά μεταξύ validation, mutation και audit.

Περιεχόμενο:

  • Admission Control.
  • ValidatingAdmissionPolicy.
  • Kyverno.
  • Gatekeeper.
  • Δοκιμές πολιτικών.
  • Διαδικασίες εξαιρέσεων.
  • Έλεγχοι πολιτικών στο CI/CD.

22.3. Ενότητα εμβάθυνσης: Progressive Delivery

Μαθησιακοί στόχοι:

  • Μπορείς να μειώνεις τον κίνδυνο των releases.
  • Κατανοείς στρατηγικές rollout πέρα από το τυπικό rolling update.

Περιεχόμενο:

  • Canary.
  • Blue-green.
  • Feature flags.
  • Traffic splitting.
  • Προώθηση βάσει metrics.
  • Αυτόματα rollbacks.
  • Argo Rollouts.
  • Flagger.

22.4. Ενότητα εμβάθυνσης: Kubernetes σε ρυθμιζόμενα περιβάλλοντα

Μαθησιακοί στόχοι:

  • Μπορείς να μετατρέπεις απαιτήσεις audit, συμμόρφωσης και ιχνηλασιμότητας σε πρακτικές Kubernetes.

Περιεχόμενο:

  • Audit logs.
  • Τεκμήρια RBAC.
  • Αναφορές πολιτικών.
  • Προέλευση images.
  • Rotation Secrets.
  • Encryption.
  • Διαχωρισμός tenants.
  • Τεκμήρια backup.
  • Διαχείριση αλλαγών.
22 / 27

23. Πηγές και παραπομπές

Οι ακόλουθες πηγές είναι χρήσιμες για εμβάθυνση και για τη διατήρηση του προγράμματος ενημερωμένου:

  • Kubernetes Documentation: https://kubernetes.io/docs/
  • Kubernetes Concepts: https://kubernetes.io/docs/concepts/
  • Kubernetes Components: https://kubernetes.io/docs/concepts/overview/components/
  • Kubernetes API Concepts: https://kubernetes.io/docs/reference/using-api/api-concepts/
  • Pods: https://kubernetes.io/docs/concepts/workloads/pods/
  • Deployments: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
  • Services: https://kubernetes.io/docs/concepts/services-networking/service/
  • Gateway API: https://kubernetes.io/docs/concepts/services-networking/gateway/
  • NetworkPolicies: https://kubernetes.io/docs/concepts/services-networking/network-policies/
  • PersistentVolumes: https://kubernetes.io/docs/concepts/storage/persistent-volumes/
  • Resource Management: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
  • Probes: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
  • RBAC: https://kubernetes.io/docs/reference/access-authn-authz/rbac/
  • Pod Security Standards: https://kubernetes.io/docs/concepts/security/pod-security-standards/
  • kubectl Reference: https://kubernetes.io/docs/reference/kubectl/
  • kubeadm Reference: https://kubernetes.io/docs/reference/setup-tools/kubeadm/
  • Creating a Cluster with kubeadm: https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/
  • kubeadm Upgrade: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
  • etcd Disaster Recovery: https://etcd.io/docs/
  • Helm Documentation: https://helm.sh/docs/
  • Kustomize Documentation: https://kubectl.docs.kubernetes.io/references/kustomize/
  • Argo CD Documentation: https://argo-cd.readthedocs.io/
  • Flux Documentation: https://fluxcd.io/flux/
  • Cilium Documentation: https://docs.cilium.io/
  • Falco Documentation: https://falco.org/docs/
  • OpenTelemetry Documentation: https://opentelemetry.io/docs/
23 / 27

Παράρτημα Α: Σύντομος πίνακας βασικών resources

Resource Επίπεδο Γιατί πρέπει να το γνωρίζεις
Namespace Fundamentals λογικός διαχωρισμός και πεδίο εφαρμογής πολλών resources
Pod Fundamentals μικρότερη μονάδα που μπορεί να γίνει deploy
Deployment Fundamentals τυπικός Controller για stateless εφαρμογές
ReplicaSet Fundamentals διατηρεί διαθέσιμα replicas ενός Pod template
Service Fundamentals σταθερή πρόσβαση σε προσωρινά Pods
ConfigMap Intermediate μη εμπιστευτική διαμόρφωση
Secret Intermediate εμπιστευτική διαμόρφωση με πρόσθετες ανάγκες προστασίας
Ingress Intermediate HTTP/HTTPS routing προς το cluster
Gateway API Intermediate εκτεταμένο μοντέλο routing με διακριτούς ρόλους
PersistentVolumeClaim Intermediate αίτημα storage από workload
StorageClass Intermediate δυναμική δημιουργία storage
HorizontalPodAutoscaler Intermediate αυτόματη κλιμάκωση βάσει metrics
PodDisruptionBudget Intermediate ελάχιστη διαθεσιμότητα κατά τις προγραμματισμένες διακοπές
Role και RoleBinding Advanced RBAC εντός Namespace
ClusterRole και ClusterRoleBinding Advanced δικαιώματα RBAC σε επίπεδο cluster
ServiceAccount Advanced ταυτότητα workload μέσα στο cluster
NetworkPolicy Advanced τμηματοποίηση δικτύου
ResourceQuota Professional όρια πόρων ανά Namespace
LimitRange Professional προεπιλογές και όρια ανά Namespace
CustomResourceDefinition Professional επέκταση του Kubernetes API
24 / 27

Παράρτημα Β: Ελάχιστο πρότυπο για τα manifests του εργαστηρίου

Όπου είναι δυνατόν, κάθε manifest του εργαστηρίου πρέπει να περιλαμβάνει:

  • σαφή ονόματα,
  • Namespace,
  • Labels,
  • καθορισμένους selectors,
  • προδιαγραφές πόρων,
  • probes για εφαρμογές μεγάλης διάρκειας,
  • SecurityContext όπου χρειάζεται,
  • κανένα πραγματικό Secret,
  • ιχνηλάσιμες εκδόσεις images,
  • σχόλια μόνο όταν βοηθούν στην κατανόηση.

Ενδεικτική δομή:

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: workshop
  labels:
    app.kubernetes.io/name: web
    app.kubernetes.io/part-of: kubernetes-workshop
spec:
  replicas: 2
  selector:
    matchLabels:
      app.kubernetes.io/name: web
  template:
    metadata:
      labels:
        app.kubernetes.io/name: web
    spec:
      serviceAccountName: web
      containers:
        - name: web
          image: nginx:1.27
          ports:
            - name: http
              containerPort: 80
          readinessProbe:
            httpGet:
              path: /
              port: http
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /
              port: http
            periodSeconds: 20
          resources:
            requests:
              cpu: "100m"
              memory: "128Mi"
            limits:
              memory: "256Mi"
          securityContext:
            allowPrivilegeEscalation: false
            readOnlyRootFilesystem: true
            capabilities:
              drop:
                - ALL
25 / 27

Παράρτημα Γ: Λίστα ελέγχου teardown

Πριν από το τέλος μιας άσκησης, έλεγξε:

  • Ποια Namespaces δημιουργήθηκαν;
  • Ποια Deployments, Services, Jobs και Pods εκτελούνται ακόμη;
  • Ποια PVCs και PVs παραμένουν;
  • Ποιοι LoadBalancers δημιουργήθηκαν;
  • Ποια Secrets περιέχουν δοκιμαστικά δεδομένα;
  • Ποια RBAC Bindings δημιουργήθηκαν;
  • Ποια NetworkPolicies επηρεάζουν επόμενες ασκήσεις;
  • Ποια Helm releases είναι εγκατεστημένα;

Ενδεικτικές εντολές:

bash
kubectl get all -n workshop
kubectl get configmap,secret,pvc,ingress,networkpolicy -n workshop
helm list -n workshop
kubectl delete namespace workshop
26 / 27

Παράρτημα Δ: Τελικές ερωτήσεις ανασκόπησης

  • Ποιο resource αντιπροσώπευε την έγκυρη επιθυμητή κατάσταση;
  • Ποιοι Controllers συμμετείχαν;
  • Ποια Conditions ή Events ήταν σημαντικά για τη διάγνωση;
  • Ποια αλλαγή είχε κίνδυνο;
  • Πώς θα μπορούσες να επικυρώσεις την αλλαγή εκ των προτέρων;
  • Πώς μετρήθηκε η επιτυχία;
  • Πώς καταργείται η λύση;
  • Ποια παραδοχή ασφάλειας παραμένει ανοιχτή;
  • Ποια λειτουργική εργασία πρέπει να αυτοματοποιηθεί;
  • Ποια τεκμηρίωση λείπει για λειτουργία σε παραγωγή;
27 / 27

K8S · Orthevs Academy

31 modules as one continuous learning path.

The sequence remains unchanged: from the lab skeleton through technical foundations and operating models to final troubleshooting. The technical directory names are deliberately preserved.

Orthevs – Engineering the foundation for what comes next.

Orthevs as an app

Install Orthevs

The Orthevs web app can be installed on supported mobile devices and desktop browsers.

iPhone and iPad

Open Orthevs in Safari. Tap Share, then Add to Home Screen. Enable Open as Web App if offered, then tap Add.

Android

For the web app, open the browser menu and choose Install app or Add to Home screen. Confirm the installation.

Desktop browser

Open the browser menu or the install icon in the address bar, then choose Install app or Add to Dock.

Web app installation depends on your browser. If no install prompt appears, follow the browser steps shown above.