Perkembangan tersebut dapat dibandingkan dengan gambar di mana artis adalah pengembang terkemuka. Membuat aplikasi microservice yang elegan - dengan kreasi arsitek terbaik - modernis. Tetapi untuk menempatkan proses pada aliran dan meninggalkan kesempatan untuk memilih - seni. Pada artikel pertama dalam seri ini, kami ingin berbicara tentang bagaimana layanan IBM Kubernetes dan layanan cloud OpenShift yang Dikelola IBM dibuat dan dijalankan, dan bagaimana Anda dapat menggunakan dan menguji cluster Kubernetes Anda di cloud IBM secara gratis.

Cloud IBM telah mendapatkan fungsionalitas selama sepuluh tahun terakhir. Semuanya dimulai dengan membangun infrastruktur bersama untuk melayani perusahaan besar, kemudian dengan mesin virtual dan fisik berdasarkan pusat data SoftLayer, kemudian ada pembangunan lima tahun PaaS (berdasarkan runtime Cloud Foundry) dan evolusi sejumlah besar layanan. Tim pengembangan Moskow juga mengambil bagian dalam menciptakan bagian dari layanan. Tetapi hari ini ini bukan tentang layanan, tetapi tentang apa yang dikelola kubernetes dan openshift yang dikelola adalah dan bagaimana cara kerjanya di cloud IBM. Banyak detail yang tidak dapat diceritakan, karena proyek ini internal, tetapi dimungkinkan untuk membuka tirai tertentu.
Apa itu kubernetes dan bagaimana kubernet dikelola / openshift berbeda dari instalasi lokal
Kubernetes awalnya diposisikan sebagai platform open-source untuk mengelola aplikasi dan layanan kemas. Tugas utama kubernetes adalah (saya akan pergi tanpa terjemahan, agar tidak melanggar terminologi):
- Penemuan layanan dan penyeimbangan beban
- Orkestrasi penyimpanan
- Peluncuran dan rollback otomatis
- Tempat sampah otomatis
- Penyembuhan diri
- Manajemen rahasia dan konfigurasi
Secara umum, kubernet melakukan pekerjaan yang sangat baik dari semua tugas ini. Di sisi lain, kubernetes mulai diposisikan sebagai basis data untuk menyimpan konfigurasi aplikasi atau alat API untuk mengelola komponen Anda (terutama yang relevan dalam konteks pengembangan operator).
Salah satu keunggulan kubernetes adalah Anda dapat menjalankan aplikasi kemas sumber daya komputasi dan cloud. Dalam hal sumber daya cloud - banyak penyedia cloud menyediakan kemampuan untuk menggunakan sumber daya komputasi untuk menjalankan aplikasi dan mengambil administrasi penuh dari kluster:
- penyebaran cluster
- mengatur ketersediaan dan distribusi jaringan
- instalasi pembaruan dan paket perbaikan
- Mengkonfigurasi cluster untuk meningkatkan toleransi kesalahan dan keamanan (lebih banyak di artikel)
- ...
Jika Anda bekerja dengan kubernet yang dikelola di cloud apa pun, maka tentu saja Anda dibatasi dalam sejumlah tindakan. Misalnya, beberapa versi kubernet biasanya didukung, dan sepertinya Anda tidak akan dapat menggunakan versi kubernet yang tidak didukung untuk waktu yang lama. Keuntungan utama tidak diragukan lagi bahwa bukan tim Anda yang mengelola cluster, yang mengurangi waktu yang dibutuhkan untuk mengembangkan aplikasi. Tentu saja, kubernet yang dikelola dan openshift yang dikelola tidak dapat digunakan di semua organisasi dan untuk semua jenis aplikasi, tetapi ada berbagai tugas yang bagus untuk komputasi di awan.
Arsitektur Awan
Di dalam perusahaan, proyek IBM Managed Kubernetes dan proyek OpenShift IBM Managed disebut proyek Armada. Proyek ini dimulai dengan satu pusat data, tetapi sekarang tersedia di 60 pusat data cloud di 6 wilayah berbeda. Untuk menggambarkan bagaimana skala awan, saya akan menggunakan dua istilah: hub dan jari-jari. Seluruh proyek Armada didasarkan pada kubernet, yang berarti bahwa klusternya dikendalikan oleh panel kontrol yang berjalan pada kubernet. Segera setelah panel kontrol tidak memiliki sumber daya yang cukup untuk mengelola set cluster yang diperlukan, panel ini menyebarkan jari-jari tambahan. Jari-jari ini akan terus bertanggung jawab untuk mengelola cluster di wilayah tertentu.
Panel kontrol terdiri dari lebih dari 1.500 penyebaran dan terletak di 60 kubernet cluster. Semua ini diperlukan untuk mengelola lebih dari 15.000 cluster pelanggan kami (tidak termasuk cluster uji bebas yang digunakan pada pekerja yang sama).
Untuk membuat IKS dan OpenShift yang Dikelola, tim menggunakan model OpenSource secara internal. Sebagian besar karyawan IBM memiliki akses ke sebagian besar repositori Armada dan dapat membuat PR mereka sendiri untuk mengintegrasikan layanan mereka. Sebagai bagian dari pekerjaan layanan, sejumlah besar alat CI / CD juga dikembangkan, yang diintegrasikan ke dalam proyek Razee. Pada musim panas 2019, IBM mengunggah semua pencapaian proyek Razee ke OpenSource.
Secara umum, arsitektur untuk IKS dan Managed OpenShift adalah sebagai berikut:

