Mesh Service and Traffic Policy (Πολιτική
1) Γιατί εξυπηρετείται το πλέγμα
Το Service Mesh είναι στρώμα υποδομής για την κυκλοφορία Ανατολής-Δύσης (διυπηρεσιακές επικοινωνίες), το οποίο παρέχει ομοιόμορφες δυνατότητες χωρίς να ξαναγράφει τον κωδικό:- Προεπιλεγμένη ασφάλεια: mTLS, αυτόματη έκδοση/εναλλαγή πιστοποιητικών, ταυτότητες υπηρεσίας.
- Πολιτική κυκλοφορίας: δρομολόγηση L7, δοκιμές καναρινιού/AV, υποβάθμιση και σταθερότητα.
- Παρατηρησιμότητα: μετρήσεις, κούτσουρα, ίχνη, σήματα χρυσού σε κάθε κλήση.
- Πράξεις: ενιαίες πολιτικές για όλες τις γλώσσες/πλαίσια.
Διαφορά από την πύλη API: πύλη - περίμετρος Βορρά-Νότου. πλέγμα - ανατολικά-δυτικά εντός της δέσμης/οργάνωσης. Συχνά συνεργάζονται.
2) Αρχιτεκτονική: Αεροπλάνα και μοτίβα
Επίπεδο δεδομένων: πληρεξούσιος sidecar (απεσταλμένος/πληρεξούσιος Linkerd/happroxy), ο οποίος αναχαιτίζει την κίνηση pod/VM.
Επίπεδο ελέγχου: διανέμει διαμορφώσεις (διαδρομές, πολιτικές, πιστοποιητικά), κατάσταση καταστημάτων, δημοσιεύει μηχανισμούς παροχής υπηρεσιών.
Ταυτότητα: συνήθως ταυτότητα SPIFFE και αυτόματα πιστοποιητικά X.509 (SPIRE/ενσωματωμένο CA).
Σημεία εισόδου/εξόδου: είσοδος/έξοδος-πύλη για την παρακολούθηση των συνοριακών ροών.
Τρόποι υλοποίησης: sidecar για καθένα από αυτά· ανά κόμβο/κατάσταση περιβάλλοντος σε νέες εφαρμογές.
3) Πολιτική ασφάλειας και μηδενική εμπιστοσύνη
1. mTLS εξ ορισμού - κρυπτογράφηση servis↔servis και αμοιβαία επαλήθευση ταυτότητας.
2. AuthN/AuthZ:- AuthN: εμπιστοσύνη μόνο ταυτότητες που εκδίδονται από CA mesh 'a (SPIFFE).
- AuthZ: δηλωτικός κανόνας «ποιος μπορεί και πώς» (RBAC/ABAC).
- Επιτρεπόμενα πεδία/υποδίκτυα. αναγκαστική έξοδος μέσω πύλης εξόδου.
- Παρεμποδίζοντας την άμεση έκβαση από τις εστίες.
3. Έλεγχος απομόνωσης και εξόδου:
4. Μυστική περιστροφή: βραχύβια πιστοποιητικά, αυτόματη αναδιαμόρφωση πληρεξουσίου.
yaml apiVersion: security. istio. io/v1beta1 kind: PeerAuthentication metadata: { name: default, namespace: istio-system }
spec:
mtls: { mode: STRICT }
Istio (παράδειγμα: να επιτραπεί μόνο η inventory→billing gRPC):
yaml apiVersion: security. istio. io/v1beta1 kind: AuthorizationPolicy metadata: { name: billing-allow, namespace: prod }
spec:
selector: { matchLabels: { app: billing } }
rules:
- from:
- source: { principals: ["spiffe://corp. local/ns/prod/sa/inventory"] }
to:
- operation: { ports: ["8080"], methods: ["POST"], paths: ["/proto. Billing/"] }
4) Πολιτική κυκλοφορίας: εμμονή και δρομολόγηση
4. 1 Χρονοδιαγράμματα και υποχωρήσεις
Χρονοδιακόπτες: πρέπει να ρυθμίζονται στην κλήση (σύνδεση/ανάγνωση/συνολικά).
Επαναλήψεις: μόνο για idempotent λειτουργίες. backoff + jitter· όρια ανά δοκιμή timeout.
yaml apiVersion: networking. istio. io/v1beta1 kind: VirtualService metadata: { name: orders }
spec:
hosts: ["orders"]
http:
- route:
- destination: { host: orders, subset: v1, port: { number: 8080 } }
timeout: 5s retries:
attempts: 2 perTryTimeout: 2s retryOn: "5xx,connect-failure,reset"
4. Ανίχνευση εξωτερικού διακόπτη κυκλώματος 2
ΚΤ: περιορίζει τις ταυτόχρονες αιτήσεις/συνδέσεις, προστατεύοντας το ανάντη.
Ακραία: απορρίπτει «κακές» περιπτώσεις κατά σφάλμα/καθυστέρηση.
yaml apiVersion: networking. istio. io/v1beta1 kind: DestinationRule metadata: { name: orders }
spec:
host: orders trafficPolicy:
connectionPool:
http: { http1MaxPendingRequests: 1024, maxRequestsPerConnection: 100 }
outlierDetection:
consecutive5xxErrors: 5 interval: 5s baseEjectionTime: 30s maxEjectionPercent: 50
4. 3 Καναρίνια και κατά περίπτωση
Σταθμισμένη - Η κίνηση διαιρείται με τα βάρη v1/v2.
Με κεφαλίδα: σημαίες/cookies/ενοικιαστές → να μεταφερθούν στη νέα έκδοση.
Συγγένεια συνεδρίας: hash by key (τακτοποιημένα κλιμακωμένα).
yaml http:
- match: [{ headers: { "x-experiment": { exact: "new" } } }]
route: [{ destination: { host: orders, subset: v2 } }]
- route:
- destination: { host: orders, subset: v1, weight: 90 }
- destination: { host: orders, subset: v2, weight: 10 }
4. Ένεση και υποβάθμιση βλάβης
Καθυστέρηση/σφάλμα έγχυσης για δοκιμή ανθεκτικότητας και SLO.
yaml fault:
delay: { fixedDelay: 300ms, percentage: { value: 10 } }
abort: { httpStatus: 503, percentage: { value: 1 } }
5) Όρια δικτύου: είσοδος/έξοδος και εξωτερικές υπηρεσίες
Πύλη εισόδου: το μοναδικό σημείο εισόδου για εξωτερικούς πελάτες με μάτια. ολοκλήρωση με WAF/OIDC/ratelimits.
Έξοδος: κεντρική έξοδος με κατάλογο επιτρεπόμενων ξενιστών, επιθεώρηση TLS, καταγραφή τηλεμετρίας.
Servey Entry: δηλώνει το εξωτερικό SNI/ξενιστή ως μέρος των ματιών (ισχύουν οι πολιτικές και η αρχή του mTLS).
yaml apiVersion: networking. istio. io/v1beta1 kind: ServiceEntry metadata: { name: payments-external }
spec:
hosts: ["api. payments. com"]
ports: [{ number: 443, name: https, protocol: TLS }]
resolution: DNS location: MESH_EXTERNAL
6) Πολυσύνθετες, πολυσχιδείς και υβριδικές
Κοινόχρηστη PKI/τομέας εμπιστοσύνης: ενιαία ταυτότητα SPIFFE μεταξύ συσπειρώσεων.
Ανακάλυψη τελικού σημείου: σφαίρες εξυπηρέτησης μεταξύ περιοχών. τοπική προτεραιότητα και αποτυχία.
Ζωνική απομόνωση: ανά περιφέρεια πολιτικές, όρια και προτεραιότητες.
VM στα μάτια: σύνδεση κληροδοτημένων/στατιστικών συστημάτων με πληρεξούσια και τις ίδιες πολιτικές.
7) Παρατηρησιμότητα, SLO και λειτουργία
: 'requests _ total', 'request _ performance _ ms {p50, p95, p99}', '5xx _ rate', 'retry _ απόπειρες', 'cb _ state', 'mTLS _ authz _ reference'.
Αρχεία καταγραφής πρόσβασης: δομικά, με «traceparent», «χρήστης/ενοικιαστής», «απάντηση _ σημαίες».
Ιχνηλάτηση: αυτόματη έγχυση κεφαλίδων (πλαίσιο ιχνών W3C), δειγματοληψία, διαστάσεις σε επίπεδο λυκίσκου.
SLO: στόχοι με p99/σφάλματα στη διαδρομή (service→service).
Ειδοποιήσεις: '5xx' ακίδα, 'reset' rise, 'outlier _ ejections', mTLS υποβάθμιση (βλάβες χειραψίας).
8) Επιδόσεις και κόστος
Η Sidecar προσθέτει τιμολόγια (CPU/RAM/καθυστέρηση). Βελτιστοποίηση:- Σκληρότητα: να συμπεριληφθεί η πολιτική όπου χρειάζεται· δεν ενεργοποιούν παντού βαρέα φίλτρα.
- Κοινοπραξίες: διαχωρισμός διαδρομών (κρίσιμης σημασίας/υποβάθρου) σε διαφορετικές διαδρομές και όρια.
- Προφίλ: p99 σε «ψυχρές» διαδρομές, όγκος τηλεμετρίας (καταγραφές/μονοπάτια ορίου ταχύτητας).
- Εάν υποστηρίζεται και είναι σκόπιμο, εξετάζονται τρόποι λειτουργίας χωρίς περιβάλλον/sidecarless.
9) Ασφάλεια και συμμόρφωση
Ελάχιστη απαιτούμενη πρόσβαση: Επιτρέπονται ρητά οι οδηγίες και οι μέθοδοι.
Πολιτικές για τους νέους χώρους/ενοικιαστές: όρια δικτύου/αδειοδότησης.
Βασική περιστροφή/AC: προγραμματισμένη και επείγουσα· σύντομα πιστοποιητικά TL.
PII/μυστικά: συγκάλυψη σε κούτσουρα/κομμάτια; κρυπτογράφηση στο σύρμα/σε ηρεμία.
Έλεγχος: ποιος, πότε και ποια πολιτική άλλαξε. ταραχές δύο σταδίων.
10) Ενσωμάτωση στο K8s επίπεδο
Οι πολιτικές Mesh συμπληρώνουν και δεν αντικαθιστούν την NetworkPolicy.
Στην είσοδο/έξοδο-πύλη, μπορείτε να κρεμάσετε PodSecurity/PSA σε ένα επίπεδο κάτω.
NRA/autoscaling: εξετάστε retrays/CB - αλλάζουν φορτίο.
Σχέδια απελευθέρωσης: βάρη καναρινιών μέσω VirtualService + αυτόματη προώθηση SLO.
11) Κατάλογος ελέγχου εφαρμογής
- Καθορισμένα όρια εμπιστοσύνης και ενεργοποιημένα αυστηρά mTLS.
- Οι πολιτικές Authz επέτρεψαν: σε ποιον, σε ποιους λιμένες/μεθόδους.
- Τα χρονοδιαγράμματα/οι επαναλήψεις και η ανίχνευση ακραίων σημείων είναι διαμορφωμένα, ορίζονται ευδιάκριτα μονοπάτια.
- Καταχωρίζονται οι διαδρομές των Καναρίων Νήσων και το σχέδιο ανατροπής. ένεση βλάβης - μόνο σε μη prod.
- Οι εξωτερικές εξαρτήσεις προκύπτουν μέσω της πύλης εξόδου και της Service Entry.
- Οι μετρήσεις, τα αρχεία καταγραφής, τα ίχνη είναι διαμορφωμένα. ταμπλό και προειδοποιήσεις σχετικά με το p99/5xx/CB.
- Διατίθενται ποσοστώσεις/όρια ανά ενοικιαστή/χώρο ονομάτων.
- Έτοιμα βιβλία πορείας: διαρροή πιστοποιητικού, αστοχία CA, υποβάθμιση ανάντη, 503/RESET μάζας.
- Σχέδιο πολλαπλών συνεργατικών σχηματισμών (κοινή PKI, τοπικές προτεραιότητες, σενάρια DR).
- Ημέρες δοκιμής (ημέρες παιχνιδιού): επίπεδο ελέγχου πτώσης, πλευρικό όχημα ακινητοποίησης, διακοπή δικτύου, δηλητηριώδες ανάντη.
12) Αντι-μοτίβα
Πλέγμα «παντού και αμέσως» χωρίς απογραφή διαδρομής και SLO → δαπανηρή πολυπλοκότητα.
Προκαθορισμένα retrays για όλες τις μεθόδους → εφέ αντίγραφα και χιονοστιβάδες κυκλοφορίας.
Ένα «προσωρινά» → mTLS με αναπηρία παραμένει μόνιμα.
Έξοδος χωρίς πύλη → διαρροή δεδομένων/μη ληφθείσες εξαρτήσεις.
Μια παγκόσμια πολιτική για όλες τις υπηρεσίες → ψευδή ασφάλεια και ψευδώς θετικά αποτελέσματα.
Μηδενική παρατηρησιμότητα: συμπεριλαμβάνονται τα μάτια, αλλά δεν συλλέγονται μετρήσεις/μονοπάτια - χάνουν νόημα.
13) Γρήγορες συνταγές
Linkerd: ενεργοποίηση mTLS και πολιτικής από τον εξυπηρετητή
yaml apiVersion: policy. linkerd. io/v1beta1 kind: Server metadata: { name: billing, namespace: prod }
spec:
podSelector: { matchLabels: { app: billing } }
port: 8080 apiVersion: policy. linkerd. io/v1beta1 kind: ServerAuthorization metadata: { name: billing-allow-inventory, namespace: prod }
spec:
server: { name: billing }
client:
meshTLS:
identities: ["inventory. prod. serviceaccount. identity. linkerd. cluster. local"]
Πρόξενος (L7 πρόθεση + διαχωριστής)
hcl
Kind = "service-router"
Name = "orders"
Routes = [{
Match { HTTP { PathPrefix = "/v1" } }
Destination { Service = "orders" }
}]
Kind = "service-splitter"
Name = "orders"
Splits = [
{ Weight = 90, ServiceSubset = "v1" },
{ Weight = 10, ServiceSubset = "v2" }
]
14) ΣΥΧΝΈΣ ΕΡΩΤΉΣΕΙΣ
Χρειάζεται μια μικρή ομάδα
Εάν 3-5 υπηρεσίες - συχνότερα όχι. Έναρξη με καλές βιβλιοθήκες εισόδου και ανθεκτικότητας. Σύνδεση ματιών όταν υπάρχει ανάγκη για mTLS-προεπιλογή, ομοιόμορφες πολιτικές, και ιχνηλάτηση χωρίς αλλαγές κώδικα.
Πώς να ελέγξετε το κόστος
Μετρήστε τα εναέρια (CPU/RAM/καθυστέρηση) σε κρίσιμες διαδρομές, απενεργοποιήστε τα περιττά φίλτρα, μειώστε τον όγκο των κορμών/διαδρομών, χρησιμοποιήστε τρόπους χωρίς πλευρικό κάνιστρο όπου είναι ασφαλές.
Είναι δυνατή η παρέμβαση σε πλέγματα και χειροκίνητα διαμορφωμένα πληρεξούσια
Ναι, αλλά αποφύγετε διπλή διαδρομή/διπλή επανάληψη. Ένα μόνο μέρος είναι αληθές - το επίπεδο ελέγχου.
Τι είναι πιο σημαντικό: ασφάλεια ή επιδόσεις
Η προεπιλογή είναι η ασφάλεια (mTLS, AuthZ). Οι επιδόσεις επιτυγχάνονται με τη ρύθμιση των ομάδων σύνδεσης, την ανίχνευση ακραίων σημείων, τις οδούς-στόχους.
15) Σύνολα
Το Service Mesh μετατρέπει το δίκτυο μεταξύ των υπηρεσιών σε ένα προγραμματιζόμενο στρώμα με ομοιόμορφες πολιτικές: κρυπτογράφηση και ταυτότητες, λεπτή δρομολόγηση και ανθεκτικότητα, τηλεμετρία και ποσοστώσεις. Ξεκινήστε με κρίσιμες διαδρομές, ενεργοποιήστε STRICT mTLS και ρητή AuthZ, ρυθμίστε timeouts/retrays/CB, έξοδο ελέγχου, μέτρηση p99 και 5xx, περάστε ημέρες παιχνιδιού. Τότε το πλέγμα θα γίνει ενισχυτής της αξιοπιστίας και της ταχύτητας των απελευθερώσεων, και όχι πηγή εκπλήξεων.