GNU/Linux >> Belajar Linux >  >> Cent OS

Helm vs Kustomize:Perbandingan Head-to-Head

Pendahuluan

Kubernetes secara native menawarkan alat inti yang diperlukan untuk mengelola penerapan aplikasi. Namun, meskipun menerapkan manifes YAML mentah adalah proses yang mudah, pengembangan di lingkungan layanan mikro dengan cepat lepas kendali dengan jumlah penerapan yang diperlukan untuk mendukung keseluruhan sistem.

Artikel ini membandingkan dua alat populer yang bertujuan untuk menyederhanakan manajemen penerapan aplikasi - Helm dan Kustomize.

Helm:Fitur Utama

Helm adalah manajer paket untuk Kubernetes. Ini membantu dalam menginstal dan mengelola aplikasi Kubernetes dengan menggunakan diagram kemudi, paket berisi file YAML yang dimodifikasi menggunakan bahasa template Go, dan fungsi template dari perpustakaan Sprig.

Dengan menggunakan template dan nilai dinamis, Helm menawarkan kemampuan untuk menyempurnakan konfigurasi di seluruh siklus pengembangan perangkat lunak.

Dengan diperkenalkannya Helm 3, Helm berhenti bergantung pada Tiller untuk pembuatan file konfigurasi dinamis. Ini menghilangkan salah satu masalah keamanan utama Helm 2 – izin luas yang diberikan secara default untuk semua orang yang memiliki akses ke Tiller. Helm kini memiliki komponen manajemen akses istimewa dengan Kontrol Akses Berbasis Peran (RBAC) dan Definisi Sumber Daya Kustom (CRD).

Properti lain yang berguna dari templating Helm adalah enkapsulasi. Definisi YAML dari objek Kubernetes, seperti Deployment, Service, ConfigMap, atau Kubernetes Secret, dapat dienkapsulasi dalam satu template. Properti ini berguna untuk konfigurasi waktu penerapan.

Bagan kemudi sederhana terdiri dari:

  • A Bagan.yaml file yang mendeklarasikan bagan.
  • Sebuah nilai.yaml file yang berisi parameter bagan yang akan digunakan dengan template.
  • Direktori template yang berisi file template untuk membuat konten bagan.

File template memiliki struktur file YAML, tetapi juga berisi variabel template yang diganti pada penerapan dengan nilai yang disediakan di values.yaml berkas.

Ini adalah isi dari deployment.yaml yang khas terlihat seperti:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Values.test }}
  labels:
    app: {{ .Values.test }}
spec:
  selector:
    matchLabels:
      app: {{ .Values.test }}
  template:
    metadata:
      labels:
        app: {{ .Values.test }}
        tier: web
    spec:
      containers:
      - name: {{ .Values.test }}
        image: {{ .Values.test }}     
        ports:
        - containerPort: 8080

Pada contoh di atas, Helm melihat ke values.yaml file untuk nilai test variabel. values.yaml yang relevan file berisi definisi variabel:

test: default

Berdasarkan values.yaml definisi, Helm membuat deployment.yaml berikut ini berkas:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: default
  labels:
    app: default
spec:
  selector:
    matchLabels:
      app: default
  template:
    metadata:
      labels:
        app: default
        tier: web
    spec:
      containers:
      - name: default
        image: default     
        ports:
        - containerPort: 8080

Helm memiliki kemampuan untuk mengganti nilai dalam values.yaml menggunakan --set tandai saat mengeluarkan perintah build di CLI.

Ini juga termasuk helm lint perintah yang memeriksa bagan untuk masalah, memverifikasi bahwa itu telah dirancang sesuai dengan standar.

Sesuaikan:Fitur Utama

Kustomize adalah alat yang menggunakan layer dan patch sebagai ganti template untuk menyesuaikan objek Kubernetes. Ini memperkenalkan kustomisasi.yaml file manifes, tempat pengguna menyimpan konfigurasi khusus penerapan.

Alat ini dibangun ke dalam kubectl pada versi 1.14, yang berarti sekarang alat ini asli di Kubernetes. Namun, Anda juga dapat menginstalnya secara mandiri.

Dengan Kustomize, pengguna dapat mengelola sejumlah konfigurasi Kubernetes, masing-masing dengan kustomisasi yang berbeda, menggunakan pendekatan deklaratif. Ini memungkinkan pengembang untuk menentukan beberapa versi aplikasi dan mengelolanya di sub-direktori. Direktori dasar berisi konfigurasi umum, sedangkan sub-direktori berisi patch khusus versi.

Setiap direktori berisi kustomization.yaml file yang menentukan perubahan apa yang perlu dilakukan pada konfigurasi dan sumber daya mana yang harus digunakan. Sebagai contoh, berikut kustomization.yaml file menambahkan label umum app:test ke keduanya deployment.yaml dan service.yaml di direktori dasar:

commonLabels:  
  app: my-wordpress
resources:
- deployment.yaml
- service.yaml

Perubahan kemudian diterapkan dengan mengetikkan perintah berikut di baris perintah:

kubectl apply -k base

Perintahnya berbeda jika Kustomize digunakan sebagai alat yang berdiri sendiri:

kustomize build base | kubectl apply -f -

Helm dan Kubernetes:Pro dan Kontra

