Analisis Statis untuk Kubernetes
Kubelinter menganalisis file Kubernetes YAML dan grafik helm, dan memeriksanya terhadap berbagai praktik terbaik, dengan fokus pada kesiapan dan keamanan produksi.
Kubelinter menjalankan pemeriksaan default yang masuk akal, yang dirancang untuk memberi Anda informasi yang berguna tentang file YAML dan grafik Helm Kubernetes Anda. Ini untuk membantu tim memeriksa lebih awal dan seringkali untuk kesalahan konfigurasi keamanan dan praktik terbaik DevOps. Beberapa contoh umum dari ini termasuk menjalankan wadah sebagai pengguna non-root, menegakkan hak istimewa paling sedikit, dan menyimpan informasi sensitif hanya dalam rahasia.
Kubelinter dapat dikonfigurasi, sehingga Anda dapat mengaktifkan dan menonaktifkan cek, serta membuat cek khusus Anda sendiri, tergantung pada kebijakan yang ingin Anda ikuti di dalam organisasi Anda.
Ketika pemeriksaan serat gagal, Kubelinter melaporkan rekomendasi untuk bagaimana menyelesaikan masalah potensial dan mengembalikan kode keluar nol.
Kunjungi https://docs.kubelinter.io untuk dokumentasi terperinci tentang menginstal, menggunakan dan mengkonfigurasi Kubelinter.
Binari Kube-Linter dapat ditemukan di sini: https://github.com/stackrox/kube-linter/releases/latest
Untuk menginstal menggunakan GO, jalankan perintah berikut:
go install golang.stackrox.io/kube-linter/cmd/kube-linter@latestJika tidak, unduh biner terbaru dari rilis dan tambahkan ke jalur Anda.
Untuk menginstal menggunakan homebrew atau linuxbrew, jalankan perintah berikut:
brew install kube-linter nix-shell -p kube-linter
docker pull stackrox/kube-linter:latest
Menginstal Kubelinter dari Source sesederhana mengikuti langkah -langkah ini:
Pertama, klon repositori Kubelinter.
git clone [email protected]:stackrox/kube-linter.git Kemudian, kompilasi kode sumber. Ini akan membuat file biner Kube-Linter untuk setiap platform dan menempatkannya di folder .gobin .
make buildAkhirnya, Anda siap untuk mulai menggunakan Kubelinter. Verifikasi versi Anda untuk memastikan Anda telah berhasil menginstal Kubelinter.
.gobin/kube-linter versionAda beberapa lapisan pengujian. Setiap lapisan diharapkan lewat.
go Tes Unit:
make testTes Integrasi End-to-End:
make e2e-test Dan akhirnya, tes integrasi ujung ke ujung menggunakan bats-core :
make e2e-batsGambar Kubelinter ditandatangani oleh COSIGN. Kami merekomendasikan memverifikasi gambar sebelum menggunakannya.
Setelah Anda menginstal COSIGN, Anda dapat menggunakan kunci publik Kubelinter untuk memverifikasi gambar Kubelinter dengan:
cat kubelinter-cosign.pub
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEl0HCkCRzYv0qH5QiazoXeXe2qwFX
DmAszeH26g1s3OSsG/focPWkN88wEKQ5eiE95v+Z2snUQPl/mjPdvqpyjA==
-----END PUBLIC KEY-----
cosign verify --key kubelinter-cosign $IMAGE_NAMEKubelinter juga menyediakan tanda tangan tanpa keyless.
Anda dapat memverifikasi gambar Kubelinter dengan:
# NOTE: Keyless signatures are NOT PRODUCTION ready.
COSIGN_EXPERIMENTAL=1 cosign verify $IMAGE_NAME Menjalankan Kubelinter untuk memasukkan file YAML Anda hanya membutuhkan dua langkah dalam bentuk paling dasar.
Temukan file YAML yang ingin Anda uji untuk praktik terbaik dan kesiapan produksi:
Jalankan perintah berikut:
kube-linter lint /path/to/your/yaml.yaml Pertimbangkan file spesifikasi pod sampel berikut pod.yaml . File ini memiliki dua masalah kesiapan produksi dan satu masalah keamanan:
Masalah Keamanan:
Kesiapan produksi:
Batas memori wadah tidak diatur, yang dapat memungkinkannya untuk mengkonsumsi memori yang berlebihan
apiVersion : v1
kind : Pod
metadata :
name : security-context-demo
spec :
securityContext :
runAsUser : 1000
runAsGroup : 3000
fsGroup : 2000
volumes :
- name : sec-ctx-vol
emptyDir : {}
containers :
- name : sec-ctx-demo
image : busybox
resources :
requests :
memory : " 64Mi "
cpu : " 250m "
command : [ "sh", "-c", "sleep 1h" ]
volumeMounts :
- name : sec-ctx-vol
mountPath : /data/demo
securityContext :
allowPrivilegeEscalation : falseSalin YAML di atas ke pod.yaml dan serat file ini dengan menjalankan perintah berikut:
kube-linter lint pod.yamlKubelinter menjalankan cek default dan melaporkan rekomendasi. Di bawah ini adalah output dari perintah kami sebelumnya.
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) The container "sec-ctx-demo" is using an invalid container image, "busybox". Please use images that are not blocked by the `BlockList` criteria : [".*:(latest)$" "^[^:]*$" "(.*/[^:]+)$"] (check: latest-tag, remediation: Use a container image with a specific tag other than latest.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" does not have a read-only root file system (check: no-read-only-root-fs, remediation: Set readOnlyRootFilesystem to true in the container securityContext.)
pod.yaml: (object: <no namespace>/security-context-demo /v1, Kind=Pod) container "sec-ctx-demo" has memory limit 0 (check: unset-memory-requirements, remediation: Set memory limits for your container based on its requirements. Refer to https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits for details.)
Error: found 3 lint errors
Untuk mempelajari lebih lanjut tentang menggunakan dan mengkonfigurasi Kubelinter, kunjungi halaman dokumentasi.
Berikut ini adalah tutorial tentang Kubelinter yang ditulis oleh pengguna. Jika Anda memiliki satu yang ingin Anda tambahkan ke daftar ini, silakan kirim PR!
Jika Anda ingin terlibat dengan komunitas Kubelinter, termasuk pengelola dan pengguna lain, Anda dapat bergabung dengan ruang kerja Slack di sini.
Untuk berkontribusi, periksa panduan berkontribusi kami.
Sebagai pengingat, semua partisipasi dalam komunitas Kubelinter diatur oleh Kode Etik kami.
Kubelinter berada pada tahap awal pengembangan. Mungkin ada perubahan perubahan di masa depan dengan penggunaan perintah, bendera, dan format file konfigurasi. Namun, kami mendorong Anda untuk menggunakan Kubelinter untuk menguji file YAML lingkungan Anda, melihat apa yang rusak, dan berkontribusi.
Kubelinter dilisensikan di bawah Lisensi Apache 2.0.
Kubelinter dibuat dengan ❤️ oleh Stackrox.
Jika Anda tertarik pada Kubelinter, atau pada hal -hal keren lainnya yang kami lakukan, ketahuilah bahwa kami sedang merekrut! Lihat posisi terbuka kami. Kami ingin mendengar dari Anda!