5 cara untuk melakukan tanpa server di Kubernetes

Sebut saja "tanpa pelayan", sebut "komputasi berdasarkan peristiwa", atau sebut "fungsi sebagai perkhidmatan (FaaS)", ideanya sama: peruntukkan sumber daya secara dinamis untuk menjalankan fungsi individu, pada dasarnya perkhidmatan mikro, yang dipanggil sebagai tindak balas ke acara. Platform pengkomputeran tanpa pelayan membolehkan pembangun aplikasi memberi tumpuan kepada aplikasi, bukan infrastruktur yang mendasari dan semua butiran pengurusannya.

Sebilangan besar penyedia awan menawarkan semacam platform tanpa pelayan, tetapi anda boleh membuatnya sendiri dengan hanya dua bahan. Salah satunya adalah Kubernetes, sistem orkestrasi kontena yang telah menjadi platform standard untuk membina aplikasi yang komprehensif dan berdaya tahan. Yang kedua adalah sejumlah sistem yang digunakan untuk membina corak aplikasi tanpa pelayan di Kubernetes.

Sebilangan besar kerangka tanpa pelayan untuk Kubernetes mempunyai ciri-ciri yang sama:

  • Menerapkan ke persekitaran yang menyokong Kubernetes, secara tempatan atau jarak jauh, termasuk persekitaran seperti OpenShift.
  • Menyokong kod berjalan yang ditulis dalam bahasa apa pun, dengan beberapa jangka masa biasa yang dikemas dalam rangka.
  • Mencetuskan pelaksanaan kod dengan pelbagai jenis peristiwa - titik akhir HTTP, mesej antrian, atau beberapa kaitan lain.

Satu kelebihan utama membina tanpa server di Kubernetes adalah memperoleh kawalan yang jauh lebih besar terhadap platform yang mendasari. Banyak tawaran tanpa pelayan menyekat tingkah laku fungsi yang mereka jalankan, kadang-kadang menjadikan kelas aplikasi tertentu tidak praktikal. Dengan Kubernetes, anda boleh membuat platform tanpa pelayan yang sesuai dengan keperluan anda, meninggalkan infrastruktur kepada pengendali Kubernetes anda dan membiarkan pembangun anda fokus pada menulis kod penting.

Berikut adalah lima projek utama yang membawa fungsi tanpa server ke Kubernetes.

Pembelahan

Fission dibuat dan dikendalikan oleh syarikat Kubernetes Platform 9. yang dikendalikan. Tuntutan utamanya untuk terkenal adalah ia membolehkan anda membuat aplikasi FaaS tanpa perlu membuat kontena, hanya dengan menyediakan fail definisi.

Pembelahan boleh dipasang dengan atau tanpa carta Helm, dan dapat dipasang dalam salah satu daripada dua edisi. Terdapat versi lengkap dengan barisan mesej dan sokongan InfluxDB untuk pembalakan, dan edisi yang dilucutkan dengan fungsi asas. Yang pertama direka untuk penyebaran pengeluaran, dan yang terakhir untuk membasahi kaki anda.

Untuk menambahkan kod ke penyebaran Fission, anda menggunakan fail spesifikasi berasaskan YAML. Perkakas baris perintah Fission memungkinkan anda membuat fail YAML untuk fungsi dan laluan yang digunakan untuk mencetuskan titik masuk mereka. Fail spesifikasi juga membolehkan anda memberikan pemboleh ubah persekitaran, kontainer tambahan, jilid, dan kawalan Kubernetes taint / toleransi untuk kod tersebut.

Fission juga menyediakan "aliran kerja." Dipasang oleh carta Helm, aliran kerja menyampaikan output dari satu fungsi ke fungsi yang lain. Fungsinya tidak semestinya dalam bahasa yang sama. Perhatikan bahawa ini datang dengan kos prestasi, kerana setiap output fungsi diberikan ke dalam format pertukaran, walaupun sistem aliran kerja menyokong banyak jenis binari primitif yang biasa untuk tetap overhead ke bawah (misalnya, bilangan bulat, atau aliran byte generik).