Ketika Anda bekerja dengan IBM Cloud CLI dan meminta pembuatan cluster, sebenarnya permintaan Anda masuk ke API Armada, maka panel kontrol menentukan ketersediaan jari-jari dan memulai penciptaan jumlah pekerja yang diperlukan di wilayah yang Anda tentukan. Seluruh infrastruktur untuk pekerja disediakan dengan menggunakan IBM Cloud Infrastructure (alias Soflayer), pada kenyataannya, mesin virtual dan host bare metal yang sama digunakan, yang tersedia di bagian "Hitung" pada katalog layanan cloud. Setelah beberapa saat, Anda akan menerima token otorisasi dan Anda dapat mulai menggunakan aplikasi Anda.
Karena OpenShift dan Kubernetes berbeda dalam kemampuan dan peta jalan pengembangan mereka, tumpukan teknologi yang mendasarinya juga berbeda:

Bagaimana keamanan dipastikan?
Kita dapat berbicara tentang proyek Armada untuk waktu yang sangat lama baik dari sudut pandang teknis maupun dari sisi pemasaran. Tetapi pertama-tama, ketika memilih penyedia cloud yang menyediakan kubernet terkelola, semua orang menanyakan pertanyaan yang sama - bagaimana penyedia menjamin dan memastikan keamanan dan toleransi kesalahan aplikasi saya? .. Tidak mungkin untuk mengevaluasi kinerja, kenyamanan, tingkat dukungan layanan tanpa menerima jawaban untuk pertanyaan ini. Sebagai manajer pengembangan, selama pengembangan proyek besar apa pun, saya membuat peta ancaman. Penting untuk memperkenalkan semua opsi peretasan yang mungkin ke dalamnya dan mengamankan infrastruktur, aplikasi, dan data Anda. Untuk berbicara tentang keamanan cluster kubernetes, Anda perlu menjelaskan poin-poin berikut:
- keamanan infrastruktur itu sendiri dan pusat data
- akses ke Kubernetes API dan lain-lain
- master keamanan dan node pekerja
- keamanan jaringan
- keamanan penyimpanan yang persisten
- pemantauan dan penebangan
- keamanan wadah dan gambar wadah
Sekarang, hal pertama yang pertama:
Keamanan infrastruktur itu sendiri dan pusat data
Tidak peduli bagaimana kami ingin sepenuhnya melepaskan diri dari perangkat keras dan pemeliharaan isian perangkat keras sistem TI, pada kenyataannya, kita perlu memastikan bahwa penyedia layanan akan benar-benar menutupi bagian belakang kita, dan mengkonfirmasi ini didokumentasikan dengan bantuan sertifikasi industri dan industri, dan jika perlu dengan bantuan laporan tentang melakukan audit. Aspek ini diperhitungkan oleh tim IBM dengan semua keseriusan yang mungkin dan semua informasi yang diperlukan dikumpulkan dan disajikan di satu tempat ( https://www.ibm.com/cloud/compliance )
Akses Kubernetes API dan lain-lain
Untuk mengakses API dan data Kubernetes di etcd, Anda harus melewati tiga tingkat otorisasi. Setiap token otorisasi yang dikeluarkan terkait dengan token otentikasi, data otorisasi klaster (RBAC), dan pengontrol penerimaan (lihat diagram di bawah).

Karena penyihir dikonfigurasi secara terpusat menggunakan jari-jari, ini berarti bahwa Anda tidak dapat mengubah konfigurasi penyihir, penyihir itu sendiri bahkan tidak terletak di akun cloud Anda dan tidak terlihat dalam daftar perangkat Anda (tidak seperti pekerja). Semua perubahan konfigurasi hanya dapat dilakukan dalam kemampuan tertentu. Di satu sisi, ini adalah batasan, tetapi karena batasan ini, penjahat cyber juga tidak akan memiliki akses ke penyihir Anda, selain itu tidak ada faktor kesalahan manusia, tidak ada risiko menggunakan versi komponen kubernet yang tidak kompatibel, dan seluruh proses administrasi klaster difasilitasi. Secara umum, kita dapat mengatakan bahwa IBM bertanggung jawab untuk memastikan toleransi kesalahan dan konfigurasi master kubernet yang benar. Jika proyek Anda memiliki persyaratan ketat untuk menggunakan versi komponen tertentu, maka di tempat Anda, saya tidak akan melihat kubernet yang dikelola sama sekali dan menggunakan instalasi saya sendiri.
Master keamanan dan node pekerja
Untuk memastikan keamanan pekerja dan master dari node, kami menggunakan terowongan VPN terenkripsi antara node komputasi, dan pengguna memiliki kesempatan untuk memesan pekerja dengan hard drive terenkripsi. Kami juga menggunakan Application Armor untuk membatasi akses aplikasi ke sumber daya di tingkat sistem operasi. Application Armor adalah perpanjangan dari kernel Linux untuk mengonfigurasi akses sumber daya untuk setiap aplikasi.
Saat membuat cluster, setelah memilih konfigurasi yang cocok untuk Anda, server virtual atau baremetal akan dibuat untuk Anda, di mana komponen untuk pekerjaan pekerja Anda akan diinstal. Pengguna memiliki akses ke OS pekerja, tetapi hanya ketika terhubung melalui VPN manajemen, yang dapat berguna untuk pemecahan masalah, serta untuk memperbarui OS pekerja itu sendiri. Tidak ada akses IP publik atas ssh, untuk mendapatkan ssh di dalam wadah yang Anda butuhkan untuk menggunakan Kubectl exec, koneksi ini akan dilakukan melalui terowongan OpenVPN.

Keamanan jaringan
Dalam kubernet yang dikelola dan openshift, plugin jaringan Calico digunakan sebagai solusi virtualisasi jaringan. Keamanan jaringan dicapai melalui kebijakan jaringan Kubernet dan Calico yang telah dikonfigurasi sebelumnya. Pekerja Anda dapat berada di VLAN yang sama dengan semua infrastruktur lainnya di pusat data yang sama, seperti mesin virtual dan server baremetal biasa, serta aplikasi jaringan dan sistem penyimpanan, dan berkat sistem belacu yang terletak di luar cluster Anda, akan dapat berkomunikasi melalui jaringan pribadi dengan penyebaran Anda.
Ketika sebuah cluster dengan VLAN publik dibuat, panel kontrol membuat sumber daya HostEndpoint
dengan ibm.role: worker_public
untuk setiap pekerja dan antarmuka jaringan eksternal. Untuk melindungi antarmuka jaringan eksternal, panel kontrol akan menerapkan semua kebijakan default Calico ke semua titik akhir dengan ibm.role: worker_public
.
Kebijakan default Calico memungkinkan semua lalu lintas keluar dan memungkinkan lalu lintas masuk dari Internet ke komponen tertentu (Kubernetes NodePort, LoadBalancer, dan layanan Masuk). Semua lalu lintas lainnya diblokir. Kebijakan default tidak berlaku untuk lalu lintas di dalam kluster (interaksi antara pod)
Keamanan penyimpanan yang persisten
Untuk keamanan di tingkat persistensi, enkripsi dan otorisasi kunci digunakan. Saat ini tersedia untuk IKS:
- NFS klasik
- Penyimpanan blok klasik (iSCSI)
- Penyimpanan blok VP
- Penyimpanan objek cloud ibm
- SDS berbasis Porworx (menggunakan drive lokal pekerja Anda sendiri)
Pemantauan dan Penebangan
Anda dapat menggunakan IBM Cloud Monitoring atau solusi dari Sysdig untuk memantau IKS. Tentu saja, Prometheus bukan tanpa. OpenShift yang dikelola menggunakan alat pemantauan bawaan.
Dengan log itu sendiri, segalanya menjadi lebih rumit. Kita perlu mengumpulkan log dari level yang sangat berbeda, kita menggunakan sejumlah besar solusi open source kita sendiri. Kami mengumpulkan dan menyimpan log berikut:
- Log wadah itu sendiri (STDOUT, STDERR)
- Log aplikasi (jika jalurnya ditentukan)
- Log dari simpul kerja
- Log API Kubernetes
- Log Ingress
- Log semua komponen sistem Kubernetes (namespace sistem kubus)
Untuk mengontrol log, tersedia layanan terpisah: IBM Cloud Log Analysis dengan LogDNA, yang memungkinkan Anda untuk menampilkan semua log dalam konsol umum dan menganalisis secara retrospektif atau secara real time, tergantung pada tarif. Anda dapat membuat instance secara terpisah di masing-masing 6 wilayah dan kemudian menggunakannya untuk mengumpulkan log dari cluster Kubernetes Anda dan infrastruktur lainnya di akun Anda. Untuk menghubungkan layanan ini ke cluster Anda, Anda harus meletakkan pod dengan agen LogDNA mengikuti instruksi sederhana, dan semua log akan dikirim ke repositori LogDNA, kemudian, tergantung pada paket yang dipilih, mereka akan tersedia untuk analisis lebih lanjut untuk periode tertentu.
Untuk menganalisis aktivitas di dalam layanan cloud Anda, termasuk login dan banyak lagi, Activity Tracker with LogDNA tersedia - memungkinkan Anda untuk melacak berbagai tindakan dalam layanan Anda.
Sebagai alat pemantauan tambahan, Anda dapat mengatur IBM Cloud Monitoring dengan Sysdig di cluster Anda - itu tersedia di semua 6 wilayah, yang akan memungkinkan Anda untuk memantau banyak metrik di cluster Anda secara real time dan menggunakan integrasi bawaan dengan banyak lingkungan umum yang berjalan dalam wadah. Selain itu, Anda dapat mengonfigurasi reaksi terhadap acara dengan kemungkinan pemberitahuan melalui slack, email, PagerDuty, WebHook, dll.
Wadah dan keamanan gambar wadah
Perusahaan memiliki pendapat sendiri tentang apa yang termasuk dalam DevOps. Jika seseorang tertarik, Anda dapat membaca lebih lanjut tentang ini dalam metode IBM Garage . Memahami DevSecOps juga terbentuk di banyak perusahaan dan diterapkan dalam praktik. Untuk memahami tahap apa yang dilalui gambar Docker untuk menjadi wadah Docker, lihat gambar berikut.

Di cloud IBM, dimungkinkan untuk menggunakan registri Docker sebagai layanan. Saat mengirim gambar ke register galangan ini gambar ditandatangani. Pada bagian node pekerja, addon dipasang, yang bertanggung jawab untuk memeriksa integritas dan kepatuhan dengan kebijakan keamanan - Penasihat Kerentanan. Dengan menggunakan kebijakan ini, Anda dapat, misalnya, membatasi lingkaran registri, dari mana dimungkinkan untuk mengunduh gambar buruh pelabuhan.
apiVersion: securityenforcement.admission.cloud.ibm.com/v1beta1 kind: ClusterImagePolicy metadata: name: ibmcloud-default-cluster-image-policy spec: repositories: # CoreOS Container Registry - name: "quay.io/*" policy: # Amazon Elastic Container Registry - name: "*amazonaws.com/*" policy: # IBM Container Registry - name: "registry*.bluemix.net/*" policy
Penasihat Kerentanan bekerja dengan menjalankan wadah, memindai secara berkala dan secara otomatis mendeteksi paket yang diinstal. Gambar Docker dengan kerentanan potensial ditandai sebagai berbahaya untuk digunakan dan memberikan informasi terperinci tentang kerentanan yang ditemukan.
Penasihat keamanan adalah pusat untuk mengelola semua kerentanan aplikasi Anda. Ini memungkinkan kemampuan untuk bekerja dengan masalah dan memperbaikinya. Ini bekerja baik dengan hasil Penasihat Kerentanan dan dengan cluster itu sendiri, peringatan tepat waktu dari kebutuhan untuk memperbarui komponen tertentu.
Contoh pendaftaran dan penerapan sekelompok kubernet yang dikelola
Anda dapat menggunakan dan menguji cluster Kubernetes yang dikelola di cloud IBM benar-benar gratis:
- Daftar di cloud IBM: https://ibm.biz/rucloud (Anda harus mengonfirmasi alamat email Anda, Anda tidak perlu menambahkan data kartu kredit pada tahap ini)
- Untuk menggunakan layanan IKS, Anda dapat mentransfer akun Anda ke yang berbayar (dengan mengklik Tingkatkan dan memasukkan detail kartu bank Anda - Anda akan menerima $ 200 dalam akun). Atau terutama untuk pembaca Habr, Anda bisa mendapatkan kupon untuk mengalihkan akun Anda ke mode uji coba - ini memungkinkan Anda untuk menggunakan cluster minimum secara gratis selama 30 hari. Setelah periode ini, cluster dapat dibuat kembali dan melanjutkan pengujian. Anda dapat meminta kupon di tautan - https://ibm.biz/cloudcoupon . Konfirmasi kupon dilakukan pada hari kerja.
- Anda dapat membuat cluster gratis (satu pekerja 2 vCPU RAM 4GB) dari katalog layanan - https://cloud.ibm.com/kubernetes/catalog/cluster/create
- Butuh 5-7 menit untuk membuat sebuah cluster, setelah itu cluster IKS akan tersedia untuk Anda.
Kesimpulan
Saya harap setelah membaca artikel ini pembaca memiliki lebih sedikit pertanyaan tentang bagaimana kubernet dikelola dan dikelola bekerja shift terbuka. Artikel ini juga dapat digunakan sebagai instruksi untuk tindakan menerapkan kubernet Anda sendiri. Semua praktik yang digunakan oleh IBM berlaku untuk cloud pribadi dan, dengan beberapa upaya, diterapkan di pusat data apa pun.
Sumber daya
IKS kendur
https://ibm-container-service.slack.com/
https://www.ibm.com/cloud/blog/announcements/ibm-cloud-activity-tracker-with-logdna-for-ibm-cloud-object-storage
https://www.ibm.com/cloud/blog/announcements/introducing-the-portworx-software-defined-storage-sution
https://cloud.ibm.com/docs/services/Monitoring-with-Sysdig?topic=Sysdig-getting-started