Mana yang lebih dulu, ayam atau telur? Awal yang aneh untuk artikel tentang Infrastruktur sebagai Kode, bukan?
Apa itu telur?
Seringkali, Infrastruktur-sebagai-Kode (IaC) adalah cara deklaratif untuk merepresentasikan infrastruktur. Di dalamnya kami menjelaskan keadaan yang ingin kami capai, mulai dari bagian perangkat keras dan diakhiri dengan konfigurasi perangkat lunak. Oleh karena itu IaC digunakan untuk:
Penyediaan Sumber Daya. Ini adalah VM, S3, VPC, dll. Alat dasar untuk bekerja: Terraform ΠΈ Formasi Awan.
Kode apa pun ada di repositori git. Dan cepat atau lambat pemimpin tim akan memutuskan bahwa mereka perlu ditertibkan. Dan dia akan melakukan refaktorisasi. Dan itu akan menciptakan beberapa struktur. Dan dia akan melihat bahwa ini bagus.
Bagus juga kalau sudah ada GitLab ΠΈ GitHub-penyedia untuk Terraform (dan ini adalah Konfigurasi Perangkat Lunak). Dengan bantuan mereka, Anda dapat mengelola keseluruhan proyek: anggota tim, CI/CD, git-flow, dll.
Darimana telur itu berasal?
Jadi kita secara bertahap mendekati pertanyaan utama.
Pertama-tama, Anda harus memulai dengan repositori yang menjelaskan struktur repositori lain, termasuk Anda sendiri. Dan tentu saja, sebagai bagian dari GitOps, Anda perlu menambahkan CI agar perubahan dapat dijalankan secara otomatis.
Jika Git belum dibuat?
Bagaimana cara menyimpannya di Git?
Bagaimana cara menginstal CI?
Jika kita juga menerapkan Gitlab menggunakan IaC, dan bahkan di Kubernetes?
Dan GitLab Runner juga ada di Kubernetes?
Bagaimana dengan Kubernetes di penyedia cloud?
Mana yang lebih dulu: GitLab tempat saya mengunggah kode, atau kode yang menjelaskan jenis GitLab yang saya perlukan?
Dapatkan MY_SELECTEL_TOKEN dari panel saya.selectel.ru.
Buat cluster Kubernetes dengan mentransfer token akun ke cluster tersebut.
Dapatkan KUBECONFIG dari cluster yang dibuat.
Instal GitLab di Kubernetes.
Dapatkan token GitLab dari GitLab yang dibuat untuk pengguna akar.
Buat struktur proyek di GitLab menggunakan GitLab-token.
Dorong kode yang ada ke GitLab.
??
Profit!
Langkah 1. Token dapat diperoleh di bagian tersebut Kunci API.
Langkah 2. Kami menyiapkan Terraform untuk "memanggang" sekelompok 2 node. Jika Anda yakin memiliki sumber daya yang cukup untuk semuanya, Anda dapat mengaktifkan kuota otomatis:
Langkah 8. Membawa repositori Git ke hierarki yang benar menggunakan Penyedia Gitlab.
cd ../internal/gitlab/hierarchy && terraform apply -input=false -auto-approve planfile
Sayangnya, penyedia terraform GitLab memiliki floating serangga. Kemudian Anda harus menghapus proyek yang konflik secara manual agar tf.state dapat diperbaiki. Kemudian jalankan kembali perintah `$make all`
Langkah 9. Kami mentransfer repositori lokal ke server.
Kami telah mencapai bahwa kami dapat mengelola semuanya secara deklaratif dari mesin lokal kami. Sekarang saya ingin mentransfer semua tugas ini ke CI dan cukup tekan tombol. Untuk melakukan ini, kita perlu mentransfer negara bagian lokal kita (negara bagian Terraform) ke CI. Cara melakukannya ada di bagian selanjutnya.
Berlangganan kami blogagar tidak ketinggalan rilis artikel baru!