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
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:
- Muazma Zahid | Manajer PM Utama
Untuk melihat profil LinkedIn non-publik, masuk ke LinkedIn.
Langkah berikutnya
- Helm
- Bagan Helm
- Kubernetes
- Kubernetes StatefulSets
- Volume Kubernetes
- Kubernetes ConfigMaps
- Rahasia Kubernetes
- Layanan Kubernetes
- Masukan Kubernetes
- Azure Kubernetes Service
- Gambar Docker NiFi Apache