Τι ήρθε πρώτο - το κοτόπουλο ή το αυγό; Πολύ περίεργο ξεκίνημα για ένα άρθρο σχετικά με το Infrastructure-as-Code, έτσι δεν είναι;
Τι είναι το αυγό;
Τις περισσότερες φορές, το Infrastructure-as-Code (IaC) είναι ένας δηλωτικός τρόπος αναπαράστασης της υποδομής. Σε αυτό περιγράφουμε την κατάσταση που θέλουμε να επιτύχουμε, ξεκινώντας από το τμήμα υλικού και τελειώνοντας με τη διαμόρφωση λογισμικού. Επομένως το IaC χρησιμοποιείται για:
Παροχή πόρων. Αυτά είναι VM, S3, VPC κ.λπ. Βασικά εργαλεία για εργασία: Terraform и CloudFormation.
Οποιοσδήποτε κώδικας βρίσκεται στα αποθετήρια git. Και αργά ή γρήγορα ο αρχηγός της ομάδας θα αποφασίσει ότι πρέπει να τακτοποιηθούν. Και θα αναπαραστήσει. Και θα δημιουργήσει κάποια δομή. Και θα δει ότι αυτό είναι καλό.
Είναι επίσης καλό που υπάρχει ήδη GitLab и GitHub-παροχέας για Terraform (και αυτό είναι το Software Configuration). Με τη βοήθειά τους, μπορείτε να διαχειριστείτε ολόκληρο το έργο: μέλη της ομάδας, CI/CD, git-flow κ.λπ.
Από πού προήλθε το αυγό;
Άρα πλησιάζουμε σταδιακά στο βασικό ερώτημα.
Πρώτα απ 'όλα, πρέπει να ξεκινήσετε με ένα αποθετήριο που περιγράφει τη δομή άλλων αποθετηρίων, συμπεριλαμβανομένου του εαυτού σας. Και φυσικά, ως μέρος του GitOps, πρέπει να προσθέσετε CI ώστε οι αλλαγές να εκτελούνται αυτόματα.
Εάν το Git δεν έχει δημιουργηθεί ακόμα;
Πώς να το αποθηκεύσετε στο Git;
Πώς να εγκαταστήσετε το CI;
Αν αναπτύξουμε επίσης το Gitlab χρησιμοποιώντας IaC, ακόμα και στο Kubernetes;
Και το GitLab Runner επίσης στο Kubernetes;
Τι γίνεται με το Kubernetes στον πάροχο cloud;
Τι ήρθε πρώτο: το GitLab όπου θα ανεβάσω τον κώδικά μου ή ο κώδικας που περιγράφει τι είδους GitLab χρειάζομαι;
Λήψη MY_SELECTEL_TOKEN από τον πίνακα my.selectel.ru.
Δημιουργήστε ένα σύμπλεγμα Kubernetes μεταφέροντας ένα διακριτικό λογαριασμού σε αυτό.
Λάβετε το KUBECONFIG από το δημιουργημένο σύμπλεγμα.
Εγκαταστήστε το GitLab στο Kubernetes.
Λάβετε το GitLab-token από το GitLab που δημιουργήθηκε για τον χρήστη ρίζα.
Δημιουργήστε μια δομή έργου στο GitLab χρησιμοποιώντας το GitLab-token.
Σπρώξτε τον υπάρχοντα κώδικα στο GitLab.
???
Κέρδος!
Βήμα 1. Το διακριτικό μπορεί να ληφθεί στην ενότητα Κλειδιά API.
Βήμα 2. Ετοιμάζουμε το Terraform μας για το «ψήσιμο» ενός συμπλέγματος 2 κόμβων. Εάν είστε βέβαιοι ότι έχετε αρκετούς πόρους για τα πάντα, τότε μπορείτε να ενεργοποιήσετε τις αυτόματες ποσοστώσεις:
Βήμα 8. Φέρνοντας τα αποθετήρια Git στη σωστή ιεραρχία χρησιμοποιώντας τον πάροχο Gitlab.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Δυστυχώς, ο πάροχος Terraform GitLab έχει μια αιωρούμενη έντομο. Στη συνέχεια, θα πρέπει να διαγράψετε τα έργα που βρίσκονται σε διένεξη με μη αυτόματο τρόπο, προκειμένου να επιδιορθωθεί το tf.state. Στη συνέχεια, εκτελέστε ξανά την εντολή "$ make all".
Βήμα 9. Μεταφέρουμε τοπικά αποθετήρια στον διακομιστή.
Έχουμε πετύχει ότι μπορούμε να διαχειριστούμε τα πάντα δηλωτικά από την τοπική μας μηχανή. Τώρα θέλω να μεταφέρω όλες αυτές τις εργασίες στο CI και απλά να πατήσω κουμπιά. Για να γίνει αυτό, πρέπει να μεταφέρουμε τις τοπικές πολιτείες μας (κατάσταση Terraform) στο CI. Πώς να το κάνετε αυτό είναι στο επόμενο μέρος.
Εγγραφείτε στο blogγια να μην χάσετε την κυκλοφορία νέων άρθρων!