Koleksi all-in-one alat untuk menjalankan serat, validasi umum, analisis kode statis, pemindaian keamanan, tes konfigurasi, audit, kustomize build, dan konfigurasi run kering untuk manifes Kubernetes YAML terstruktur. Dirancang untuk berjalan dalam proses CI (integrasi berkelanjutan) sebagai bagian dari validasi dan pengujian, terutama berguna untuk kelompok Kubernetes yang dikelola melalui Gitop.
Saya tidak dapat menemukan gambar Docker tunggal yang berisi semua alat validasi utama (di mana ada beberapa!) Untuk memvalidasi file manifes Kubernetes Yaml sebagai bagian dari proses CI/CD sebelum secara otomatis digunakan ke Kubernetes. Repo ini tidak dirancang untuk mencakup cara menggunakan alat -alat individual ini, meskipun memang mengandung beberapa contoh penggunaan dasar. Tautan di bawah ini harus membawa Anda ke dokumentasi untuk detail lebih lanjut tentang penggunaan setiap alat. Kami telah merasa berguna untuk menggunakan beberapa alat selama proses validasi dan pemindaian CI kami karena beberapa alat memeriksa aspek -aspek tertentu yang tidak dapat dilakukan oleh orang lain.
Ambil gambar terbaru dari Paket GitHub atau dari Docker Hub.
Anda dapat menjalankan gambar secara langsung di Docker, atau lihat di bawah ini untuk contoh penggunaan CI/CD.
docker run --rm -it docker.pkg.github.com/highwayoflife/kubernetes-validation-tools/image:latest /bin/bashdocker run --rm -it deck15/kubeval-tools:latest /bin/bash| Alat | Versi | Tujuan | Keterangan |
|---|---|---|---|
| Kubectl | 1.23.5 | Cli | Kubernetes Cli. Dapat digunakan dengan --dry-run=client untuk memvalidasi manifes |
| Kemudi | 3.8.1 | Cli | Helm membantu Anda mengelola aplikasi Kubernetes - mendefinisikan, menginstal, dan meningkatkan aplikasi Kubernetes sebagai grafik helm. Jalankan sebagai alat validasi, dapat dijalankan sebagai helm lint , atau helm template . |
| Yamllint | 1.26.3 | Linter | Linter dasar untuk file yaml |
| Kubeval | 0.16.1 | Validasi | Alat untuk memvalidasi manifes Kubernetes Yaml. Tidak bekerja dengan CRD. |
| Kustomize | 4.5.3 | Menyusun | Cara bebas template untuk menyesuaikan konfigurasi aplikasi. Berguna untuk memvalidasi konfigurasi kustomize. |
| Konfigurasi serat | 1.6.0 | Validasi | Validasi file konfigurasi menggunakan aturan khusus yang ditentukan dalam YAML. |
| Conftest | 0.30.0 | Tes | Utilitas untuk membantu Anda menulis tes terhadap data konfigurasi terstruktur. |
| Skor Kube | 1.14.0 | Keamanan | Alat yang melakukan analisis kode statis definisi objek Kubernetes. |
| Polaris | 5.1.0 | Validasi | Mengidentifikasi kesalahan konfigurasi penyebaran kubernetes |
| LINTER KUBE | 0.2.6 | Keamanan | Alat analisis linter dan statis yang memeriksa kubernet memanifestasikan |
| Kubeconform | 0.4.13 | Validasi | Kubernetes memanifestasikan alat validasi seperti Kubeval dengan dukungan CRD |
| Kubeaudit | 0.16.0 | Keamanan | Kluster audit atau file manifes untuk masalah keamanan |
| Datree | 1.0.15 | Kebijakan | Pastikan Kubernetes memanifestasikan dan grafik helm valid dan ikuti kebijakan Anda. |
| Kubesec | 2.11.4 | Keamanan | Analisis Risiko Keamanan untuk Sumber Daya Kubernetes |
Idealnya wadah kubernetes-validasi-tools harus digunakan dalam proses pembangunan CI untuk memvalidasi, memindai, dan mengonfigurasi dan memanifestasikan dan memanifestasikan atau memimpin grafik. Ini optimal untuk menjalankan alat -alat ini sebagai bagian dari alur kerja integrasi yang berkelanjutan Gitops.
Gunakan wadah specifier untuk menjalankan langkah di dalam wadah. Pastikan untuk menentukan berjalan sebagai lingkungan host yang sesuai untuk wadah Anda (ubuntu-latest untuk wadah Linux, windows-latest untuk wadah windows). Misalnya:
jobs :
container :
runs-on : ubuntu-latest
container : deck15/kubeval-tools:latest
steps :
- run : |
kubeconform -summary manifests.yaml
name: Run in container Contoh ini berguna jika Jenkins menjalankan agen di kluster Kubernetes: Jenkinsfile
pipeline {
agent {
kubernetes {
cloud ' build-pipeline '
defaultContainer ' validate '
inheritFrom ' jnlp '
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: validate
image: deck15/kubeval-tools:latest
command:
- cat
tty: true
"""
} // kubernetes
} // agent
stages {
steps {
container( ' validate ' ) {
sh ' kubeconform -summary manifests.yaml '
}
}
}
}pipeline {
agent {
docker { image ' deck15/kubeval-tools:latest ' }
} // agent
.. .
}.drone.yml kind : pipeline
type : docker
name : default
steps :
- name : validate
image : deck15/kubeval-tools:latest
commands :
- kubeconform -summary manifests.yaml .circleci/config.yml version : 2.0
jobs :
build :
docker :
- image : deck15/kubeval-tools:latest .gitlab-ci.yamlAnda dapat mendefinisikan gambar yang digunakan untuk semua pekerjaan, dan daftar layanan yang ingin Anda gunakan selama runtime:
default :
image : deck15/kubeval-tools:latest
validate :
script :
- kubeconform -summary manifests.yaml Kubeaudit adalah alat baris perintah dan paket GO untuk mengaudit cluster Kubernetes untuk berbagai masalah keamanan yang berbeda, seperti:
Kubeaudit memastikan Anda menggunakan wadah yang aman!
Kubeval adalah alat untuk memvalidasi file konfigurasi Kubernetes YAML atau JSON. Ia melakukannya dengan menggunakan skema yang dihasilkan dari spesifikasi Kubernet OpenAPI, dan karenanya dapat memvalidasi skema untuk beberapa versi kubernet.
KubeConForm adalah alat validasi Kubernetes yang memanifestasikan. Bangun ke dalam CI Anda untuk memvalidasi konfigurasi Kubernetes Anda!
Ini terinspirasi oleh, berisi kode dari dan dirancang untuk tetap dekat dengan Kubeval, tetapi dengan perbaikan berikut:
Memvalidasi satu file yang valid
kubeconform fixtures/valid.yaml
echo $?
0Memvalidasi satu file tidak valid, mengatur output ke JSON, dan mencetak ringkasan
kubeconform -summary -output json fixtures/invalid.yaml
{
" resources " : [
{
" filename " : " fixtures/invalid.yaml " ,
" kind " : " ReplicationController " ,
" version " : " v1 " ,
" status " : " INVALID " ,
" msg " : " Additional property templates is not allowed - Invalid type. Expected: [integer,null], given: string "
}
],
" summary " : {
" valid " : 0,
" invalid " : 1,
" errors " : 0,
" skipped " : 0
}
}
echo $?
1Lewat manifes melalui stdin
cat fixtures/valid.yaml | kubeconform -summary
Summary: 1 resource found parsing stdin - Valid: 1, Invalid: 0, Errors: 0 Skipped: 0Memvalidasi folder, meningkatkan jumlah pekerja paralel
kubeconform -summary -n 16 fixtures
fixtures/crd_schema.yaml - CustomResourceDefinition trainingjobs.sagemaker.aws.amazon.com failed validation: could not find schema for CustomResourceDefinition
fixtures/invalid.yaml - ReplicationController bob is invalid: Invalid type. Expected: [integer,null], given: string
[...]
Summary: 65 resources found in 34 files - Valid: 55, Invalid: 2, Errors: 8 Skipped: 0Conftest adalah utilitas untuk membantu Anda menulis tes terhadap data konfigurasi terstruktur. Misalnya Anda dapat menulis tes untuk konfigurasi Kubernetes Anda, atau definisi pipa Tekton, kode terraform, konfigurasi server tanpa atau data terstruktur lainnya.
Conftest bergantung pada bahasa Rego dari agen kebijakan terbuka untuk menulis pernyataan.
Yamllint adalah linter untuk file YAML.
Yamllint tidak hanya memeriksa validitas sintaks, tetapi untuk keanehan seperti pengulangan utama dan masalah kosmetik seperti panjang garis, ruang trailing, lekukan, dll.
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 membuat, dalam hal apa yang dilakukannya dinyatakan dalam sebuah file, dan itu seperti sed, karena mengeluarkan teks yang diedit. Kustomize melintasi manifes kubernetes untuk menambah, menghapus atau memperbarui opsi konfigurasi tanpa bercabang.
Kustomize sangat berguna untuk digunakan dengan alat -alat seperti ArgoCD, FluxCD, atau Spinnaker untuk memungkinkan manifes (sumber daya) bersama di beberapa kelompok atau lingkungan tanpa duplikat kode. Kustomize memungkinkan penggantian, penggabungan, dan fitur konfigurasi lainnya.
Kubectl adalah versi Kubernetes CLI dari pisau tentara Swiss, dan dapat melakukan banyak hal. Salah satunya adalah bisa melakukan validasi kering pada file YAML.
$ kubectl create --dry-run --validate -f invalid.yamlPerintah Helm untuk digunakan dalam CI untuk berbaris atau memvalidasi grafik helm.
Periksa bagan untuk masalah yang mungkin.
CATATAN:
helm lintdengan sendirinya tidak cukup untuk memvalidasi grafik helm secara memadai. Disarankan untuk menggunakanhelm lintdanhelm templatedalam kombinasi dengan salah satu alat validasi manifes lainnya. (Lihat contoh di bawah)
Perintah ini mengambil jalur ke grafik dan menjalankan serangkaian tes untuk memverifikasi bahwa bagannya terbentuk dengan baik.
Jika linter menemukan hal -hal yang akan menyebabkan bagan gagal instalasi, itu akan memancarkan pesan [ERROR] . Jika mengalami masalah yang putus dengan konvensi atau rekomendasi, itu akan memancarkan pesan [WARNING] .
helm lint PATH [flags]helm template ./path/to/chart | kubeconform -strict -ignore-missing-schemasConfig-Lint adalah alat baris perintah untuk memvalidasi file konfigurasi menggunakan aturan yang ditentukan dalam YAML. File konfigurasi dapat berupa salah satu dari beberapa format: Terraform, JSON, YAML, dengan dukungan untuk Kubernetes. Ada aturan bawaan yang disediakan untuk Terraform, dan file khusus dapat digunakan untuk format lain.
config-lint -rules example-files/rules/kubernetes.yml example-files/configKube-Score, alat yang melakukan analisis kode statis dari definisi objek Kubernetes Anda. Outputnya adalah daftar rekomendasi dari apa yang dapat Anda tingkatkan untuk membuat aplikasi Anda lebih aman dan tangguh.
Kube-Score dapat berjalan di lingkungan CI/CD Anda dan akan keluar dengan Exit Code 1 jika kesalahan kritis telah ditemukan. Level pemicu dapat diubah menjadi peringatan dengan argumen --Exit-one-on-warner.
Input ke Kube-Score harus semua aplikasi yang Anda gunakan untuk namespace yang sama untuk hasil terbaik.
helm template my-app | kube-score score -kustomize build . | kube-score score -kube-score score my-app/ * .yaml
kube-score score my-app/deployment.yaml my-app/service.yamlPolaris, Polaris menjalankan berbagai cek untuk memastikan bahwa pod dan pengontrol Kubernetes dikonfigurasi menggunakan praktik terbaik. Polaris dimasukkan sebagai alat CLI untuk menguji file YAML lokal, misalnya sebagai bagian dari proses CI/CD.
Polaris dapat dijalankan dalam beberapa mode yang berbeda:
Anda dapat menjalankan audit pada baris perintah dan melihat output sebagai JSON, YAML, atau skor mentah:
polaris audit --format yaml > report.yaml
polaris audit --format score
# 92Audit dapat berjalan melawan direktori lokal atau file YAML daripada sebuah cluster:
polaris audit --audit-path ./deploy/
# or to use STDIN
cat pod.yaml | polaris audit --audit-path -Anda juga dapat menjalankan audit pada satu sumber daya alih -alih seluruh cluster:
polaris audit --resource " nginx-ingress/Deployment.apps/v1/default-backend " Anda dapat mengintegrasikan Polaris ke dalam CI/CD untuk repositori yang mengandung infrastruktur-sebagai-kode. Misalnya, gagal jika Polaris mendeteksi masalah tingkat bahaya, atau jika skor turun di bawah 90%:
polaris audit --audit-path ./deploy/
--set-exit-code-on-danger
--set-exit-code-below-score 90Untuk opsi penggunaan lebih lanjut untuk CLI, lihat Dokter Penggunaan
Kube Linter adalah alat analisis statis yang memeriksa file Kubernetes YAML dan grafik helm untuk memastikan aplikasi yang diwakili di dalamnya mematuhi praktik terbaik. Kubelinter menerima file YAML sebagai input dan menjalankan serangkaian cek di atasnya. Jika menemukan masalah, ia melaporkannya dan mengembalikan kode keluar nol.
Datree adalah alat CLI yang dapat digunakan secara lokal atau dalam CI/CD Anda untuk memastikan Kubernetes terwujud dan grafik pimpinan mengikuti praktik terbaik serta kebijakan organisasi Anda. Muncul dengan 30 aturan yang telah teruji untuk dipilih, bersama dengan dukungan bawaan untuk validasi skema YAML dan Kubernetes.
datree test my-app/ * .yaml
datree test my-app/deployment.yamlhelm datree test < CHART_DIRECTORY > Kubesec adalah alat pemindaian keamanan untuk pod Kubernetes, penyebaran, daemonset dan statefulsets.
kubesec scan manifest.yamlKubesec mengembalikan pengembalian array JSON, dan dapat memindai beberapa dokumen YAML dalam satu file input.
[
{
"object" : " Pod/security-context-demo.default " ,
"valid" : true ,
"message" : " Failed with a score of -30 points " ,
"score" : -30 ,
"scoring" : {
"critical" : [
{
"selector" : " containers[] .securityContext .capabilities .add == SYS_ADMIN " ,
"reason" : " CAP_SYS_ADMIN is the most privileged capability and should always be avoided " ,
"points" : -30
}
],
"advise" : [
{
"selector" : " containers[] .securityContext .runAsNonRoot == true " ,
"reason" : " Force the running image to run as a non-root user to ensure least privilege " ,
"points" : 1
},
{
// ...
}
]
}
}
]PRS Selamat Datang! Lihatlah pedoman yang berkontribusi untuk informasi lebih lanjut.