Salah satu kelemahan yang awalnya dikaitkan dengan FaaS adalah ketika pertama kali fungsi dijalankan, terdapat kelewatan yang dapat dilihat untuk melancarkan kontena yang berkaitan dengannya. Pembelahan menjadikan bekas dipanaskan terlebih dahulu untuk mengurangkan latensi pada kali pertama fungsi dijalankan.

Fission menawarkan kemudahan lain untuk pemaju dan pentadbir. Perkhidmatan ini dapat digunakan ke dalam kluster yang tidak memiliki akses internet luaran, dan kod dapat dimuat ulang ke dalam kluster berdasarkan permintaan. Aktiviti fungsi juga dapat dirakam dan dimainkan semula untuk membantu penyahpepijatan.

Projek Fission boleh didapati di bawah lesen Apache yang sangat liberal, jadi boleh diusahakan semula secara bebas mengikut keperluan.

Knative

Awalnya dibuat oleh Google untuk menjalankan aplikasi tanpa pelayan di Kubernetes, Knative memfokuskan pada corak yang biasa digunakan untuk penggunaan tanpa pelayan dalam pengeluaran. Knative memerlukan kepakaran langsung dengan menguruskan banyak komponen Kubernetes agar dapat digunakan dengan berkesan.

Selain Kubernetes, Knative memerlukan sistem perutean atau jaringan perkhidmatan seperti Istio, tetapi pilihan lain seperti Ambassador dan Gloo juga dapat digunakan. Ini bermaksud penyiapan kerja lebih sedikit, tetapi projek ini mempunyai panduan terperinci untuk menggunakan setiap pilihan dalam pelbagai perkhidmatan awan dan persekitaran Kubernetes, termasuk vanilla Kubernetes.

Knative berfungsi terutamanya dengan memanfaatkan atau memperluas alat dan fungsi Kubernetes yang ada. Aplikasi, atau fungsi, dikonfigurasikan melalui fail YAML dan dihantar sebagai wadah Docker yang anda bina. Menambah, mengubah, atau menghapus definisi dilakukan melalui kubectlaplikasi baris perintah. Untuk metrik pada aplikasi Knative, gunakan Grafana. Penskalaan dapat dilakukan dengan penskalaan automatik Knative, atau dengan penimbang lain yang sesuai dengan Kubernetes termasuk yang ditulis khas.

Knative sedang dalam pembangunan yang besar, dan banyak alat khasnya masih dalam keadaan kasar. Ini termasuk  knctl, CLI khusus untuk Knative, yang membebaskan anda daripada kesukaran menggunakan alat lain Kubernetes untuk menguruskan Knative jika anda hanya mahu fokus pada Knative; dan ko, alat untuk membina aplikasi Go di Knative dengan menghilangkan langkah membina kontena.

Kubeless

Kubeless dibuat oleh Bitnami, pembangun pemasang mudah untuk tumpukan aplikasi web biasa. Kubeless menggunakan Definisi Sumber Kustom asli Kubernetes untuk mengendalikan fungsi, jadi terdapat sedikit pengurangan antara metafora Kubernetes dan fungsi Kubeless.

Waktu runtur bahasa yang paling umum disertakan dengan platform: .NET, Java, Python, Node.js, PHP, Ruby, Go, dan juga bahasa Ballerina baru untuk pengembangan cloud-native. Runtimes hanyalah gambar Docker, walaupun Kubeless memiliki format pembungkusan khusus untuk menggunakan Dockerfiles untuk membina waktu berjalan tersuai.

Satu lagi ciri Kubeless yang berguna adalah CLI-nya, yang serupa dengan AWS Lambda CLI. Ini sangat mudah jika anda ingin berpindah dari AWS Lambda, tetapi anda ingin mengekalkan beberapa skrip pengurusan yang ada, atau hanya tidak perlu mempelajari satu set perintah baru.

