07 OCI Bundle με runc
Αυτό το παράδειγμα ανήκει στο containerd Workshop και ακολουθεί τη δομή των παραδειγμάτων Kubernetes: ένα κύριο README, αναλυτική τεκμηρίωση στα γερμανικά, αγγλικά και ελληνικά, καθώς και μικρά Artifacts που μπορούν να ελεγχθούν.
1. Στόχος
Δημιουργείται ένα OCI Runtime Bundle ή ελέγχεται ως έγκυρο JSON Model.
Το παράδειγμα είναι ένα απομονωμένο Lab ή Model. Δεν τροποποιεί το Production Configuration της Runtime και γράφει τα αποτελέσματα εκτέλεσης αποκλειστικά στον φάκελο work/.
2. Προαπαιτούμενα
- Linux, WSL, VM ή αντίστοιχο Test Environment.
python3για επικύρωση JSON, TOML και YAML.- Προαιρετικά
containerd,ctr,runc,nerdctlκαιcrictlγια πρόσθετα αποδεικτικά στοιχεία. - Μη χρησιμοποιείτε Production Nodes, Registries, Credentials ή Pull Secrets.
3. Αρχεία
README.mdREADME-EL.mddocs/de/README.mddocs/en/README.mddocs/el/README.mdrun.shoci/config.jsonoci/rootfs.txt
4. Εκτέλεση
cd examples/07-oci-bundle-runc
chmod +x run.sh
./run.sh
find work -maxdepth 3 -type f | sort
5. Αναμενόμενο αποτέλεσμα
- Το
run.shτερματίζεται με Exit Code0. - Τα TOML, JSON και YAML ελέγχονται ως προς τη σύνταξή τους.
- Τα Shell Scripts ελέγχονται με
bash -n. - Αν το containerd είναι διαθέσιμο τοπικά, καταγράφεται η έκδοσή του και συλλέγονται προαιρετικά στοιχεία από το
ctr. - Όλα τα Runtime Artifacts δημιουργούνται στον φάκελο
work/.
6. Επεξήγηση
Κατά την εργασία με το containerd πρέπει να διακρίνετε καθαρά τα επίπεδα: Host, containerd Daemon, API, Content Store, Snapshotter, Runtime, CRI, CNI και Kubernetes. Το παράδειγμα απομονώνει ένα συγκεκριμένο τμήμα τους και καθιστά σαφή τα ερωτήματα ανασκόπησης.
7. Συνήθη σφάλματα
| Σφάλμα | Αιτία | Διάγνωση |
|---|---|---|
Το ctr δεν εμφανίζει Kubernetes Images |
Λανθασμένο containerd Namespace | ctr namespaces ls, ctr -n k8s.io images ls |
| Το Pull αποτυγχάνει | Registry, TLS, Authentication ή Mirror | Ελέγξτε hosts.toml, Logs και Resolver |
| Το Pod δεν ξεκινά | CRI, CNI, Snapshotter ή Runtime | Ελέγξτε crictl, journalctl και Events |
| Το Configuration φαίνεται σωστό αλλά αγνοείται | Λανθασμένο Plugin ID ή Path | Ελέγξτε containerd config dump και την έκδοση |
| Disk Pressure | Content, Snapshots, Leases ή Logs | ctr content ls, ctr snapshots ls, ctr leases ls |
8. Θέματα ασφάλειας
- Μην εισάγετε Production Sockets, Registry Credentials ή Cluster Endpoints σε Labs.
- Μην παρακάμπτετε τα προβλήματα Registry TLS με
skip_verify = true, εκτός αν πρόκειται για σαφώς σημειωμένο αρνητικό παράδειγμα. - Οι Sandbox Runtimes, το Seccomp και το AppArmor είναι πρόσθετοι έλεγχοι· δεν υποκαθιστούν τα ασφαλή Images.
- Οι αλλαγές Runtime Configuration σε Kubernetes Nodes απαιτούν Drain, Rollback και έγκριση.
9. Ανασκόπηση και αποδεικτικά στοιχεία
Μια ολοκληρωμένη εργασία περιλαμβάνει τουλάχιστον:
work/evidence/
tooling.txt
result.txt
config-review.txt
risk-note.md
cleanup.md
Δεν δημιουργείται κάθε αρχείο σε κάθε παράδειγμα. Σημασία έχει τα αποδεικτικά στοιχεία να συνδέονται με τον μαθησιακό στόχο και να μην περιέχουν Secrets.
10. Δυνατότητες επέκτασης
- Επεκτείνετε το παράδειγμα με πραγματικό Test Registry.
- Προσθέστε CRI Output από Lab Node.
- Προσθέστε παραλλαγή RuntimeClass για Kata ή gVisor.
- Προσθέστε Image Verification με Cosign ή Notation ως ξεχωριστό Lab.
- Επικυρώστε τα αποδεικτικά στοιχεία ως προς TOML, JSON και YAML στο CI.
Παράρτημα παραδείγματος: αποδεικτικά στοιχεία, λειτουργία και μεταφορά
Το παράρτημα ολοκληρώνει το παράδειγμα ως εκπαιδευτικό υλικό. Περιγράφει πώς ένα τοπικό Model οδηγεί σε αξιόπιστη ανάλυση Runtime, χωρίς πρόσβαση σε Production Nodes ή Credentials.
B.1 Ορίστε το πεδίο εφαρμογής
Ο ορισμός του πεδίου εφαρμογής είναι απαραίτητος εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.2 Επικυρώστε τα Artifacts
Η επικύρωση των Artifacts είναι απαραίτητη εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.3 Ονομάστε το επίπεδο Runtime
Η ονομασία του επιπέδου Runtime είναι απαραίτητη εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.4 Ελέγξτε τη σχέση με το Kubernetes
Ο έλεγχος της σχέσης με το Kubernetes είναι απαραίτητος εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.5 Καταγράψτε τα όρια ασφάλειας
Η καταγραφή των ορίων ασφάλειας είναι απαραίτητη εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.6 Τεκμηριώστε το Rollback
Η τεκμηρίωση του Rollback είναι απαραίτητη εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.7 Καθαρίστε τα αποδεικτικά στοιχεία
Ο καθαρισμός των αποδεικτικών στοιχείων είναι απαραίτητος εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.8 Περιορίστε τη μεταφορά
Ο περιορισμός της μεταφοράς είναι απαραίτητος εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.9 Ολοκληρώστε την ανασκόπηση
Η ολοκλήρωση της ανασκόπησης είναι απαραίτητη εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.10 Εκτελέστε το Cleanup
Η εκτέλεση του Cleanup είναι απαραίτητη εδώ, επειδή τα containerd Labs μπορεί διαφορετικά να μετατραπούν από ασφαλή Models σε ανεξέλεγκτες αλλαγές Nodes. Η αξιολόγηση πρέπει να διευκρινίζει αν ένα Artifact χρησιμεύει μόνο για επεξήγηση, επικυρώνεται τοπικά ή θα εφαρμοζόταν σε πραγματικό Node.
| Ερώτημα | Απαίτηση |
|---|---|
| Τι επηρεάζεται; | Κατονομάζεται ο Host, ο Daemon, το Plugin, το Content, ο Snapshotter, η Runtime, το CRI, το CNI ή το Kubernetes. |
| Τι αποδεικνύεται; | Ένα αρχείο ή Output στον φάκελο work/evidence/ τεκμηριώνει το εύρημα. |
| Τι μένει ανοικτό; | Οι απαιτήσεις για πραγματικούς Nodes τεκμηριώνονται ως όριο εφαρμογής. |
Σημεία ανασκόπησης:
- Δεν υπάρχουν Production Secrets.
- Δεν υπάρχουν αλλαγές σε Sockets ή systemd χωρίς ανασκόπηση.
- Δεν υπάρχουν εξαιρέσεις Registry χωρίς αιτιολόγηση.
- Δεν συγχέονται τα
ctr,crictlκαιnerdctl. - Το Cleanup είναι εφικτό με διαγραφή του φακέλου
work/.
B.11 Ολοκλήρωση
Ένα παράδειγμα ολοκληρώνεται όταν το Script εκτελείται επιτυχώς, όλα τα Artifacts του Model είναι συντακτικά έγκυρα, κατονομάζεται το επίπεδο Runtime που επηρεάζεται και τα αποδεικτικά στοιχεία δεν περιέχουν εμπιστευτικά δεδομένα.