Apa yang didahulukan - ayam atau telur? Permulaan yang agak pelik untuk artikel tentang Infrastructure-as-Code, bukan?
Apa itu telur?
Selalunya, Infrastructure-as-Code (IaC) ialah cara deklaratif untuk mewakili infrastruktur. Di dalamnya kami menerangkan keadaan yang ingin kami capai, bermula dari bahagian perkakasan dan berakhir dengan konfigurasi perisian. Oleh itu IaC digunakan untuk:
Peruntukan Sumber. Ini ialah VM, S3, VPC, dsb. Alat asas untuk kerja: Terraform ΠΈ CloudFormation.
Sebarang kod berada dalam repositori git. Dan lambat laun ketua pasukan akan memutuskan bahawa mereka perlu diatur. Dan dia akan refactor. Dan ia akan mewujudkan beberapa struktur. Dan dia akan melihat bahawa ini adalah baik.
Bagus juga ia sudah wujud GitLab ΠΈ GitHub-penyedia untuk Terraform (dan ini ialah Konfigurasi Perisian). Dengan bantuan mereka, anda boleh menguruskan keseluruhan projek: ahli pasukan, CI/CD, git-flow, dsb.
Dari mana datangnya telur itu?
Jadi kita secara beransur-ansur menghampiri soalan utama.
Pertama sekali, anda perlu bermula dengan repositori yang menerangkan struktur repositori lain, termasuk anda sendiri. Dan sudah tentu, sebagai sebahagian daripada GitOps, anda perlu menambah CI supaya perubahan dilaksanakan secara automatik.
Jika Git belum dibuat lagi?
Bagaimana untuk menyimpannya dalam Git?
Bagaimana untuk memasang CI?
Jika kita juga menggunakan Gitlab menggunakan IaC, dan juga dalam Kubernetes?
Dan GitLab Runner juga dalam Kubernetes?
Bagaimana pula dengan Kubernetes dalam pembekal awan?
Apa yang datang dahulu: GitLab tempat saya akan memuat naik kod saya, atau kod yang menerangkan jenis GitLab yang saya perlukan?
Dapatkan MY_SELECTEL_TOKEN daripada panel my.selectel.ru.
Buat gugusan Kubernetes dengan memindahkan token akaun kepadanya.
Dapatkan KUBECONFIG daripada kluster yang dibuat.
Pasang GitLab pada Kubernetes.
Dapatkan GitLab-token daripada GitLab yang dibuat untuk pengguna akar.
Buat struktur projek dalam GitLab menggunakan GitLab-token.
Tolak kod sedia ada ke GitLab.
?
Keuntungan!
Langkah 1. Token boleh didapati di bahagian Kunci API.
Langkah 2. Kami menyediakan Terraform kami untuk "membakar" kelompok 2 nod. Jika anda pasti bahawa anda mempunyai sumber yang mencukupi untuk segala-galanya, maka anda boleh mendayakan kuota automatik:
Langkah 8. Membawa repositori Git ke hierarki yang betul menggunakan Penyedia Gitlab.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Malangnya, penyedia GitLab terraform mempunyai terapung pepijat. Kemudian anda perlu memadamkan projek yang bercanggah secara manual agar tf.state dapat diperbaiki. Kemudian jalankan semula arahan `$make all`
Langkah 9. Kami memindahkan repositori tempatan ke pelayan.
Kami telah mencapai bahawa kami boleh menguruskan segala-galanya secara deklaratif daripada mesin tempatan kami. Sekarang saya mahu memindahkan semua tugas ini ke CI dan hanya tekan butang. Untuk melakukan ini, kami perlu memindahkan negeri tempatan kami (negeri Terraform) kepada CI. Bagaimana untuk melakukan ini adalah di bahagian seterusnya.
Langgan kami blogsupaya tidak terlepas keluaran artikel baru!