Penyebaran berbasis helm untuk Apache NiFi

Azure Kubernetes Service (AKS)

Solusi ini menunjukkan cara menggunakan bagan Helm saat Anda menyebarkan NiFi di Azure Kubernetes Service (AKS). Helm menyederhanakan proses penginstalan dan pengelolaan aplikasi Kubernetes.

Apache®, Apache NiFi®, dan NiFi® adalah merek dagang terdaftar atau merek dagang dari Apache Software Foundation di Amerika Serikat dan/atau negara lain. Tidak ada dukungan oleh The Apache Software Foundation yang tersirat oleh penggunaan tanda ini.

Sistem

Diagram yang menunjukkan cara pengguna mengonfigurasi bagan Helm untuk menyebarkan aplikasi di Kubernetes. Komponen termasuk pod dan volume yang dibuat Kubernetes.

Unduh file Visio arsitektur ini.

Alur kerja

  • Bagan Helm berisi file values.yaml. File itu mencantumkan nilai input yang dapat diedit pengguna.

  • Pengguna menyesuaikan pengaturan dalam bagan, termasuk nilai untuk:

    • Ukuran volume.
    • Jumlah pod.
    • Autentikasi pengguna dan mekanisme otorisasi.
  • Pengguna menjalankan perintah Helm install untuk menyebarkan bagan.

  • Helm memeriksa apakah input pengguna berisi nilai untuk semua variabel yang diperlukan.

  • Helm membuat manifes yang menjelaskan objek yang akan disebarkan di Kubernetes.

  • Helm mengirimkan manifes ke kluster Kubernetes. Apache ZooKeeper menyediakan koordinasi kluster.

  • Kubernetes membuat objek yang ditentukan. Penyebaran NiFi memerlukan objek berikut:

    • Objek konfigurasi.
    • Volume data. Penyimpanan pod bersifat sementara.
    • Volume log.
    • Pod yang menggunakan image untuk menjalankan NiFi dalam kontainer. Kubernetes menggunakan sumber daya beban kerja StatefulSet untuk mengelola pod.
    • Layanan Kubernetes yang membuat UI NiFi tersedia bagi pengguna.
    • Rute ingress jika kluster menggunakan ingress untuk membuat UI tersedia secara eksternal.

Komponen

Bagan Helm adalah kumpulan file dalam folder dengan struktur pohon. File-file ini menjelaskan sumber daya Kubernetes. Anda dapat mengonfigurasi komponen berikut dalam bagan Helm:

Zookeeper

ZooKeeper menggunakan bagan terpisah. Anda dapat menggunakan bagan ZooKeeper standar yang disediakan Kubernetes di repositori bagan inkubator. Tetapi ketika dependensi Anda menyertakan konten registri publik, Anda memasukkan risiko ke dalam alur kerja pengembangan dan penyebaran gambar Anda. Untuk mengurangi risiko ini, simpan salinan lokal dari konten publik jika Anda bisa. Untuk informasi mendetail, lihat Mengelola konten publik dengan Azure Container Registry.

Sebagai alternatif, Anda dapat menggunakan ZooKeeper sendiri. Jika Anda memilih opsi ini, berikan server ZooKeeper dan nomor port sehingga pod yang menjalankan NiFi dapat mengakses layanan ZooKeeper.

Kubernetes StatefulSet

Untuk menjalankan aplikasi di Kubernetes, Anda menjalankan pod. Unit dasar ini menjalankan kontainer berbeda yang mengimplementasikan berbagai aktivitas aplikasi.

Kubernetes menawarkan dua solusi untuk mengelola pod yang menjalankan aplikasi seperti NiFi:

  • ReplicaSet, yang memelihara kumpulan pod replika yang stabil yang berjalan pada waktu tertentu. Anda sering menggunakan ReplicaSet untuk menjamin ketersediaan sejumlah Pod identik yang ditentukan.
  • StatefulSet, yang merupakan objek API beban kerja yang Anda gunakan untuk mengelola aplikasi stateful. StatefulSet mengelola pod yang didasarkan pada spesifikasi kontainer yang identik. Kubernetes membuat pod ini dari spesifikasi yang sama. Tapi pod ini tidak dapat dipertukarkan. Setiap pod memiliki pengenal tetap yang dipertahankannya saat penjadwalan ulang.

Karena Anda menggunakan NiFi untuk mengelola data, StatefulSet memberikan solusi terbaik untuk penerapan NiFi.

ConfigMaps

