
Salam, Habr!
Kami, tim arsitek TI dari IBM, yang bergerak dalam penciptaan dan pemasaran solusi industri untuk berbagai industri. Di waktu senggang, kami meneliti teknologi baru, bereksperimen, dan mencoba praktik terbaik.
Dalam beberapa tahun terakhir, tema Internet of Things telah sangat populer. Pelanggan kami bertanya tentang solusi kotak universal dan platform yang dapat ditemukan secara lokal di Pusat Data mereka. Yang paling penting, diharapkan bahwa berdasarkan "kotak" seperti itu, semua layanan dan aplikasi baru harus dikembangkan dan diluncurkan dengan sangat cepat, atau lebih tepatnya secara instan atau "kemarin."
Kami bertanya pada diri sendiri: "Bagaimana jika kita mengumpulkan sesuatu yang serupa pada teknologi terbuka dan publik?"
Kami telah berbicara dan menunjukkan banyak hal tentang penggunaan wadah
Docker dan alat manajemen mereka berdasarkan
Kubernetes . Namun, sejauh ini tidak mungkin untuk melihat bagaimana semua teknologi canggih ini dapat digunakan pada skala industri untuk tugas-tugas bisnis, khususnya di bawah Internet of Things. Jadi mari kita isi celah ini. Konsep layanan mikro, serta pendekatan modis untuk pengembangan (DevOps), integrasi dan penyebaran aplikasi (CI / CD) akan dianggap sebagai tugas yang sedikit berbeda dan disisihkan untuk nanti.
Dalam artikel ini kami ingin berbicara tentang persiapan dan pemasangan salah satu komponen utama - IBM Cloud Private (pada kenyataannya, perakitan industri Docker / Kubernetes dan sedikit lagi), yang dapat bertindak sebagai inti infrastruktur bersyarat saat membuat platform Internet of Things lokal. Tanyakan kenapa dia?
Karena kami menjanjikan teknologi terbuka dan publik (versi gratis untuk komunitas dan dukungan dari komunitas):
hub.docker.com/r/ibmcom/icp-inceptionGambaran Umum IBM Cloud Private
IBM Cloud Private (ICP) adalah platform cloud pribadi untuk penyebaran dan operasi di tempat. ICP adalah lingkungan terintegrasi yang memungkinkan Anda merancang, mengembangkan, menyebarkan, dan mengelola aplikasi lokal yang dibangun dengan arsitektur wadah. Pengiriman ICP termasuk orkestra berbasis Kubernetes (K8s), toko gambar lokal, serta konsol manajemen dan alat pemantauan pendukung.
Apa itu cloud pribadi atau pribadi?
Cloud pribadi adalah model komputasi awan yang berjalan secara eksklusif untuk satu organisasi, biasanya pada wilayah dan sumber dayanya. Awan seperti itu dapat dikelola dan dikelola oleh spesialisnya sendiri dan karyawan pihak ketiga. Platform serupa dapat di-host baik di belakang firewall perusahaan dan di luarnya. Cloud pribadi memberikan manfaat cloud publik, termasuk penyebaran dan skalabilitas yang cepat, serta kemudahan penggunaan, manajemen, dan fleksibilitas. Pada saat yang sama, versi lokal memberikan kontrol yang lebih besar terhadap sistem, peningkatan produktivitas, biaya yang dapat diprediksi secara akurat, peningkatan persyaratan keamanan dan kemampuan manajemen yang fleksibel tergantung pada kebutuhan organisasi. Cloud pribadi memungkinkan Anda untuk mengonfigurasinya secara langsung untuk tugas bisnis tertentu dan persyaratan keamanan pelanggan.
Sebelum melanjutkan dengan instalasi ICP, kami akan mendefinisikan terminologi:
Master node- Monitor dan kontrol cluster K8s.
- kubectl: alat baris perintah untuk mengelola cluster.
- REST API: antarmuka untuk berinteraksi dengan node kerja.
- etcd: adalah keystore yang persisten dan terjangkau, digunakan sebagai penyimpanan cadangan K8 untuk semua data cluster.
- kube-scheduler: komponen ini mengawasi wadah yang baru dibuat (pod) yang tidak memiliki node yang ditetapkan, dan memilih sebuah node untuk menjalankannya.
- Biasanya 3 atau lebih node utama diperlukan untuk operasi yang stabil dan memastikan toleransi kesalahan. Dalam kasus kami, untuk menghemat sumber daya, kami akan menginstal semua komponen ICP yang diperlukan pada satu server khusus (Single Node).
Node kerja- Mesin yang bekerja di K8 sebelumnya dikenal sebagai Minion. Node ini dapat berupa salah satu dari host yang menerima tugas dari node utama, dan juga mengontrol proses peluncuran kontainer di dalamnya. Bergantung pada pengaturan cluster, node yang bekerja dapat berupa mesin virtual atau server fisik.
- Komponen-komponen berikut dapat dijalankan pada setiap node:
- kubelet: adalah layanan utama dari simpul kerja. Ini memantau wadah yang ditugaskan ke simpulnya (baik apirusver untuk koneksi aman, atau melalui file konfigurasi lokal).
- kube-proxy: menampilkan layanan yang didefinisikan dalam API K8 pada setiap host, mendukung aturan jaringan pada host dan koneksi penerusan.
- buruh pelabuhan: peluncuran kontainer dan lingkungan manajemen.
- supervisord: Ini adalah proses pemantauan ringan dan sistem kontrol yang dapat Anda gunakan untuk menjaga kubelet dan docker tetap berjalan.
- fluentd: Ini adalah layanan yang membantu memastikan logging tingkat cluster.
Wadah- Aplikasi yang berjalan di lingkungan yang terisolasi.
- Himpunan proses yang dapat dieksekusi dan gambar yang diluncurkan dari program.
Kepompong (polong)- Pod adalah sekelompok satu atau beberapa kontainer Docker, dengan penyimpanan / jaringan umum dan spesifikasi cara menjalankan kontainer pada simpul kerja.
- Setiap Pod memiliki IP sendiri.
- Pod membagikan ruang nama PID, jaringan, dan nama host.
Pengontrol replikasi- Memberikan aksesibilitas dan skalabilitas.
- Bertanggung jawab untuk mengontrol jumlah Pod yang digunakan.
- Menggunakan template yang menjelaskan apa yang seharusnya berisi setiap Pod.
Label- Metadata ditugaskan untuk sumber daya K8, misalnya: wadah, layanan.
- Pasangan nilai kunci dilampirkan ke objek untuk identifikasi.
- Parameter ini sangat penting karena didasarkan pada permintaan cluster untuk sumber daya dengan label tertentu.
Layanan- Kumpulan kontainer yang terpapar sebagai titik akhir.
- Informasi tentang status cluster K8s dan pengaturan jaringan, yang berlaku untuk semua node yang bekerja.
- Dengan konfigurasi yang benar, pod yang dibuat oleh pengontrol replikasi akan secara otomatis terdaftar sebagai layanan yang sesuai.
Informasi Rahasia (rahasia)- Informasi rahasia untuk dibaca atau digunakan oleh wadah.
- Volume khusus dari disk drive dipasang secara otomatis sehingga wadah dapat membaca konten.
- Setiap entri memiliki jalurnya sendiri.
Arsitektur
Di bawah ini adalah arsitektur ICP tingkat tinggi yang mencantumkan komponen utama berdasarkan simpul utama, kerja dan proxy. Perlu dicatat bahwa dalam artikel ini penekanan utama ditempatkan pada kombinasi kontainer Docker dan lingkungan manajemen Kubernetes. Komponen open source ini adalah kunci dan mendasar bagi platform ICP. Namun demikian, untuk sepenuhnya bekerja dengan ICP, Anda juga perlu pengetahuan tentang Helm, manajer manajemen paket perangkat lunak. K8 digunakan untuk menyebarkan dan meng-host contoh aplikasi yang dibangun ke dalam skema Helm, yang pada gilirannya merujuk pada gambar Docker. Skema helm berisi informasi tentang detail aplikasi Anda, dan gambar Docker berisi semua paket perangkat lunak yang diperlukan untuk menjalankan aplikasi Anda.

