Τεκμηρίωση παραδείγματος: Blue Green Release
Στόχος
Παρακολουθήστε ένα release χωρίς να αλλάξετε απευθείας το image του υπάρχοντος Deployment: ξεκινήστε τη νέα έκδοση, ελέγξτε την, αλλάξτε το Service και κάντε rollback αν χρειαστεί.
Τι γίνεται
Το lab δημιουργεί δύο Deployments με διαφορετικό περιεχόμενο. Το Service checkout δείχνει αρχικά στο Blue. Μπορείτε να κάνετε Smoke Test του Green μέσω ξεχωριστού Service πριν του αναθέσετε το production traffic.
Συνήθεις εντολές
kubectl apply -f manifests/
kubectl get endpoints -n release-lab checkout
kubectl port-forward -n release-lab svc/checkout-green 8081:80
kubectl patch service checkout -n release-lab --type=merge -p '{"spec":{"selector":{"app":"checkout","track":"green"}}}'
Επιβεβαίωση επιτυχίας
- Το Blue έχει τρία Pods σε κατάσταση Ready.
- Το Green έχει ένα Pod σε κατάσταση Ready.
- Μετά το Patch, το
checkoutδείχνει στα Green endpoints. - Το Rollback γίνεται με ένα ακόμη Service Patch.
Συνηθισμένα λάθη
- Οι Service selectors δεν αντιστοιχούν σε κανένα Pod.
- Το Green δεν δοκιμάζεται χωριστά πριν μεταφερθεί το production traffic.
- Τα παλιά Blue Pods διαγράφονται πολύ νωρίς και το Rollback γίνεται άσκοπα δύσκολο.