banner large

Bagaimana Memulai Menulis Diagram Helm untuk Aplikasi Kubernetes Anda

Comment
X
Share

Grafik yang menunjukkan logo Helm dengan latar belakang ungu

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 dapat Anda kelola dengan Helm sebagai satu kesatuan.

Apa itu Bagan Helm?

Diagram helm menerapkan model manajemen paket yang biasa ditemui dalam sistem operasi dan bahasa pemrograman ke aplikasi yang berjalan di cluster Kubernetes. Bagan Helm dapat memiliki dependensi dan turunan; semua komponen ini secara otomatis dimulai di cluster Anda saat Anda memasang bagan tingkat atas.

Bagan 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 bagus yang diketahui jika Anda mengalami masalah di cluster Anda.

Bagan helm juga menggabungkan kemampuan templating untuk memasok nilai dinamis pada waktu pemasangan. Anda dapat mengonfigurasi aplikasi baru tanpa mengedit file manifesnya secara langsung, menggunakan variabel yang disediakan oleh pengembang bagan.

Memasang 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 . Anda PATH.

Helm’s juga hadir dalam repositori paket distribusi Linux paling populer. Anda dapat menemukannya di Homebrew untuk macOS dan Chocolatey dan Scoop untuk Windows juga.

Setelah instalasi selesai, jalankan helm version untuk memeriksa semuanya berfungsi:

$ helm version  --template="Version: {{.Version}}"
Version: v3.8.1

Perintah 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 standar KUBECONFIG variabel lingkungan atau --kubeconfig mekanisme bendera.

Membuat Bagan Helm

Sekarang Anda dapat mulai membuat bagan Helm untuk aplikasi Anda. Menggunakan helm create perintah untuk membuat perancah bagan baru di direktori kerja Anda:

$ helm create my-app-chart

Konten grafik akan disimpan di dalam my-app-chart direktori. Mari kita periksa apa isinya:

$ ls my-app-chart
Chart.yaml  charts  templates   values.yaml

Ada dua file tingkat atas dan dua sub-direktori tambahan. Berikut kegunaan setiap sumber daya:

  • Chart.yaml – Manifes bagan Helm Anda mendefinisikan properti metadata termasuk nama dan versinya.
  • values.yaml – File ini menyimpan nilai default untuk variabel yang dapat Anda referensikan di bagan Anda. Dimungkinkan untuk mengganti nilai yang ditetapkan di sini menggunakan tanda CLI saat Anda memasang bagan.
  • 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 values.yaml mengajukan. Kita akan melihat kemampuan ini di bawah.
  • charts – The charts direktori memegang bagan 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. Kubernetes bermanifestasi dalam templates direktori 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
# Default values for my-app-chart.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

image:
  repository: nginx
  pullPolicy: IfNotPresent
  # Overrides the image tag whose default is the chart appVersion.
  tag: ""
...

Memasang Bagan

Untuk menambahkan aplikasi ke cluster Anda, gunakan helm install memerintah:

$ helm install my-app .
NAME: foo
LAST DEPLOYED: Tue Mar 29 14:47:48 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
...

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. Itu NOTES bagian terdiri dari informasi yang disediakan oleh grafik.

Untuk menimpa values.yaml variabel, berikan satu atau lebih contoh dari --set bendera:

$ helm install my-app . --set replicaCount=3 --set image.tag=1.20

Contoh ini akan menyebarkan tiga replika wadah yang menjalankan nginx:1.20 gambar. Anda dapat memeriksanya dengan membuat daftar Pod di cluster Anda menggunakan Kubectl:

$ kubectl get pods
NAME                                   READY   STATUS    RESTARTS   AGE
my-app-my-app-chart-6d6577749c-2qbhb   1/1     Running   0          61s
my-app-my-app-chart-6d6577749c-wdmgv   1/1     Running   0          44s
my-app-my-app-chart-6d6577749c-x5wp7   1/1     Running   0          40s

Meningkatkan, 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: cannot re-use a name that is still in use

Mengulangi install perintah tidak bekerja. Untuk menerapkan perubahan pada bagan yang sudah diterapkan, gunakan upgrade perintah sebagai gantinya. Ini menciptakan “rilis” baru di dalam cluster.

