Vanilla Sepanjang Jalan. Solusi Vanilla Cloud di K8s

Kami menerbitkan terjemahan dari artikel tentang Vanilla Stack - teknologi open-source berbasis cloud baru berdasarkan Kubernetes.


Saya baru-baru ini menemukan Vanilla Stack , yang mencakup banyak komponen open source. Dalam artikel ini, kami akan melihat sekilas proses instalasi dan menunjukkan kepada Anda berbagai kasus penggunaan.







Vanilla Stack sekilas



Vanilla Stack dapat didefinisikan sebagai cluster Kubernetes dengan banyak komponen open-source.



Diantara mereka:



  • Benteng - mengelola penyimpanan terdistribusi (sistem file, blok, objek),
  • OpenStack - Menyediakan Infrastruktur sebagai Layanan (IaaS),
  • Cloud Foundry - Menyediakan Platform sebagai Layanan (PaaS).


Diagram berikut dari dokumentasi resmi menggambarkan arsitektur tumpukan global.



Catatan: Semua solusi yang disertakan dengan Vanilla Stack (Rook, Cloud Foundry, OpenStack, dan alat lainnya) berfungsi sebagai pod di cluster Kubernetes yang mendasarinya.



Seperti yang dapat kita lihat dari diagram di atas, pengguna dapat:



  • menjalankan aplikasi di cluster Kubernetes dasar melalui pembuatan penerapan, layanan, diagram Helm, dll.
  • gunakan Cloud Foundry untuk menjalankan aplikasi Anda dari kode (dengan yang sederhana cf push



    );
  • menggunakan OpenStack untuk membuat infrastruktur baru (mesin virtual, jaringan yang ditentukan perangkat lunak, dll.).


Catatan: Persyaratan perangkat keras bergantung pada komponen yang akan dipasang di tumpukan.



Diagram berikut lebih rinci, berisi daftar semua komponen, diatur menurut kategori, yang mungkin disertakan dengan Vanilla Stack:







Saya rasa diagram ini cukup akurat. Beberapa komponen diinstal secara default, yang lain dapat dipilih selama instalasi.



Di artikel ini, kami akan membahas langkah-langkah utama dalam proses instalasi. Untuk menyederhanakan tugas, kita akan menginstal Vanilla Stack pada enam mesin virtual yang disiapkan oleh hoster: tiga akan bertindak sebagai node master Kubernetes, dan sisanya akan bertindak sebagai pekerja.



catatan:Penyedia cloud harus dipilih tergantung pada komponen yang ingin kita instal, karena beberapa di antaranya mungkin tidak memenuhi persyaratan penginstalan. Misalnya, untuk menginstal Rook, kita memerlukan penyedia infrastruktur yang menyediakan penyimpanan blok.



Kami memulai instalasi



Ada dua cara untuk menginstal Vanilla Stack, semuanya dijelaskan di bagian unduhan . Kami akan menggunakan instalasi Docker yang dapat dimulai dengan perintah berikut:



$ docker run \
  --name VanillaStack-installer -d \
  -p 8080:8080 \
  harbor.vanillastack.io/vanillastack/installer:latest

      
      





Antarmuka web penginstal dapat diakses melalui port 8080. Instalasi dapat diselesaikan dalam sepuluh langkah mudah, yang akan kita bahas selanjutnya.



Persyaratan









Langkah pertama, Mulai , menentukan persyaratan perangkat keras dan perangkat lunak untuk mesin tempat stack akan diinstal. Dalam kasus kami, kami akan menggunakan enam mesin virtual. Masing-masing berjalan pada Ubuntu 20.04 dan memiliki RAM 4GB / 2 CPU.



Seperti yang kami tulis sebelumnya, tiga mesin virtual akan bertindak sebagai node Kubernetes utama, dan sisanya akan berfungsi.



# IP addresses of the master nodes
master1 - 159.65.92.123
master2 - 178.62.32.212
master3 - 178.62.40.225

# IP addresses of the worker nodes
worker1 - 178.62.41.87
worker2 - 178.62.27.97
worker3 - 178.62.67.29

      
      





Selain itu, kita perlu menyiapkan domain (dan beberapa subdomain) untuk mengakses cluster. Kami akan kembali ke langkah ini nanti saat mengonfigurasi penyeimbang beban.



Syarat dan ketentuan



Menerima Persyaratan adalah langkah kedua kami. Pastikan untuk membaca informasi lisensi yang ditentukan.







Pengaturan Umum



Selanjutnya adalah langkah Pengaturan Umum . Perlu untuk menunjukkan jenis instalasi yang cocok untuk kita: jumlah node master dan pekerja dan pemuatan awal.