Pro

  • Helm menawarkan banyak fitur yang melampaui manajemen konfigurasi penerapan aplikasi sederhana, seperti pengemasan, kait, dan rollback.
  • Ini menyederhanakan penginstalan aplikasi dengan memungkinkan pengguna menyetel default yang dapat mereka konfigurasikan lebih lanjut dengan nilai jika perlu.
  • Helm dikenal oleh para pengembang, memiliki banyak pengguna dan dukungan online yang hebat.
  • Fungsi template Helm memungkinkan untuk memperkenalkan conditional dan loop, mendefinisikan helper, dan mengakses perpustakaan fungsi Sprig.
  • Aplikasi yang paling umum digunakan memiliki grafik Helm yang tersedia secara online, yang menghemat waktu dan meningkatkan produktivitas.

Kontra

  • Helm menambahkan lebih banyak lapisan abstraksi dan memiliki kurva belajar yang curam.
  • Ini membatasi penyesuaian aplikasi ke opsi konfigurasi yang sudah ada sebelumnya.
  • Templat rawan kesalahan, terutama dalam hal penyelarasan YAML yang tepat.
  • Helm tidak didukung secara native di Kubernetes, yang menciptakan ketergantungan eksternal.
  • Seringkali sangat penting. Helm memasukkan nilai ke dalam template saat runtime, jadi jika template berubah, sistem mungkin berbeda dari yang diharapkan pengguna.
  • Bagan masih memerlukan penyesuaian waktu proses, sehingga sulit dikelola saat mengimplementasikan saluran CI/CD.
  • Template yang kurang dapat dibaca pasti menyebabkan berkurangnya kemampuan penyesuaian dari waktu ke waktu.
  • Ini mengalami masalah keamanan yang berasal dari kurangnya visibilitas dan transparansi selama pemasangan aplikasi.

Kustomize dan Kubernetes:Pro dan Kontra

Pro

  • Kustomize mudah digunakan.
  • Ini bersifat deklaratif, selaras dengan filosofi Kubernetes.
  • Kustomize mendukung model berbasis warisan, yang membuatnya berskala lebih baik daripada Helm.
  • Menggunakan versi asli yang terintegrasi ke dalam kubectl menghilangkan ketergantungan eksternal.
  • Ini membuat lebih mudah untuk menggunakan aplikasi siap pakai.
  • Ini hanya menggunakan file YAML biasa.

Kontra

  • Kustomize tidak menawarkan banyak fitur.
  • Ini tidak dirancang untuk mengikuti prinsip KERING (Jangan Ulangi Diri Sendiri).
  • Pengguna harus mendeklarasikan resource dan patch secara manual di kustomization.yaml , dan file harus diperbarui secara manual setiap kali file baru ditambahkan.
  • Versi asli yang disematkan di kubectl jauh lebih tua daripada versi mandiri saat ini.
  • Dukungan online untuk Kustomize sulit ditemukan.

Kustomize vs Helm:Tabel Perbandingan

Fitur Helm Kustomisasi
Templat Ya Tidak
Hamparan Tidak Ya
Kemasan Ya Tidak
Kait validasi Ya Tidak
Rollback Ya Tidak
Integrasi K8 asli Tidak Ya
Sifat deklaratif Sebagian besar penting Ya
Visibilitas dan transparansi Lemah Kuat

Bagaimana Memilih?

Untuk memutuskan apakah akan memilih Helm atau Kustomize, pertimbangkan hal berikut:

  • Pilih Kustomize jika Anda berencana untuk menulis semua konfigurasi sendiri, dan Anda memiliki pemahaman yang baik tentang cara kerja YAML. Meskipun Kustomize memungkinkan Anda untuk melakukan kustomisasi yang rumit dengan cepat, Anda harus dapat memvisualisasikan bagaimana patch dan layer saling cocok.
  • Di sisi lain, jika Anda ingin pengembang Anda dapat menambahkan aplikasi dan layanan baru dengan cara yang aman dan mudah, membuat diagram Helm adalah solusi yang lebih baik.
  • Alasan lain untuk memilih Helm adalah kebutuhan untuk mengurangi jumlah waktu yang Anda habiskan dengan file YAML. Template helm memiliki argumen yang memudahkan untuk memahami cara kerja layanan tanpa mempelajari YAML terlalu dalam.

Mengingat bahwa Helm dan Kustomize menawarkan manfaat khusus alat dan saling melengkapi dengan baik, tindakan terbaik adalah menggunakan kedua alat secara berdampingan. Helm sangat berguna untuk mengemas, berbagi, dan menginstal aplikasi yang terdefinisi dengan baik, sementara Kustomize berfungsi paling baik untuk modifikasi menit terakhir dari aplikasi Kubernetes yang ada.


Cent OS
  1. Memahami YAML untuk Ansible

  2. YAML untuk pemula

  3. Perbandingan tanggal di Bash

  1. PostgreSQL Vs MySQL:Perbandingan Mendetail

  2. Hadoop vs Spark – Perbandingan Mendetail

  3. Perbandingan Server Media

  1. Virtualbox vs VMware:Perbandingan Head-to-Head

  2. Cara Membuat Bagan Helm

  3. Benang vs NPM:Perbandingan Komprehensif