Bagaimana Memulai Menulis Diagram Helm untuk Aplikasi Kubernetes Anda
Helm adalah manajer paket untuk beban kerja Kubernetes. Membuat diagram Helm untuk aplikasi Anda menyederhanakan penerapan yang dapat direproduksi ke dalam kluster Kubernetes. Pengguna dapat menginstal seluruh bagan dengan satu perintah, alih-alih menerapkan manifes komponen individual secara manual dengan Kubectl.
Dalam artikel ini, kami akan menunjukkan cara memulai Helm dengan menulis bagan untuk aplikasi sederhana. "Bagan" secara konseptual mirip dengan "paket" manifes Kubernetes yang memungkinkan Anda mengelola Helm sebagai satu kesatuan.
Apa itu Bagan Helm?
Bagan helm menerapkan model manajemen paket yang biasa ditemui dalam sistem operasi dan bahasa pemrograman ke aplikasi yang berjalan di sebuah klaster Kubernetes. Bagan Helm dapat memiliki dependensi dan turunan; semua komponen ini secara otomatis dimulai di klaster Anda saat Anda memasang bagan tingkat atas.
Charts sepenuhnya berversi menggunakan strategi rilis semantik. Sama halnya dengan modul npm atau paket OS, Anda dapat menyematkan bagan ke versi tertentu dan melacak perubahannya dari waktu ke waktu. Ini menyederhanakan rollback penerapan aplikasi ke rilis yang diketahui baik jika Anda mengalami masalah di cluster.
Helm chart Anda juga menggabungkan kemampuan templating untuk memasok nilai dinamis pada waktu penginstalan. Anda dapat mengonfigurasi aplikasi baru tanpa mengedit file manifesnya secara langsung, menggunakan variabel yang disediakan oleh pengembang bagan.
Installing Helm
Helm didistribusikan sebagai biner biasa melalui halaman Rilis GitHub proyek. Unduh distribusi yang benar untuk sistem Anda, buat itu dapat dieksekusi, dan pindahkan ke lokasi di dalam PATH Anda.
Helm juga ada dalam repositori paket distribusi Linux paling populer. Anda dapat menemukannya di Homebrew untuk macOS dan Chocolatey dan Scoop untuk Windows juga.
Setelah penginstalan selesai, jalankan versi helm untuk memeriksa semuanya berfungsi:
$ helm version --template=`Version: {{.Version}}` Version: v3. Perintah 8.1
Helm menargetkan koneksi cluster Kubernetes aktif Anda seperti yang digunakan oleh Kubectl. File dan konteks Kubeconfig yang Anda pilih akan digunakan untuk semua perintah Helm. Anda dapat mereferensikan file konfigurasi yang berbeda dengan variabel lingkungan KUBECONFIG standar atau mekanisme flag --kubeconfig.
Membuat Bagan Helm
Sekarang Anda dapat mulai membuat bagan Helm untuk aplikasi Anda. Gunakan perintah helm create untuk membuat bagan baru di direktori kerja Anda:
$ helm create my-app-chart
Konten bagan akan disimpan di dalam direktori my-app-chart. Mari kita periksa isinya:
$ ls my-app-chart Chart.yaml charts templates values.yaml
Ada dua file tingkat atas dan dua sub-direktori tambahan. Inilah kegunaan setiap sumber daya:
Chart.yaml – Manifes bagan Helm Anda menentukan properti metadata termasuk nama dan version.values.yaml – File ini menyimpan nilai default untuk variabel yang dapat Anda rujuk di bagan Anda. Anda dapat mengganti nilai yang ditetapkan di sini menggunakan flag CLI saat Anda menginstal chart.templates – Direktori template berisi manifes objek Kubernetes bagan Anda. Memasang bagan akan menerapkan semua manifes ini ke klaster Anda. Manifes YAML Kubernetes yang valid dapat ditempatkan di sini; Anda juga dapat menggunakan fungsionalitas tambahan, seperti referensi ke variabel yang ditentukan dalam file values.yaml Anda. Kami akan melihat kemampuan ini di bawah.charts – Direktori grafik menyimpan grafik Helm lain yang bergantung pada ini. Ini digunakan untuk mengonfigurasi hubungan bagan induk-anak yang kompleks. Kami tidak akan membahas fitur ini dalam artikel ini sehingga Anda dapat menghapus direktori jika Anda tidak membutuhkannya. Bagan default
Helm telah dikonfigurasi sebelumnya untuk menerapkan instance server web NGINX. Manifes Kubernetes di direktori template membuat berbagai komponen penyusun, seperti Deployment, Service, dan Ingress. Aplikasi dikonfigurasi oleh variabel yang didefinisikan dalam values.yaml; di sini Anda akan menemukan pengaturan untuk tag gambar, port layanan, dan host Ingress, antara lain:
$ cat values.yaml # Nilai default untuk bagan aplikasi-saya. # Ini adalah file berformat YAML. # Deklarasikan variabel yang akan diteruskan ke template Anda. replicaCount: 1 image: repositori: nginx pullPolicy: IfNotPresent # Mengganti tag gambar yang defaultnya adalah appVersion bagan. tag: "" ...Menginstal Bagan
Untuk menambahkan aplikasi ke cluster Anda, gunakan perintah helm install:
$ helm install my-app . NAME: foo TERAKHIR DEPLOYED: Sel 29 Mar 14:47:48 2022 NAMESPACE: default STATUS: deploy REVISION: 1 CATATAN: ...
Argumen pertama pada perintah mendefinisikan nama rilis Anda. Argumen kedua mereferensikan jalur direktori untuk memuat bagan Helm dari. Kamu dapat memakai . ketika direktori kerja Anda sudah disetel ke akar bagan Anda.
Anda akan menerima beberapa keluaran terminal yang menjelaskan rilis yang diinstal. Bagian CATATAN terdiri dari informasi yang disediakan oleh chart.
Untuk mengganti variabel values.yaml, berikan satu atau beberapa instance dari --set flag:
$ helm install my-app . --set replicaCount=3 --set image.tag=1.20
Contoh ini akan menerapkan tiga replika container yang menjalankan image nginx:1.20. Anda dapat memeriksanya dengan membuat daftar Pod di cluster Anda menggunakan Kubectl:
$ kubectl get pods NAMA STATUS SIAP MULAI KEMBALI USIA my-app-my-app-chart-6d6577749c-2qbhb 1/1 Menjalankan 0 61 detik my-app-my-app -chart-6d6577749c-wdmgv 1/1 Menjalankan 0 44s my-app-my-app-chart-6d6577749c-x5wp7 1/1 Menjalankan 0 40sMeningkatkan, Mengambil, dan Menghapus Rilis Bagan
Selanjutnya buat beberapa perubahan pada bagan atau ubah nilai variabel:
$ helm install my-app . --set replicaCount=5 Error: INSTALLATION FAILED: tidak dapat menggunakan kembali nama yang masih digunakan. Mengulangi perintah instal tidak berfungsi. Untuk menerapkan perubahan pada bagan yang sudah diterapkan, gunakan perintah pemutakhiran sebagai gantinya. Ini membuat "rilis" baru di dalam cluster.
$ helm upgrade my-app . --set replicaCount=5 Rilis "aplikasi-saya" telah ditingkatkan versinya. Selamat Helming!
Anda dapat membuat daftar semua rilis bagan yang diterapkan di cluster Anda dengan daftar helm:
$ daftar helm NAMA NAMESPACE REVISI DIPERBARUI STATUS BAGAN VERSI APLIKASI default aplikasi saya 2 2022-03-30 15:09:34.370758719 +0100 BST menerapkan my -app-chart-0.1.0 1.16.0
Detail setiap rilis mencakup namanya, berapa kali itu digunakan, waktu pembaruan terakhirnya, dan nomor versi bagan dan aplikasi yang disediakannya.
Untuk menghapus rilis dan menghancurkannya Objek Kubernetes, berikan namanya ke perintah uninstall:
$ helm uninstall my-app release "my-app" uninstalledMenulis Bagan Anda Sendiri Dari Awal
Sekarang mari kita lihat bagaimana menulis bagan dasar dari awal. Buat direktori baru untuk bagan Anda; kami menyebutnya cloudavvy-chart kami. Tambahkan file Chart.yaml di dalamnya dengan konten berikut:
apiVersion: v2 name: cloudavvy-chart description: Contoh Helm chart. type: application version: 0.1.0 appVersion: 1.1.0
Bidang jenis biasanya harus disetel ke application. Jenis lain yang didukung adalah perpustakaan. Fungsionalitas paket bagan pustaka yang dapat disertakan sebagai ketergantungan bagan lain. Mereka sendiri tidak berisi template Kubernetes.
Bidang versi mengacu pada versi bagan Anda. Anda harus menambahkan ini setiap kali Anda memodifikasi template bagan. appVersion menunjukkan versi komponen perangkat lunak utama yang disediakan bagan Anda. Ini memberi sinyal untuk memetakan pengguna apa yang akan berjalan di cluster mereka setelah mereka menginstal bagan. Sebagai contoh, jika Anda membuat bagan yang mendistribusikan WordPress, sebaiknya setel appVersion ke nomor versi WordPress yang Anda berikan.
Selanjutnya buat file values.yaml dengan beberapa variabel sederhana:
deploymentName: cloudavvy image: nginx:replika terbaru: 1
Variabel ini akan dirujuk dalam template bagan Anda. Tambahkan template ini sekarang sebagai templates/deployment.yaml. Bagan dasar kami akan menerapkan satu Pod sehingga hanya akan memiliki satu file template. Dalam situasi dunia nyata, praktik yang baik adalah membuat file manifes individual untuk setiap komponen aplikasi Anda.
apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Values.deploymentName }}-deployment spec: selector: matchLabels: app: {{ .Values.deploymentName }} replika: {{ .Values.replicas }} template: metadata: labels: app: {{ .Values.deploymentName }} spesifikasi: container: - name: {{ .Values.deploymentName } } image: {{ .Values.image }}
Deployment menggunakan nilai dari values.yaml untuk mengonfigurasi referensi gambar dan jumlah replika. Variabel deploymentName digunakan di seluruh sehingga setiap perubahan di masa mendatang dapat dilakukan di satu tempat. Kolom dalam values.yaml dirujuk menggunakan sintaks {{ .Values.FIELD_NAME }}.
Sekarang gunakan Helm untuk menginstal chart:
$ helm install cloudavvy-app . --set replicas=3 NAMA: cloudavvy-app TERAKHIR DEPLOYASI: Sel 29 Mar 15:43:21 2022 NAMESPACE: default STATUS: deploy REVISION: 1 TEST SUITE: None
Bendera --set menimpa nilai default replika yang disetel dalam nilai .yaml. Setelah penggantian diterapkan, Helm menyuntikkan nilai yang diselesaikan ke tempat yang benar di template YAML Anda. Manifes Kubernetes terakhir kemudian diterapkan ke cluster Anda. Sekarang Anda dapat memverifikasi bahwa tiga kontainer sedang berjalan dengan menggunakan Kubectl untuk membuat daftar Pods.
$ cluster Anda kubectl get pod NAMA STATUS SIAP MULAI KEMBALI USIA cloudavvy-deployment-7b975bd985-5r7dc 0/1 ContainerCreating 0 15s cloudavvy-deployment-7b975bkmd985- 1 ContainerCreating 0 15s cloudavvy-deployment-7b975bd985-jzb5q 0/1 ContainerCreating 0 15sSummary
Helm charts memungkinkan Anda mengemas koleksi manifes Kubernetes sebagai aplikasi lengkap yang siap untuk diterapkan. Anda dapat membuat konfigurasi template yang dapat diubah dengan mudah oleh pengguna akhir sebelum menginstal rilis ke dalam cluster.
Dalam panduan ini, kami telah menjelaskan dasar-dasar fungsionalitas Helm dan menunjukkan bagaimana Anda dapat membuat bagan sederhana Anda sendiri untuk aplikasi Anda. Kami hampir tidak membahas apa yang dapat dicapai Helm – setelah Anda menulis bagan, Anda dapat mendorongnya ke repositori untuk digunakan orang lain, menambahkan bagan lain sebagai dependensi, dan membangun bagan yang lebih canggih menggunakan fungsi, saluran, dan mengontrol ekspresi aliran. Meluangkan waktu untuk mempelajari Helm membuat penerapan Kubernetes Anda lebih fleksibel, andal, dan dapat digunakan kembali.
Itulah berita seputar Bagaimana Memulai Menulis Diagram Helm untuk Aplikasi Kubernetes Anda, semoga bermanfaat. Disadur dari HowToGeek.com.