Dalam kasus kami, kami akan memilih instalasi HA dengan tiga node master, tiga node yang tersisa bertindak sebagai pekerja. Benteng dipilih secara default untuk instalasi repositori. Kami tidak menggunakan OpenStack atau Cloud Foundry di sini. Ini bisa menjadi topik untuk artikel lain.



Akses ke mesin virtual dengan kunci SSH



Bagian Kunci Publik menyediakan kunci publik RSA, itu harus disalin ke setiap mesin virtual. Langkah ini diperlukan agar mesin penginstalan (yang menjalankan penginstal) menjalankan buku pedoman yang mungkin untuk mengonfigurasi setiap VM.



Catatan: Ansible adalah sistem manajemen konfigurasi. Ini hanya menjalankan perintah pada mesin melalui koneksi SSH. Ansible tidak memerlukan agen untuk dipasang, tidak seperti analog seperti Chef dan Puppet .







Petunjuk untuk menyalin kunci ditunjukkan di penginstal:



  • simpan kunci dalam sebuah file bernama key.pub



    .
  • salin kunci ke komputer target menggunakan ssh-copy-id



    :


ssh-copy-id -f -i key.pub <username>@<ip-address-of-node>
      
      





  • ulangi ini dengan semua node.


Untuk Windows, ikuti petunjuk di artikel ini , dimulai dengan Salin Kunci SSH ke Perangkat Linux Jarak Jauh.



Tentukan Informasi Node



Pada tahap Nodes , kita perlu menentukan alamat IP dan pengguna masing-masing node master dan pekerja.









Kita juga perlu mendefinisikan node yang akan meluncurkan Rook Pods. Berdasarkan persyaratan, kami menggunakan ketiga node pekerja.







Memeriksa konfigurasi node



Pada langkah Node-Check , kami memeriksa apakah semua node memenuhi persyaratan.







Sebelum mengklik tombol Validates Nodes, penting untuk menggulir ke bawah dan memastikan bahwa kita mengikuti aturan Benteng: perangkat blok mentah harus terhubung ke setiap node.







Dengan menggunakan perintah lsblk -f



, kami dapat memeriksa apakah semuanya sudah dikonfigurasi dengan benar.







Dengan mengklik tombol Validate Nodes di penginstal, kita dapat memastikan bahwa semua node dikonfigurasi dengan benar.







Pengaturan cluster



Hal pertama yang harus dikonfigurasi pada langkah Cluster-Settings adalah Pod CIDR dan Service CIDR (yaitu, rentang IP yang digunakan untuk menyediakan IP pod dan IP virtual layanan). Dalam kasus kami, kami menggunakan nilai default.







Selain itu, kita perlu membuat penyeimbang beban untuk mengarahkan lalu lintas ke node master atau produksi.



Karena sifat dari penyedia cloud yang Anda gunakan, Anda tidak dapat menggunakan load balancer yang sama untuk mengarahkan lalu lintas ke kumpulan node yang berbeda.



Oleh karena itu, kami akan membuat dua penyeimbang beban: di depan node master

dan di depan pekerja.



Penyeimbang beban di depan node master



Penyeimbang beban pertama diperlukan untuk mengakses server API cluster. Ini harus dikonfigurasi seperti ini:



  • mengarahkan lalu lintas TCP dari port 6443 ke port yang sama pada host master;
  • secara teratur memeriksa pengoperasian node master dengan mengirimkan permintaan TCP ke port 6443.




Dalam kasus ini, penyeimbang beban mendapatkan alamat IP 159.65.211.35.



Penyeimbang beban di depan node pekerja



Penyeimbang beban kedua diperlukan untuk menyediakan akses ke pengontrol masuk klaster (komponen yang memberikan akses ke aplikasi dalam klaster). Pengaturannya:



  • mengarahkan lalu lintas HTTP (port 80) ke port 30080 node pekerja;
  • mengarahkan lalu lintas HTTPS (port 443) ke port 30443 dari node yang berfungsi;
  • memeriksa kesehatan node pekerja yang mengirim permintaan TCP pada port 30080 secara teratur.




Dalam kasus ini, penyeimbang beban mendapatkan IP 46.101.64.165.



Mengonfigurasi entri DNS



Alamat IP load balancer harus dikaitkan dengan nama domain cluster. Dalam artikel kami, kami menggunakan vanilla.techwhale.io



. Subdomain tambahan diperlukan untuk mengakses server API dan aplikasi yang diekspos melalui pengontrol masuk.







Pada tahap ini, kami hanya dapat memberikan alamat IP dari satu penyeimbang beban, tetapi pada rilis penginstal berikutnya akan ada lebih banyak opsi.







Mari Enkripsi penyiapan



Let's Encrypt adalah otoritas sertifikat gratis yang banyak digunakan. Ini memungkinkan kami menerima dan memperbarui sertifikat HTTPS secara otomatis. Kubernetes Let's Encrypt sering digunakan melalui Cert Manager , komponen default di Vanilla Stack. Cert Manager dapat memperoleh sertifikat dari Let's Encrypt (serta beberapa sumber lainnya) dan membuatnya tersedia untuk aplikasi melalui Kubernetes Secret.