Kubernetes menawarkan ConfigMaps untuk menyimpan data non-rahasia. Kubernetes menggunakan objek ini untuk mengelola berbagai file konfigurasi seperti nifi.properties. Kontainer yang menjalankan aplikasi mengakses informasi konfigurasi melalui volume dan file yang dipasang. ConfigMaps memudahkan pengelolaan perubahan konfigurasi pasca penyebaran.

ServiceAccount

Dalam instans yang aman, NiFi menggunakan autentikasi dan otorisasi. NiFi mengelola informasi ini dalam file sistem file. Secara khusus, setiap node kluster perlu memelihara file authorizations.xml dan file users.xml. Semua anggota harus dapat menulis ke file-file ini. Dan setiap node dalam kluster harus memiliki salinan identik dari informasi ini. Jika tidak, kluster tidak sinkron dan rusak.

Untuk memenuhi kondisi ini, Anda dapat menyalin file-file ini dari anggota pertama kluster ke setiap anggota yang muncul. Setiap anggota baru kemudian memelihara salinannya sendiri. Pod umumnya tidak memiliki otorisasi untuk menyalin konten dari pod lain. Namun ServiceAccount Kubernetes menyediakan cara untuk mendapatkan otorisasi.

Layanan

Layanan Kubernetes membuat layanan aplikasi tersedia bagi pengguna kluster Kubernetes. Objek layanan juga memungkinkan node anggota kluster NiFi untuk berkomunikasi satu sama lain. Untuk penerapan bagan Helm, gunakan dua jenis layanan: layanan tanpa kepala dan layanan berbasis IP.

Ingress

Ingress mengelola akses eksternal ke layanan kluster. Secara khusus, pengontrol ingress yang telah dikonfigurasi sebelumnya memaparkan rute HTTP dan HTTPS dari luar kluster ke layanan di dalam kluster. Anda dapat menentukan aturan masuk yang menentukan bagaimana pengontrol mengarahkan lalu lintas. Bagan Helm mencakup rute masuk dalam konfigurasi.

Rahasia

Untuk mengonfigurasi kluster NiFi yang aman, Anda perlu menyimpan informasi masuk. Rahasia Kubernetes menyediakan cara aman untuk menyimpan dan mengambil informasi masuk ini.

Detail skenario

Pengguna Apache NiFi sering kali perlu menerapkan NiFi di Kubernetes. Penyebaran Kubernetes melibatkan banyak objek, seperti pod, volume, dan layanan. Sulit untuk mengelola manifes, atau file spesifikasi, yang digunakan Kubernetes untuk sejumlah objek ini. Kesulitan meningkat saat Anda menerapkan beberapa kluster NiFi yang menggunakan konfigurasi berbeda.

Bagan Helm memberikan solusi untuk mengelola manifes. Helm adalah manajer paket untuk Kubernetes. Dengan menggunakan alat Helm, Anda dapat menyederhanakan proses penginstalan dan pengelolaan aplikasi Kubernetes.

Bagan adalah format pengemasan yang digunakan Helm. Anda memasukkan persyaratan konfigurasi ke dalam file bagan. Helm melacak setiap riwayat dan versi bagan. Helm kemudian menggunakan bagan untuk menghasilkan file manifes Kubernetes.

Dari satu bagan, Anda dapat menerapkan aplikasi yang menggunakan konfigurasi berbeda. Saat menjalankan NiFi di Azure, Anda dapat menggunakan diagram Helm untuk menerapkan konfigurasi NiFi yang berbeda di Kubernetes.

Apache®, Apache NiFi®, dan NiFi® adalah merek dagang terdaftar atau merek dagang dari Apache Software Foundation di Amerika Serikat dan/atau negara lain. Tidak ada dukungan oleh The Apache Software Foundation yang tersirat oleh penggunaan tanda ini.

Pertimbangan

Pertimbangan ini mengimplementasikan pilar Azure Well-Architected Framework, yang merupakan serangkaian tenet panduan yang dapat digunakan untuk meningkatkan kualitas beban kerja. Untuk informasi selengkapnya, lihat Microsoft Azure Well-Architected Framework.

Disk data

Untuk penggunaan disk, pertimbangkan untuk menggunakan set disk bergaris untuk repositori. Dalam penyebaran pengujian yang menggunakan Virtual Machine Scale Sets, pendekatan ini bekerja paling baik. Kutipan berikut dari nifi.properties menunjukkan konfigurasi penggunaan disk:

nifi.flowfile.repository.directory=/data/partition1/flowfiles
nifi.provenance.repository.directory.stripe1=/data/partition1/provenancenifi.provenance.repository.directory.stripe2=/data/partition2/provenancenifi.provenance.repository.directory.stripe3=/data/partition3/provenancenifi.content.repository.directory.stripe2=/data/partition2/content
nifi.content.repository.directory.stripe3=/data/partition3/content