$ helm upgrade my-app . --set replicaCount=5
Release "my-app" has been upgraded. Happy Helming!

Anda dapat membuat daftar semua rilis bagan yang diterapkan di kluster Anda dengan helm list:

$ helm list
NAME    NAMESPACE   REVISION    UPDATED                                 STATUS      CHART               APP VERSION
my-app  default     2           2022-03-30 15:09:34.370758719 +0100 BST deployed    my-app-chart-0.1.0  1.16.0

Detail setiap rilis mencakup namanya, berapa kali itu diterapkan, waktu pembaruan terakhirnya, dan nomor versi bagan dan aplikasi yang disediakannya.

Untuk menghapus rilis dan menghancurkan objek Kubernetes-nya, berikan namanya ke uninstall memerintah:

$ helm uninstall my-app
release "my-app" uninstalled

Menulis Bagan Anda Sendiri Dari Awal

Sekarang mari kita lihat bagaimana menulis grafik dasar dari awal. Buat direktori baru untuk bagan Anda; kami memanggil milik kami cloudsavvy-chart. Tambah sebuah Chart.yaml file di dalamnya dengan konten berikut:

apiVersion: v2
name: cloudsavvy-chart
description: An example Helm chart.
type: application
version: 0.1.0
appVersion: 1.1.0

Itu type bidang biasanya harus disetel ke application. Jenis yang didukung lainnya adalah library. Fungsionalitas paket bagan pustaka yang dapat disertakan sebagai ketergantungan bagan lain. Mereka tidak mengandung Kubernetes templates diri.

Itu version bidang mengacu pada versi dari grafik 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 atur appVersion ke nomor versi WordPress yang Anda berikan.

Selanjutnya buat values.yaml file dengan beberapa variabel sederhana:

deploymentName: cloudsavvy
image: nginx:latest
replicas: 1

Variabel-variabel ini akan direferensikan dalam template bagan Anda. Tambahkan template ini sekarang sebagai templates/deployment.yaml. Bagan dasar kami akan menyebarkan satu Pod sehingga hanya akan memiliki satu file template. Dalam situasi dunia nyata, adalah praktik yang baik untuk 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 }}
  replicas: {{ .Values.replicas }}
  template:
    metadata:
      labels:
        app: {{ .Values.deploymentName }}
    spec:
      containers:
        - name: {{ .Values.deploymentName }}
          image: {{ .Values.image }}

Deployment menggunakan nilai dari values.yaml untuk mengonfigurasi referensi gambar dan jumlah replika. Itu deploymentName variabel digunakan di seluruh sehingga setiap perubahan di masa depan dapat dilakukan di satu tempat. Bidang di values.yaml dirujuk menggunakan {{ .Values.FIELD_NAME }} sintaksis.

Sekarang gunakan Helm untuk menginstal grafik:

$ helm install cloudsavvy-app . --set replicas=3
NAME: cloudsavvy-app
LAST DEPLOYED: Tue Mar 29 15:43:21 2022
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

Itu --set bendera menimpa nilai default dari replicas itu sudah diatur values.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. Anda sekarang dapat memverifikasi bahwa tiga kontainer sedang berjalan dengan menggunakan Kubectl untuk membuat daftar Pod cluster Anda.

$ kubectl get pods
NAME                                     READY   STATUS              RESTARTS   AGE
cloudsavvy-deployment-7b975bd985-5r7dc   0/1     ContainerCreating   0          15s
cloudsavvy-deployment-7b975bd985-bpbkm   0/1     ContainerCreating   0          15s
cloudsavvy-deployment-7b975bd985-jzb5q   0/1     ContainerCreating   0          15s

Ringkasan

Bagan helm memungkinkan Anda mengemas koleksi manifes Kubernetes sebagai aplikasi lengkap yang siap digunakan. Anda dapat membuat konfigurasi template yang dapat diubah dengan mudah oleh pengguna akhir sebelum menginstal rilis ke dalam kluster.

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 membuat bagan yang lebih canggih menggunakan fungsi, saluran, dan mengontrol ekspresi aliran. Meluangkan waktu untuk mempelajari Helm membuat penerapan Kubernetes Anda lebih fleksibel, kuat, dan dapat digunakan kembali.

Leave a Reply

Your email address will not be published. Required fields are marked *