Ing wektu sing beda-beda, kita nyoba macem-macem solusi kanggo masalah kasebut. Lan aku bakal miwiti karo workarounds akumulasi utawa mung "kruk".
1. Kruk
Umume IDE duwe kemampuan kanggo ngowahi kode langsung ing server nggunakake FTP/SFTP. Path iki cetha banget lan kita langsung mutusake kanggo nggunakake. Inti saka iku ing ngisor iki:
Ing polong lingkungan pangembangan (dev / review), wadhah tambahan diluncurake kanthi akses SSH lan nerusake kunci SSH umum pangembang sing bakal nindakake / nyebarake aplikasi kasebut.
Ing tataran init (ing wadhah prepare-app) transfer kode menyang emptyDirduwe akses menyang kode saka wadhah aplikasi lan server SSH.
Kanggo luwih ngerti implementasine technical saka rencana kuwi, aku bakal nyedhiyani pecahan saka konfigurasi YAML melu ing Kubernetes.
Konfigurasi
1.1. nilai.yaml
ssh_pub_key:
vasya.pupkin: <ssh public key in base64>
iku vasya.pupkin yaiku nilai variabel ${GITLAB_USER_LOGIN}.
Voila: pangembang sing ngluncurake penyebaran bisa nyambung kanthi jeneng layanan (carane kanthi aman menehi akses menyang kluster, kita wis ngomong) saka desktop liwat SFTP lan ngowahi kode kasebut tanpa ngenteni dikirim menyang kluster.
Iki minangka solusi sing bisa digunakake, nanging saka sudut pandang implementasine, ana kekurangan sing jelas:
perlu kanggo nyaring grafik Helm, kang ndadekake angel diwaca ing mangsa;
mung bisa digunakake dening wong sing ngirim layanan;
sampeyan kudu ngelingi banjur nyinkronake karo direktori lokal karo kode lan tundhuk menyang Git.
2. Telepresence
Proyek kasebut telepresence wis dikenal kanggo wektu sing cukup suwe, nanging kita, kaya sing dikandhakake, "ora bisa nyoba kanthi serius ing praktik." Nanging, panjaluk wis rampung lan saiki kita seneng nuduhake pengalaman, sing bisa migunani kanggo para pamaca blog kita - utamane amarga durung ana bahan liyane babagan Telepresence ing hub.
Ing cendhak, kabeh dadi ora medeni. Kita nyelehake kabeh tumindak sing mbutuhake eksekusi ing bagean pangembang ing file teks grafik Helm sing diarani NOTES.txt. Dadi, sawise nggunakake layanan kasebut menyang Kubernetes, pangembang ndeleng instruksi kanggo ngluncurake lingkungan dev lokal ing log proyek GitLab:
Kita ora bakal manggon kanthi rinci babagan langkah-langkah sing diterangake ing pandhuan iki ... kajaba sing pungkasan. Apa sing kedadeyan sajrone peluncuran Telepresence?
Nggarap Telepresence
Ing wiwitan (nggunakake printah pungkasan sing ditemtokake ing pandhuan ing ndhuwur), kita nyetel:
namespace ing ngendi microservice lagi mlaku;
jeneng penyebaran lan wadhah sing arep kita tembus.
Argumentasi sing isih ana opsional. Yen layanan kita sesambungan karo lan kanggo API Kubernetes ServiceAccount digawe, kita kudu masang sertifikat/token ing desktop kita. Kanggo nindakake iki, gunakake pilihan kasebut --mount=true (utawa --mount=/dst_path), sing bakal masang root (/) saka wadhah Kubernetes menyang desktop kita. Sawise iki, kita bisa (gumantung saka OS lan carane aplikasi dibukak) nggunakake "tombol" saka kluster.
Pisanan, ayo goleki opsi paling universal kanggo mbukak aplikasi - ing wadhah Docker. Kanggo nindakake iki, kita bakal nggunakake tombol --docker-run lan pasang direktori kanthi kode menyang wadhah: -v `pwd`:/app
Elinga yen iki nganggep mlaku saka direktori proyek. Kode aplikasi bakal dipasang ing direktori /app ing wadhah.
Sabanjure: -v /tmp/app/var/run/secrets:/var/run/secrets - kanggo masang direktori karo sertifikat / token menyang wadhah.
Opsi iki pungkasane diterusake karo gambar ing ngendi aplikasi bakal mbukak. NB: Nalika mbangun gambar, sampeyan kudu nemtokake CMD utawa ENTRYPOINT!
Apa persis sing bakal kelakon sabanjure?
Ing Kubernetes, kanggo Deployment sing ditemtokake, jumlah replika bakal diganti dadi 0. Nanging, Deployment anyar bakal diluncurake - kanthi wadhah pengganti. backend.
2 kontainer bakal diluncurake ing desktop: sing pertama karo Telepresence (bakal njaluk proxy saka / menyang Kubernetes), sing nomer loro karo aplikasi sing dikembangake.
Yen kita eksekusi menyang wadhah kanthi aplikasi kasebut, kabeh variabel ENV sing ditransfer dening Helm sajrone panyebaran bakal kasedhiya kanggo kita, lan kabeh layanan uga kasedhiya. Kabeh sing isih ana yaiku ngowahi kode ing IDE favorit lan nikmati asile.
Ing pungkasan karya, sampeyan mung kudu nutup terminal sing Telepresence mlaku (mungkasi sesi karo Ctrl + C) - kontaner Docker bakal mandheg ing desktop, lan ing Kubernetes kabeh bakal bali menyang negara wiwitan. Kabeh sing isih ana yaiku tundhuk, ngetokake MR lan transfer menyang review / gabung / ... (gumantung saka alur kerja sampeyan).
Yen kita ora pengin mbukak aplikasi ing wadhah Docker - contone, kita ora berkembang ing PHP, nanging ing Go, lan isih nggawe lokal - ngluncurake Telepresence bakal luwih gampang:
Sawise ngetokake Telepresence tanpa pilihan --docker-run kabeh variabel lingkungan bakal kasedhiya ing terminal saiki, supaya aplikasi kudu dibukak ing.
NB: Nalika nggunakake, contone, PHP, sampeyan kudu elinga mateni macem-macem op_cache, apc lan akselerator liyane kanggo pembangunan - yen nyunting kode ora bakal mimpin kanggo asil sing dipengini.
Hasil
Pangembangan lokal karo Kubernetes minangka masalah sing solusine saya tambah akeh ing proporsi panyebaran platform iki. Nampa panjalukan sing cocog saka pangembang (saka klien kita), kita wiwit ngrampungake kanthi cara sing kasedhiya, sing, nanging, ora mbuktekake awake dhewe sajrone jangka panjang. Begjanipun, iki wis dadi ketok ora mung saiki lan ora mung kanggo kita, supaya cara sing luwih cocok wis muncul ing donya, lan Telepresence iku sing paling misuwur (ing cara, ana uga skaffold saka Google). Pengalaman kita nggunakake durung apik banget, nanging wis menehi alesan kanggo menehi rekomendasi menyang "rekan-rekan ing toko" - coba!