Untuk pengantar mendetail tentang arsitektur dan komponen platform ICP, Anda dapat menggunakan tautan dokumentasi di
Pusat Pengetahuan IBM .
Persiapan
Untuk menyelesaikan instalasi ICP dengan nyaman dalam 20-30 menit, diperlukan sumber daya perangkat keras minimum dan akses Internet:
• Satu host (fisik atau virtual)
• CPU = 8 core (atau core virtual)
• RAM = 10 GB (mungkin dibutuhkan hingga 14 GB)
• Disk = 40 GB (pada SSD lebih cepat)
Catatan: jika Anda memiliki waktu luang lebih sedikit dan sumber daya perangkat keras lebih sedikit, maka di suatu tempat dalam 40-60 menit Anda dapat menginstal ICP pada 1 virtual core i5 dan 10 GB RAM.
Instalasi
Unduh Ubuntu
Unduh distribusi
Server Ubuntu versi 16.04.05 . Lakukan instalasi OS standar pada mesin virtual atau fisik dengan karakteristik di atas.
Mendapatkan Alamat IP
Setelah menyelesaikan proses instalasi OS, di baris perintah, cari tahu alamat IP mesin virtual Anda menggunakan perintah berikut:
ifconfig
Anda perlu menulis / mengingat alamat IP Ethernet (inet addr), serta Bcast dan Mask. Parameter ini akan ditampilkan setelah menjalankan perintah yang sesuai:
Gambar 1. Contoh perintah ifconfigKoneksi SSH
Jika Anda menggunakan fungsi "Instal Mudah" ketika mengatur mesin virtual, maka setelah instalasi penuh Ubuntu Server Anda perlu menginstal server OpenSSH. Anda dapat melakukan ini dengan perintah berikut:
apt install openssh-server sudo systemctl enable sshd
Setelah menjalankan perintah yang sesuai, Anda akan dapat terhubung ke mesin virtual menggunakan SSH. Tergantung pada OS, Anda dapat menggunakan metode koneksi yang berbeda. Untuk Windows, Anda dapat menggunakan alat
Putty populer, untuk MacOS, Anda dapat menggunakan perintah ssh di terminal.
Gambar 2. Contoh koneksi via Putty untuk WindowsLangkah selanjutnya adalah mengatur kata sandi untuk pengguna super (root):
sudo -i passwd
Gambar 3. Mengatur kata sandi baru untuk pengguna rootPembaruan Antarmuka Jaringan
Setelah kami mengkonfigurasi kemampuan untuk terhubung melalui SSH dan memperbarui kata sandi pengguna super, kami perlu mengkonfigurasi antarmuka jaringan untuk menentukan parameter jaringan statis. Ini dilakukan dengan perintah berikut:
nano /etc/network/interfaces
Kami memperbarui pengaturan antarmuka jaringan (antarmuka jaringan primer) berdasarkan informasi yang diperoleh selama perintah ifconfig, contoh kami terlihat seperti ini:
auto ens33 iface ens33 inet static address 192.168.175.7 netmask 255.255.255.0 network 192.168.175.0 broadcast 192.168.175.255 gateway 192.168.175.2 dns-nameservers 192.168.175.2 8.8.8.8
Catatan: Penting untuk menentukan server DNS dengan benar, karena akses Internet diperlukan untuk pemasangan komponen ICP berikutnya.
Gambar 4. Konfigurasi antarmuka jaringanSimpan file yang diperbarui menggunakan langkah-langkah berikut: Ctrl + X, Ya, Enter.
Untuk menyederhanakan masuk ke mesin virtual dengan hak superuser (root), Anda perlu membuat perubahan pada konfigurasi layanan SSH. Untuk melakukan ini, jalankan perintah berikut:
nano /etc/ssh/sshd_config
Selanjutnya, cari jalur izin akses dan edit sesuai itu:
PermitRootLogin yes
Gambar 5. Memperbarui konfigurasi SSHSimpan file seperti pada langkah sebelumnya: Ctrl + X, Ya, Enter.
Setelah melakukan semua perubahan, untuk menerapkan parameter baru, masuk akal untuk memulai ulang sepenuhnya mesin virtual atau memulai kembali layanan yang sesuai (jaringan dan ssh), misalnya, dengan perintah berikut:
shutdown -r 0
atau
service <service_name> restart
Setelah menghidupkan ulang mesin, Anda harus masuk kembali melalui SSH.
Pembaruan Komponen
Perbarui Server Ubuntu dengan perintah berikut (perintah harus dijalankan sebagai root):
apt update
Catatan: jika kesalahan terjadi selama pembaruan: "Tempat penyimpanan ': // Ubuntu-Server 16.04.5 LTS _Xenial Xerus_ - Rilis amd64 (20180731) xenial Release' tidak memiliki file Rilis.". Anda harus menjalankan perintah berikut:
sudo nano /etc/apt/sources.list
Dan berikan komentar:
deb cdrom:[Ubuntu-Server 16.04.5 LTS …
Gambar 6. Koreksi kemungkinan kesalahanSelanjutnya, simpan file, seperti yang dilakukan sebelumnya: Ctrl + X, Ya, Enter
Setelah memperbaiki kesalahan yang mungkin terjadi, jalankan perintah pembaruan lagi dan sebagai hasilnya Anda akan melihat sesuatu seperti ini:
Gambar 7. Pembaruan UbuntuInstal IBM Cloud Private
Sebelum Anda menginstal ICP, Anda perlu mengedit file host:
nano /etc/hosts
Ganti string 127.0.1.1 ubuntu dengan alamat IP Anda dan nama host yang sesuai.
Pastikan nama host dan alias di baris dipisahkan oleh tab atau spasi:
Gambar 8. Mengubah file hostsSimpan file: Ctrl + X, Ya, Enter
2 perintah berikut akan memungkinkan Anda untuk memperbarui sistem dan memasang modul tambahan.
apt update apt-get install apt-transport-https ca-certificates curl software-properties-common python-minimal jq
Periksa terminal untuk kesalahan:
Gambar 9. Memasang komponen tambahanTambah memori virtual maksimum dengan perintah:
sysctl -w vm.max_map_count=262144
K8 tidak akan mulai dengan swap diaktifkan. Anda dapat menonaktifkannya dengan perintah:
swapoff –a
Catatan: dua perintah sebelumnya akan bekerja di sesi saat ini. Ketika Anda reboot, parameter ini akan hilang dan Anda harus mendaftarkannya lagi.
Aplikasi parameter ini saat memuat OS dapat diaktifkan dengan perintah berikut:
sed -i '/ swap / s/^/#/' /etc/fstab echo "vm.max_map_count=262144" >> /etc/sysctl.conf
Menambahkan Kunci GPG
Kami menggunakan perintah berikut:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Menambahkan repositori untuk menginstal Docker
Untuk menyelesaikan instalasi repositori, Anda harus menjalankan 2 perintah berikut:
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" apt-get update
Instal Docker
Gunakan perintah berikut untuk menginstal Docker (Docker versi 17.12.1 adalah versi maksimum yang didukung untuk IBM Cloud Private 2.1.0.3):
apt-get install docker-ce=17.12.1~ce-0~ubuntu
Gambar 10. Proses instalasi DockerAnda dapat memverifikasi fungsionalitas Docker dengan perintah berikut:
docker version
Gambar 11. Memeriksa DockerUnduh IBM Cloud Private
Untuk mengunduh gambar ICP-ce (Edisi Komunitas) dari sumber dockerHub, Anda perlu menggunakan toolkit Docker. Anda dapat melakukan ini dengan perintah berikut:
docker pull ibmcom/icp-inception:2.1.0.3
Gambar 12. Unduh ICPIBM mengemas semua komponen penting yang diperlukan untuk instalasi ke dalam satu paket (perhatikan bahwa Anda dapat mengubah versi ke versi yang lebih baru jika perlu). Perintah tarikan akan mengunggah gambar ke sistem file lokal (gambar akan diluncurkan untuk menginstal ICP).
Buat direktori dan navigasikan ke sana:
mkdir /opt/icp cd /opt/icp
Salin paket ICP ke direktori ini:
docker run -e LICENSE=accept -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data
Catatan: perintah Docker toolkit ini mengeksekusi perintah Linux copy (cp) dari direktori yang ditentukan (opsi -v). Direktori cluster akan dibuat di / opt / icp dengan semua file yang diperlukan.
Konfigurasikan kunci SSH
Buat kunci ssh baru di direktori / opt / icp / cluster:
ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N "" cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys systemctl restart sshd cp ~/.ssh/id_rsa ./cluster/ssh_key
Pastikan kunci dibuat dan terletak di folder / opt / icp / cluster:
ls /opt/icp/cluster
Gambar 13. Isi folder clusterPengaturan ICP
Tambahkan alamat IP dari setiap node di cluster ke file / opt / icp / cluster / hosts (dalam kasus kami, kami menggunakan alamat IP yang sama untuk setiap komponen yang kami tentukan di / etc / hosts). Kami melakukan ini dengan perintah berikut:
nano /opt/icp/cluster/hosts
Gambar 14. Isi file hostsSimpan file: Ctrl + X, Ya, Enter
Informasi terperinci tentang opsi instalasi dapat ditemukan di file konfigurasi:
more /opt/icp/cluster/config.yaml
Kami tidak menyarankan mengubah pengaturan instalasi default.
Catatan: 2 file instalasi paling penting adalah host dan config.yaml, yang menjelaskan opsi instalasi ICP. Dalam konfigurasi multi-pekerja, Anda harus menentukan daftar alamat IP di bagian pekerja. Saat memasang versi ICP saat ini dalam mode Node Tunggal, alamat IP dalam file host hanya berubah.
Instalasi ICP
Pergi ke direktori cluster dan jalankan instalasi:
cd /opt/icp/cluster docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install
Bergantung pada sumber daya yang tersedia, instalasi dapat berlangsung dari 20 hingga 60 menit. Jika terjadi kesalahan (pesan merah), buat perubahan yang sesuai pada file konfigurasi. Kadang-kadang instalasi mungkin sedikit melambat karena upaya untuk menyambung kembali ke komponen yang belum dimulai (misalnya, ketika memulai Cloudant atau IAM).
Instalasi akan terlihat seperti ini:
Gambar 15. Hasil Instalasi ICPJika terjadi kesalahan, menghapus ICP mungkin diperlukan:
docker run -e LICENSE=accept --net=host -t -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 uninstall
Sebelum melanjutkan ke langkah berikutnya, tunggu sekitar 5 menit untuk semua komponen ICP untuk memulai dengan sukses.
Ikuti tautan yang disediakan setelah instalasi selesai, masukkan konsol ICP (admin / admin):
https://<ip_address>:8443
Gambar 16. Halaman login panel kontrolHalaman Selamat Datang ICP:
Gambar 17. Antarmuka web panel kontrolDi kanan atas, pilih menu Katalog, daftar aplikasi yang tersedia ditampilkan:
Gambar 18. Katalog komponenDirektori ini berisi daftar aplikasi dan perangkat lunak, deskripsi yang dapat Anda pelajari sesuka hati, tetapi sejauh ini jangan terburu-buru untuk menggunakannya.
Kami belum belajar bagaimana menangani ICP yang baru diinstal dengan benar (tidak hanya melalui antarmuka Web, tetapi juga konsol dalam bentuk CLI - Command Line Interface), sambungkan penyimpanan persisten dan buat pengaturan kecil.
Kesimpulannya
Untuk meringkas.
Kami berhasil menyebarkan edisi komunitas IBM Cloud Private (versi 2.1.0.3) pada satu host di mesin virtual yang menjalankan Ubuntu Server OS 04/16/05. Saat ini, kami telah memverifikasi instalasi pada VMware dan Hyper-V hypervisors, itu pasti berfungsi pada XenServer dan seharusnya tidak ada kesulitan untuk VirtualBox dan KVM.
Siapa yang benar-benar ingin terjun lebih jauh ke dalam studi ICP, yaitu, pilihan yang sangat baik dari pekerjaan laboratorium rekan kami di sini:
github.com/phthom/IBMCloudPrivateDari langkah-langkah yang akan datang - setelah instalasi baru, kita hanya perlu mengkonfigurasi sedikit ICP dan mulai mengisinya dengan sesuatu yang berguna dan dekat dengan tugas-tugas praktis.
Jika komunitas Habr secara positif mendukung inisiatif ini, maka seiring dengan kemajuan penelitian dan percobaan kami, kami akan mengisi inti platform dengan komponen yang diperlukan untuk pengumpulan telemetri, penyimpanan data, pemrosesan, analisis, peramalan, pembentukan antarmuka program eksternal dan pembuatan aplikasi pengguna. Dengan demikian, mengembangkan serangkaian artikel tersebut.
Menunggu tanggapan dan saran Anda!
Selain itu, orang-orang yang sepaham dari
AIXportal.ru kami menyiapkan klip video yang luar biasa untuk menginstal IBM Cloud Private di saluran Youtube mereka, seseorang akan lebih nyaman seperti ini:
youtu.be/eQwOOTzjM24Tautan dan materi yang bermanfaat
•
Halaman produk dalam bahasa Rusia• Siapa yang ingin berlatih bahasa Inggris, buku - "
ICP for Dummies " 2018. (40 halaman)
•
Kertas putih untuk ICP 2.1.0.3 di Pusat Pengetahuan IBM
• Buka komunitas
ICP di IBM developerWorks•
resep ICP untuk pengembang