Konfigurasi Benteng



Langkah-langkah berikut memungkinkan Anda memilih komponen Benteng yang akan dipasang (dalam hal ini, panel kontrol Benteng dan pemantauan), serta jumlah pengulangan satu bagian data (tingkat replika).







Memasang alat tambahan



Di bagian Alat Tambahan , Anda dapat menentukan komponen mana yang akan diinstal di cluster.









Alat yang tercantum di sini cukup umum. Mereka termasuk dalam kategori yang berbeda:



  • pemantauan (Prometheus, Jeager);
  • penebangan (fluentd, Elasticsearch, Grafana);
  • registri kontainer dan repositori grafik Helm (Harbor);
  • kontroler masuk (nginx).




Ini adalah cara yang nyaman untuk menginstal semua komponen dari satu lokasi. Mereka juga dapat diinstal nanti jika tidak dipilih pada tahap ini.



Berlangganan



Jika kita ingin berlangganan dukungan komersial, maka pada langkah ini kita bisa mendapatkan semua informasi yang diperlukan.







Dukungan disediakan oleh Cloudical . Ini mendukung Vanilla Stack dan menyediakan Vanilla Cloud , opsi tumpukan terkelola baru.



Memeriksa semua langkah



Di sini kita dapat melihat dan mengubah (jika perlu) parameter konfigurasi.







Sebelum melanjutkan ke langkah berikutnya dan menginstal seluruh tumpukan, kita perlu memastikannya

/etc/apt/sources.list



dikonfigurasi dengan benar di setiap node dan diarahkan ke repositori resmi.



Catatan: Langkah ini diperlukan, misalnya, jika Ansible tidak tersedia dari repositori default.



Cara termudah untuk memperbaikinya adalah dengan mengganti konten dengan /etc/apt/sources.list



petunjuk berikut:







Instalasi



Sekarang semuanya sudah siap dan kita dapat memulai pemasangan di bawah secangkir teh.







Di log penginstalan, kita akan melihat Buku pedoman yang mungkin diterapkan ke setiap VM untuk:



  • instal semua paket yang diperlukan;
  • menyiapkan cluster Kubernetes (tiga node utama / tiga pekerja);
  • instal Benteng dan semua alat yang dipilih di atas.




Memasang seluruh tumpukan tidak membutuhkan waktu lama.







Catatan: Saat memasang tumpukan, saya mengalami masalah kecil karena kekhasan penyedia cloud yang digunakan: penyeimbang beban mengalihkan lalu lintas ke alamat IP internal (pribadi) dari host, bukan ke alamat publik. Kontroler Ingress dipetakan ke alamat IP eksternal (publik) dari node, sehingga node pekerja ditandai sebagai buruk, yang mana salah.



Akses cluster



File kubeconfig



dapat diambil dari /etc/kubernetes/admin.conf file



.



# Get kubeconfig file
$ ssh root@master1 cat /etc/kubernetes/admin.conf > vanilla.cfg
# Configure local kubectl
$ export KUBECONFIG=$PWD/vanilla.cfg
      
      







Seperti biasa, kami mulai dengan membuat daftar node di cluster kami:



$ kubectl get no
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   38m   v1.19.6
master2   Ready    master   37m   v1.19.6
master3   Ready    master   37m   v1.19.6
worker1   Ready    worker   37m   v1.19.6
worker2   Ready    worker   37m   v1.19.6
worker3   Ready    worker   37m   v1.19.6
      
      







Selain itu, kami dapat memeriksa semua pod yang berjalan di cluster, serta layanan yang menyediakannya.









Sepertinya semuanya berfungsi! Langkah selanjutnya dapat berupa uji coba, misalnya, aplikasi berstatus, yang:



  • menggunakan penyimpanan blok yang disediakan oleh cluster Ceph yang dibuat melalui Benteng;
  • diteruskan melalui pengontrol masuk nginx;
  • menggunakan sertifikat TLS dari Let's Encrypt CA, yang dibuat secara otomatis oleh Cert Manager.




Hasil



Penyiapan Vanilla Stack cepat dan penginstal Docker sederhana dan mudah. Parameter tambahan harus segera ditambahkan untuk kenyamanan lebih.



Jika Anda tidak ingin menginstal Vanilla Stack, Anda dapat menggunakan stack yang sama langsung dari Vanilla Cloud . Penawaran cloud baru ini diluncurkan pada Desember 2020 dan beta pertama sekarang tersedia.



Saya sarankan untuk melihat lebih dekat tumpukan ini karena ini adalah cara yang bagus untuk mempelajari lebih lanjut tentang proyek open source populer.



All Articles