Kubeless juga berfungsi sebagai plug-in untuk Serverless Framework, sistem untuk membangun aplikasi tanpa server pada pelbagai seni bina. Sekiranya anda sudah menggunakan Tanpa Server atau Kubeless, anda akan lebih senang menambahkannya daripada menggunakan yang lain.

BukaFaaS

Peluang untuk OpenFaaS adalah "fungsi tanpa pelayan dipermudah." Secara sederhana, pemaju bermaksud "tidak lebih sukar daripada menggunakan wadah Docker."

OpenFaaS dapat digunakan baik ke Kubernetes atau ke kluster Docker Swarm (untuk pengujian tempatan atau penggunaan dengan permintaan rendah). Anda menggunakan OpenFaaS CLI untuk membina, mendorong, dan menyebarkan gambar Docker ke dalam kluster untuk menjalankan fungsi. Templat yang ada menyediakan cara yang telah dibuat untuk menyebarkan aplikasi yang ditulis dalam Go, Python, Node.js, .NET, Ruby, Java, atau PHP 7, walaupun anda selalu dapat melancarkan sendiri. OpenFaaS CLI juga memberi anda cara untuk menguruskan rahsia dalam kluster anda, sementara UI web terbina dalam membolehkan anda membuat fungsi baru dan menguruskannya.

Versi lain dari OpenFaaS, OpenFaaS Cloud, mengemas semula OpenFaaS dengan ciri untuk pelbagai pembangun termasuk integrasi dengan Git (termasuk GitHub dan edisi yang dihoskan sendiri oleh GitLab), CI / CD, pengurusan rahsia, HTTPS, dan kemampuan untuk memberi makan acara kepada Slack dan lain-lain tenggelam. OpenFaas Cloud tersedia sebagai produk sumber terbuka percuma, dan dalam versi hos yang kini bebas digunakan.

OpenWhisk

Apache OpenWhisk ditagih sebagai platform tanpa pelayan generik. Kubernetes hanya satu daripada beberapa pilihan yang tersedia untuk menjalankan kontena di OpenWhisk, kerana OpenWhisk juga menyokong Mesos dan Docker Compose. Walaupun begitu, Kubernetes lebih disukai kerana alat untuk penyebaran aplikasi, terutama carta Helm. IBM Cloud Functions didasarkan pada projek OpenWhisk, jadi dapat berfungsi dengan perintah OpenWhisk CLI juga.

Tidak seperti kebanyakan kerangka kerja Kubernetes tanpa pelayan lain, OpenWhisk ditulis dalam bahasa Scala, bukan Go (yang ditulis oleh Kubernetes dan Docker). Ini mungkin menjadi masalah hanya jika anda ingin menggodam OpenWhisk, dan anda hanya mempunyai pengalaman dengan Go. 

Sebilangan besar pilihan runtime aplikasi yang popular disertakan dengan OpenWhisk: Java, Node.js, Python, Ruby, PHP, dan .NET. Selain itu, banyak pilihan esoterik dan canggih juga disertakan: Scala, Ballerina, Swift, dan Rust. Waktu jalan hanyalah bekas Docker, jadi senang disediakan sendiri.

Satu ciri penyebaran OpenWhisk yang mudah adalah "tindakan zip." Arahkan arkib .zip kod dan fail tambahan ke OpenWhisk menggunakan fail manifes untuk pakej kod, dan OpenWhisk akan membuat tindakan darinya. OpenWhisk CLI juga merangkumi alat untuk mengubah struktur kod direktori menjadi arkib seperti itu. Dan katalog pakej perkhidmatan memudahkan memasukkan aplikasi anda ke penawaran pihak ketiga biasa seperti GitHub, Slack, Apache Kafka, atau Jira.