kustomize memungkinkan Anda menyesuaikan file YAML mentah, bebas templat untuk berbagai tujuan, meninggalkan YAML asli yang tidak tersentuh dan dapat digunakan sebagaimana adanya.
kustomize Target Kubernetes; Itu memahami dan dapat menambal objek API gaya Kubernetes. Ini seperti make , dalam hal apa yang dilakukannya dinyatakan dalam sebuah file, dan itu seperti sed , karena mengeluarkan teks yang diedit.
Alat ini disponsori oleh SIG-CLI (KEP).
Untuk menemukan versi kustomize yang tertanam dalam versi terbaru dari Kubectl, jalankan kubectl version :
> kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2Aliran pembuatan kustomize di v2.0.3 ditambahkan ke Kubectl v1.14. Aliran Kustomize di Kubectl tetap membeku di v2.0.3 hingga Kubectl v1.21, yang memperbaruinya ke V4.0.5. Ini akan diperbarui secara teratur ke depan, dan pembaruan tersebut akan tercermin dalam catatan rilis Kubernetes.
| Versi Kubectl | Versi kustomize |
|---|---|
| <v1.14 | n/a |
| V1.14-V1.20 | v2.0.3 |
| v1.21 | v4.0.5 |
| v1.22 | v4.2.0 |
| v1.23 | v4.4.1 |
| v1.24 | v4.5.4 |
| v1.25 | v4.5.7 |
| v1.26 | v4.5.7 |
| v1.27 | v5.0.1 |
Sebagai contoh dan panduan untuk menggunakan integrasi Kubectl, silakan lihat dokumentasi Kubernetes.
Di beberapa direktori yang berisi file sumber daya YAML Anda (penyebaran, layanan, configMaps, dll.), Buat file kustomization.
File ini harus mendeklarasikan sumber daya tersebut, dan penyesuaian apa pun untuk diterapkan pada mereka, misalnya menambahkan label umum .
base: kustomization + resources
kustomization.yaml deployment.yaml service.yaml
+---------------------------------------------+ +-------------------------------------------------------+ +-----------------------------------+
| apiVersion: kustomize.config.k8s.io/v1beta1 | | apiVersion: apps/v1 | | apiVersion: v1 |
| kind: Kustomization | | kind: Deployment | | kind: Service |
| commonLabels: | | metadata: | | metadata: |
| app: myapp | | name: myapp | | name: myapp |
| resources: | | spec: | | spec: |
| - deployment.yaml | | selector: | | selector: |
| - service.yaml | | matchLabels: | | app: myapp |
| configMapGenerator: | | app: myapp | | ports: |
| - name: myapp-map | | template: | | - port: 6060 |
| literals: | | metadata: | | targetPort: 6060 |
| - KEY=value | | labels: | +-----------------------------------+
+---------------------------------------------+ | app: myapp |
| spec: |
| containers: |
| - name: myapp |
| image: myapp |
| resources: |
| limits: |
| memory: "128Mi" |
| cpu: "500m" |
| ports: |
| - containerPort: 6060 |
+-------------------------------------------------------+
Struktur File:
~/someApp ├── deployment.yaml ├── kustomization.yaml └── service.yaml
Sumber daya di direktori ini bisa menjadi garpu konfigurasi orang lain. Jika demikian, Anda dapat dengan mudah rebase dari bahan sumber untuk menangkap perbaikan, karena Anda tidak memodifikasi sumber daya secara langsung.
Hasilkan YAML yang disesuaikan dengan:
kustomize build ~/someApp
YAML dapat secara langsung diterapkan ke cluster:
kustomize build ~/someApp | kubectl apply -f -
Kelola varian tradisional konfigurasi - seperti pengembangan , pementasan dan produksi - menggunakan overlay yang memodifikasi basis umum.
overlay: kustomization + patches
kustomization.yaml replica_count.yaml cpu_count.yaml
+-----------------------------------------------+ +-------------------------------+ +------------------------------------------+
| apiVersion: kustomize.config.k8s.io/v1beta1 | | apiVersion: apps/v1 | | apiVersion: apps/v1 |
| kind: Kustomization | | kind: Deployment | | kind: Deployment |
| commonLabels: | | metadata: | | metadata: |
| variant: prod | | name: myapp | | name: myapp |
| resources: | | spec: | | spec: |
| - ../../base | | replicas: 80 | | template: |
| patches: | +-------------------------------+ | spec: |
| - path: replica_count.yaml | | containers: |
| - path: cpu_count.yaml | | - name: myapp |
+-----------------------------------------------+ | resources: |
| limits: |
| memory: "128Mi" |
| cpu: "7000m" |
+------------------------------------------+
Struktur File:
~/someApp ├── base │ ├── deployment.yaml │ ├── kustomization.yaml │ └── service.yaml └── overlays ├── development │ ├── cpu_count.yaml │ ├── kustomization.yaml │ └── replica_count.yaml └── production ├── cpu_count.yaml ├── kustomization.yaml └── replica_count.yaml
Ambil pekerjaan dari langkah (1) di atas, pindahkan ke subdirektori someApp yang disebut base , lalu letakkan overlay di direktori saudara kandung.
Overlay hanyalah kustomisasi lain, mengacu pada pangkalan, dan merujuk pada tambalan untuk diterapkan pada pangkalan itu.
Pengaturan ini memudahkan mengelola konfigurasi Anda dengan git . Basis dapat memiliki file dari repositori hulu yang dikelola oleh orang lain. Hamparan bisa di repositori yang Anda miliki. Mengatur klon repo sebagai saudara kandung pada disk menghindari kebutuhan akan submodul git (meskipun itu berfungsi dengan baik, jika Anda adalah penggemar submodule).
Menghasilkan yaml dengan
kustomize build ~ /someApp/overlays/productionYAML dapat secara langsung diterapkan ke cluster:
kustomize build ~ /someApp/overlays/production | kubectl apply -f -
Partisipasi dalam komunitas Kubernetes diatur oleh Kode Etik Kubernetes.