Konfigurasi ini menggunakan tiga volume dengan ukuran yang sama. Anda dapat menyesuaikan nilai dan striping untuk memenuhi persyaratan sistem Anda.

Skenario penyebaran

Anda dapat menggunakan load balancer publik atau pribadi atau pengontrol masuk untuk mengekspos kluster NiFi. Saat Anda menggunakan diagram Helm untuk implementasi ini, tersedia dua konfigurasi:

  • Cluster NiFi tanpa jaminan yang dapat diakses melalui URL HTTP tanpa autentikasi atau otorisasi pengguna.
  • Cluster NiFi aman yang dapat diakses melalui URL HTTPS. Cluster semacam ini diamankan dengan TLS. Saat Anda mengonfigurasi kluster aman, Anda dapat memberikan sertifikat Anda sendiri. Atau, bagan dapat menghasilkan sertifikat. Untuk tujuan ini, bagan menggunakan alat NiFi yang menyediakan Pembuat Sertifikat (CA) yang ditandatangani sendiri.

Jika Anda mengonfigurasi kluster NiFi untuk dijalankan sebagai kluster aman dengan komunikasi TLS, Anda perlu mengaktifkan autentikasi pengguna. Gunakan salah satu metode autentikasi pengguna yang didukung berikut ini:

  • Autentikasi pengguna berbasis sertifikat. Pengguna diautentikasi dengan sertifikat yang mereka berikan ke UI NiFi. Untuk menggunakan sistem autentikasi pengguna semacam ini, tambahkan sertifikat publik CA ke penerapan NiFi.
  • Autentikasi pengguna berbasis LDAP. Server LDAP mengautentikasi informasi masuk pengguna. Saat Anda menerapkan bagan, berikan informasi tentang server LDAP dan hierarki informasi.
  • Autentikasi pengguna berbasis OpenID. Pengguna memberikan informasi ke server OpenID untuk mengonfigurasi penyebaran.

Konfigurasi dan penggunaan sumber daya

Untuk mengoptimalkan penggunaan sumber daya, gunakan opsi Helm ini untuk mengonfigurasi nilai CPU dan memori:

  • Opsi request, yang menentukan jumlah awal sumber daya yang diminta kontainer
  • Opsi limit, yang menentukan jumlah maksimum sumber daya yang dapat digunakan kontainer

Saat Anda mengonfigurasi NiFi, pertimbangkan konfigurasi memori sistem Anda. Karena NiFi adalah aplikasi Java, Anda harus menyesuaikan pengaturan seperti nilai memori mesin virtual java (JVM) minimum dan maksimum. Gunakan pengaturan berikut:

  • jvmMinMemory
  • jvmMaxMemory
  • g1ReservePercent
  • conGcThreads
  • parallelGcThreads
  • initiatingHeapOccupancyPercent

Keamanan

Keamanan memberikan jaminan terhadap serangan yang disukai dan penyalahgunaan data dan sistem berharga Anda. Untuk informasi selengkapnya, lihat Gambaran Umum pilar keamanan.

Gunakan konteks keamanan Kubernetes untuk meningkatkan keamanan kontainer dasar yang menjalankan biner NiFi. Konteks keamanan mengelola akses ke kontainer tersebut dan podnya. Melalui konteks keamanan, Anda dapat memberikan izin kepada pengguna non-root untuk menjalankan kontainer.

Kegunaan lain dari konteks keamanan meliputi:

  • Membatasi akses pengguna berbasis OS yang menjalankan kontainer.
  • Menentukan grup mana yang dapat mengakses kontainer.
  • Membatasi akses ke sistem file.

Gambar kontainer

Kontainer Kubernetes adalah unit dasar yang menjalankan biner NiFi. Untuk mengonfigurasi kluster NiFi, fokuskan pada gambar yang Anda gunakan untuk menjalankan kontainer ini. Anda memiliki dua opsi untuk gambar ini:

  • Gunakan gambar NiFi standar untuk menjalankan grafik NiFi. Komunitas Apache NiFi menyediakan gambar itu. Tetapi Anda perlu menambahkan biner kubectl ke kontainer untuk mengonfigurasi kluster aman.
  • Gunakan gambar khusus. Jika Anda mengambil pendekatan ini, pertimbangkan persyaratan sistem file Anda. Pastikan lokasi binari NiFi Anda benar. Untuk informasi selengkapnya tentang sistem file yang dikonfigurasi, lihat Dockerfile dalam kode sumber Apache NiFi.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.

Langkah berikutnya