
Artikel ini dikhususkan untuk pengembangan grafik Helm untuk Kubernetes menggunakan solusi yang sudah jadi dari repositori grafik. Dengan pendekatan ini, pengguna menerapkan resep komunitas atau resepnya sendiri, memastikan pembaruan tepat waktu dari komponen standar semua proyeknya dan kenyamanan mempertahankan solusi secara umum.
Fitur nyaman seperti itu sekarang dibangun ke dalam utilitas GitOps werf kami, yang seharusnya menyederhanakan seluruh proses pengoperasian infrastruktur untuk aplikasi yang dirakit dan diluncurkan ke Kubernetes.
Helm built-in
Mungkin keberhasilan utama Helm - "manajer paket untuk Kubernetes" - dikaitkan tidak banyak dengan fungsinya seperti dengan
repositori grafik resmi
dan dukungan untuk repositori pada umumnya. Pengaturan resep dan bagan disertai oleh komunitas besar. Spesialis mendukung solusi terkini yang dibutuhkan oleh pengguna akhir. Setiap bagan dari repositori resmi distandarisasi dan didokumentasikan dengan baik.
Dalam kasus sepele, pengguna bahkan tidak perlu membuat bagan untuk meluncurkan aplikasi: ia hanya menemukan solusi yang sudah jadi, membaca dokumentasi, menyiapkan pengaturan dan menggunakan bagan resmi.
Untuk waktu yang lama, kami telah secara aktif menggunakan Helm di dalam werf untuk meluncurkan infrastruktur aplikasi dan sekarang kami melangkah lebih jauh. Dimulai dengan versi
v1.0.4-alpha.10 ,
perintah untuk bekerja dengan dependensi dan repositori bagan telah ditambahkan ke werf untuk sepenuhnya meninggalkan klien Helm.
Perintah utama untuk ini:
werf helm repo
add Add a chart repository fetch Download a chart from a repository and (optionally) unpack it in local directory init Init default chart repositories configuration list List chart repositories remove Remove a chart repository search Search for a keyword in charts update Update information of available charts locally from chart repositories
werf helm dependency
build Rebuild the charts/ directory based on the requirements.lock file list List the dependencies update Update charts/ based on the contents of requirements.yaml
Plus, dukungan untuk
referensi grafik telah ditambahkan ke perintah
werf helm deploy-chart
.
Dan di sini adalah bagaimana semua sihir ini terlihat beraksi - lebih tepatnya, di sini kami menunjukkan perbandingan peluncuran grafik yang sama di werf (kiri) dan di Helm (kanan):

Lebih banyak latihan
Kembali ke kenyamanan menggunakan solusi siap pakai untuk meluncurkan seluruh aplikasi -
contoh yang biasa dengan WordPress . Meluncurkan bagan Helm-nya ke kluster Kubernetes menggunakan werf mungkin terlihat seperti ini:
$ cat << EOF > values.yaml wordpressBlogName: flant wordpressUsername: admin wordpressPassword: password mariadb: mariadbRootPassword: password EOF $ werf helm deploy-chart --values values.yaml stable/wordpress my-web-app
→
Demonstrasi dalam asciicinema .
Karena repositori berisi
banyak solusi , Anda dapat
membangun aplikasi Anda sendiri dari mereka sebagai kubus, di mana kubus akan menjadi berbagai bagan Helm di mana seluruh sistem bergantung. Kemungkinan besar, Anda hanya perlu mengkonfigurasi komponen dengan benar sesuai kebutuhan Anda.
Misalnya, aplikasi web memerlukan antrian, cache, dan penyimpanan data. Bagaimana kita menyebarkan komponen-komponen ini melalui werf?
Untuk memulai - mari percepat pencarian untuk semua yang Anda butuhkan menggunakan CLI:
$ werf helm repo search queue NAME CHART VERSION APP VERSION DESCRIPTION stable/rabbitmq 6.4.1 3.7.17 Open source message broker software that implements the A... stable/rabbitmq-ha 1.31.0 3.7.15 Highly available RabbitMQ cluster, the open source messag...
Dengan analogi, kita akan menemukan komponen yang tersisa untuk semua repositori bagan terdaftar (daftar repositori yang digunakan dapat dilihat dengan menjalankan perintah
werf helm repo list
).
Setelah semuanya ditemukan, tinggal menambahkannya ke bagan. Ada beberapa cara untuk melakukan ini: tambahkan diagram komponen ke direktori grafik atau buat file
requirements.yaml
dan jelaskan dependensinya, lalu berinteraksi dengan mereka menggunakan perintah khusus
werf helm dependency build|list|update
.
Ilustrasi jalur kedua:
$ cat << EOF > .helm/requirements.yaml dependencies: - name: mysql version: 0.3.4 repository: "@stable" - name: redis version: 1.1.11 repository: "@stable" - name: rabbitmq version: 0.6.16 repository: "@stable" EOF $ werf helm dependency build $ werf deploy --env test
→
Demonstrasi dalam asciicinema .
Selama proses peluncuran, werf
akan membuat semua dependensi dan melacaknya bersama dengan sumber daya lainnya - tidak diperlukan tindakan tambahan.
Akibatnya, dengan mempertimbangkan keahlian komunitas yang berpengalaman, Anda secara signifikan menghemat waktu dalam pengembangan dan pemeliharaan grafik. Namun, tidak ada yang membatasi Anda untuk menggunakan bagan publik: Anda dapat menggelar bagan Anda dengan kesuksesan yang sama, konfigurasi yang disiapkan dengan mempertimbangkan spesifikasi yang diperlukan.
Dokumentasi tentang perintah repositori dan dependensi di werf disajikan di
sini . Anda mungkin juga tertarik membaca dokumentasi untuk detail lebih lanjut tentang
peluncuran ke werf dan
perbedaan utama dari Helm .
Kesimpulan
Tidak adanya fitur yang penting bagi kami dalam solusi Open Source yang ada memaksa kami untuk membuat kapabilitas, binding, dan integrasi yang sesuai. Proyek werf dibuat dan didukung, pertama-tama, untuk menyelesaikan tugas sehari-hari para insinyur DevOps kami.
Sebagai contoh, kami telah bekerja untuk waktu yang lama (tahun kedua!) Sehingga
proposal kami untuk melacak sumber daya di Helm diterima sebagai mode alternatif di basis kode utama proyek (hulu). Masyarakat menerima dan mendukung gagasan itu, seperti banyak yang membutuhkan kesempatan ini. Namun, kemajuan ke arah ini dimulai di
Helm 3 dan baru sekarang ...
Hingga saat ini, penerapan ide ini di Helm telah diblokir oleh pengembang. Namun, selama ini kami telah mengembangkan fungsi yang sesuai untuk melacak sumber daya di pustaka Open Source yang terpisah -
kubedog - dan kami sudah menggunakannya di werf. Dan dilihat dari aktivitas di GitHub, perpustakaan menemukan minat di antara pengguna Kubernet / Helm lainnya, yang sangat menyenangkan.
Anda dapat mendukung ide kami (dan implementasi) dengan menempatkan bintang pada proyek kubedog di GitHub dan / atau acungan jempol dalam
masalah asli di Helm. Terima kasih
PS
Baca juga di blog kami: