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.