OpenShift sebagai Kubernetes versi perusahaan. Bagian 1

“Apa perbedaan antara Kubernetes dan OpenShift?” – pertanyaan ini muncul dengan konsistensi yang patut ditiru. Meski pada kenyataannya ini seperti menanyakan apa perbedaan mobil dengan mesin. Jika kita melanjutkan analoginya, maka mobil adalah produk jadi, Anda dapat langsung menggunakannya, secara harfiah: masuk dan pergi. Di sisi lain, agar sebuah mesin dapat membawa Anda ke suatu tempat, mesin tersebut harus dilengkapi terlebih dahulu dengan banyak hal lain agar pada akhirnya mendapatkan mobil yang sama.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1

Oleh karena itu, Kubernetes adalah mesin tempat mobil (platform) merek OpenShift dirakit, yang akan membawa Anda ke tujuan Anda.

Pada artikel ini kami ingin mengingatkan Anda dan memeriksa poin-poin penting berikut secara lebih rinci:

  • Kubernetes adalah jantung dari platform OpenShift dan merupakan Kubernetes yang 100% bersertifikat, sepenuhnya open source dan tanpa sifat kepemilikan sedikit pun. Secara singkat:
    • API klaster OpenShift adalah XNUMX% Kubernetes.
    • Jika container berjalan di sistem Kubernetes lain, maka container tersebut akan berjalan di OpenShift tanpa perubahan apa pun. Tidak perlu melakukan perubahan pada aplikasi.
  • OpenShift tidak hanya menambahkan fitur dan fungsionalitas berguna ke Kubernetes. Seperti mobil, OpenShift sudah siap digunakan, dapat langsung diproduksi, dan, seperti yang akan kami tunjukkan di bawah, membuat hidup pengembang jauh lebih mudah. Itu sebabnya OpenShift disatukan dalam dua pribadi. Ini adalah platform PaaS kelas perusahaan yang sukses dan terkenal dari sudut pandang pengembang. Dan pada saat yang sama, ini merupakan solusi Container-as-a-Service yang sangat andal dari sudut pandang operasi industri.

OpenShift adalah Kubernetes dengan sertifikasi 100% CNCF

OpenShift didasarkan pada bersertifikat Kubernetes. Oleh karena itu, setelah pelatihan yang tepat, pengguna akan kagum dengan kekuatan kubectl. Dan mereka yang beralih ke OpenShift dari Cluster Kubernetes sering mengatakan betapa mereka sangat menyukainya setelah mengalihkan kubeconfig ke cluster OpenShift, semua skrip yang ada bekerja dengan sempurna.

Anda mungkin pernah mendengar tentang utilitas baris perintah OpenShift yang disebut OC. Ini sepenuhnya kompatibel dengan perintah dengan kubectl, ditambah lagi ia menawarkan beberapa pembantu berguna yang akan berguna saat melakukan sejumlah tugas. Namun pertama-tama, sedikit lagi tentang kompatibilitas OC dan kubectl:

perintah kubectl
Tim OC

kubectl mendapatkan polong
oc dapatkan pod

kubectl mendapatkan namespace
oc dapatkan namespace

kubectl buat -f penerapan.yaml
oc buat -f penerapan.yaml

Berikut tampilan hasil penggunaan kubectl pada OpenShift API:

• kubectl get pods – mengembalikan pod seperti yang diharapkan.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1

• kubectl get namespaces – mengembalikan namespace seperti yang diharapkan.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Perintah kubectl create -f mydeployment.yaml membuat sumber daya kubernetes sama seperti pada platform Kubernetes lainnya, seperti yang ditunjukkan dalam video di bawah ini:


Dengan kata lain, semua API Kubernetes tersedia sepenuhnya di OpenShift dengan tetap menjaga kompatibilitas 100%. Itulah mengapa OpenShift diakui sebagai platform Kubernetes bersertifikat oleh Cloud Native Computing Foundation (CNCF). 

OpenShift menambahkan fitur berguna ke Kubernetes

API Kubernetes 100% tersedia di OpenShift, tetapi utilitas standar Kubernetes kubectl jelas tidak memiliki fungsionalitas dan kenyamanan. Itu sebabnya Red Hat telah menambahkan fitur-fitur berguna dan alat baris perintah ke Kubernetes, seperti OC (kependekan dari OpenShift client) dan ODO (OpenShift DO, utilitas ini ditujukan untuk pengembang).

1. Utilitas OC - versi Kubectl yang lebih kuat dan nyaman

Misalnya, tidak seperti kubectl, ini memungkinkan Anda membuat namespace baru dan mengganti konteks dengan mudah, dan juga menawarkan sejumlah perintah yang berguna bagi pengembang, seperti membuat image container dan menerapkan aplikasi langsung dari kode sumber atau binari (Sumber-ke-gambar, s2i).

Mari kita lihat contoh bagaimana pembantu bawaan dan fungsionalitas tingkat lanjut dari utilitas OC membantu menyederhanakan pekerjaan sehari-hari.

Contoh pertama adalah manajemen namespace. Setiap cluster Kubernetes selalu memiliki beberapa namespace. Mereka biasanya digunakan untuk menciptakan lingkungan pengembangan dan produksi, tetapi juga dapat digunakan untuk, misalnya, menyediakan kotak pasir pribadi bagi setiap pengembang. Dalam praktiknya, hal ini mengakibatkan pengembang harus sering berpindah antar namespace, karena kubectl berjalan dalam konteks space saat ini. Oleh karena itu, dalam kasus kubectl, orang secara aktif menggunakan skrip pembantu untuk ini. Namun saat menggunakan OC, untuk beralih ke ruang yang diinginkan, cukup ucapkan “oc project namespace”.

Tidak ingat apa nama namespace yang Anda perlukan? Tidak masalah, cukup ketik “oc get project” untuk menampilkan daftar lengkapnya. Skeptis bertanya-tanya bagaimana cara kerjanya jika Anda hanya memiliki akses ke subset namespace terbatas di cluster? Ya, karena kubectl hanya melakukan ini dengan benar jika RBAC mengizinkan Anda melihat semua ruang di cluster, dan di cluster besar tidak semua orang diberikan izin seperti itu. Jadi, kami menjawab: bagi OC hal ini tidak menjadi masalah sama sekali dan akan dengan mudah menghasilkan daftar lengkap dalam situasi seperti ini. Hal-hal kecil inilah yang membentuk orientasi korporat Openshift dan skalabilitas yang baik dari platform ini dalam hal pengguna dan aplikasi

2. ODO - versi kubectl yang ditingkatkan untuk pengembang

Contoh lain dari peningkatan Red Hat OpenShift atas Kubernetes adalah utilitas baris perintah ODO. Ini dirancang untuk pengembang dan memungkinkan Anda menyebarkan kode lokal dengan cepat ke cluster OpenShift jarak jauh. Ini juga dapat menyederhanakan proses internal untuk secara instan menyinkronkan semua perubahan kode ke kontainer di cluster OpenShift jarak jauh tanpa harus membuat ulang, mendaftarkan, dan menerapkan ulang gambar.

Mari kita lihat bagaimana OC dan ODO membuat bekerja dengan container dan Kubernetes menjadi lebih mudah.

Bandingkan saja beberapa alur kerja saat dibuat berdasarkan kubectl, dan saat OC atau ODO digunakan.

• Penerapan kode di OpenShift bagi mereka yang tidak bisa berbahasa YAML:

Kubernetes/kubectl
$>git klon github.com/sclorg/nodejs-ex.git
1- Buat Dockerfile yang membuat image dari kode
-----
DARI simpul
WORKDIR /usr/src/app
SALIN paket*.json ./
SALIN indeks.js ./
SALIN ./app ./app
JALANKAN instalasi npm
Paparan 3000
CMD [ “npm”, “mulai” ] ————–
2- Kami membangun citra
$>pembangunan podman...
3- Masuk ke registri
login podman...
4- Tempatkan gambar di registri
dorongan podman
5- Buat file yaml untuk penerapan aplikasi (deployment.yaml, service.yaml, ingress.yaml) - ini adalah jumlah minimum absolut
6- Menyebarkan file manifes:
Kubectl terapkan -f .

OpenShift/ok
$> oc aplikasi baru github.com/sclorg/nodejs-ex.git – nama_aplikasi_kami

OpenShift/odo
$>git klon github.com/sclorg/nodejs-ex.git
$> odo membuat komponen nodejs myapp
$>tidak mendorong

• Peralihan konteks: mengubah namespace kerja atau cluster kerja.

Kubernetes/kubectl
1- Buat konteks di kubeconfig untuk proyek “proyek saya”
2- konteks set kubectl…

OpenShift/ok
oc proyek "proyek saya"

Kontrol kualitas: “Satu fitur menarik telah muncul di sini, masih dalam versi alpha. Mungkin kita bisa memasukkannya ke dalam produksi?”

Bayangkan Anda sedang duduk di dalam mobil balap dan diberi tahu: “Kami telah memasang rem jenis baru dan, sejujurnya, keandalannya masih belum baik... Namun jangan khawatir, kami akan secara aktif meningkatkannya selama kursus. kejuaraan.” Bagaimana Anda menyukai prospek ini? Kami di Red Hat entah bagaimana tidak terlalu senang. 🙂

Oleh karena itu, kami mencoba untuk menunda versi alfa hingga cukup matang dan kami telah melakukan pengujian pertempuran secara menyeluruh dan merasa aman untuk digunakan. Biasanya, semuanya melewati tahap Pratinjau Dev terlebih dahulu, baru kemudian melalui Pratinjau Teknologi dan baru kemudian keluar sebagai rilis publik Ketersediaan Umum (GA) yang sudah sangat stabil sehingga layak untuk diproduksi.

Mengapa demikian? Sebab, seperti halnya pengembangan perangkat lunak lainnya, tidak semua ide awal di Kubernetes mencapai rilis final. Atau mereka mencapainya dan bahkan mempertahankan fungsionalitas yang diinginkan, tetapi implementasinya sangat berbeda dari versi alfa. Dengan ribuan pelanggan Red Hat yang menggunakan OpenShift untuk mendukung beban kerja yang sangat penting, kami memberikan penekanan khusus pada stabilitas platform kami dan dukungan jangka panjang.

Red Hat berkomitmen untuk sering merilis OpenShift dan memperbarui versi Kubernetes yang menyertainya. Misalnya, rilis GA OpenShift 4.3 saat artikel ini ditulis menyertakan Kubernetes 1.16, yang hanya tertinggal satu unit dari versi upstream Kubernetes bernomor 1.17. Oleh karena itu, kami mencoba menyediakan Kubernetes kelas perusahaan kepada pelanggan dan memberikan kontrol kualitas tambahan saat kami merilis versi baru OpenShift.

Perbaikan perangkat lunak: “Ada lubang pada versi Kubernetes yang kami produksi. Dan Anda dapat menutupnya hanya dengan memperbarui tiga versi ke atas. Atau apakah ada pilihan?

Dalam proyek sumber terbuka Kubernetes, perbaikan perangkat lunak biasanya dirilis sebagai bagian dari rilis berikutnya, terkadang mencakup satu atau dua rilis penting sebelumnya, sehingga memberikan cakupan hanya dalam 6 bulan.

Red Hat bangga dapat merilis perbaikan penting lebih awal dibandingkan yang lain dan memberikan dukungan lebih lama. Ambil contoh kerentanan eskalasi hak istimewa Kubernetes (CVE-2018-1002105): ditemukan di Kubernetes 1.11, dan perbaikan untuk rilis sebelumnya hanya dirilis hingga versi 1.10.11, sehingga perbaikan ini tidak ada di semua rilis Kubernetes sebelumnya, dari 1.x hingga 1.9.

Pada gilirannya, Red Hat menambal OpenShift kembali ke versi 3.2 (Kubernetes 1.2 ada di sana), menangkap sembilan rilis OpenShift dan dengan jelas menunjukkan kepedulian terhadap pelanggan (detail lebih lanjut di sini).

Bagaimana OpenShift dan Red Hat memajukan Kubernetes

Red Hat merupakan kontributor perangkat lunak terbesar kedua untuk proyek open source Kubernetes, setelah Google, dengan 3 dari 5 pengembang paling produktif berasal dari Red Hat. Fakta lain yang kurang diketahui: banyak fungsi penting muncul di Kubernetes tepatnya atas inisiatif Red Hat, khususnya, seperti:

  • RBAC. Kubernetes tidak memiliki fungsi RBAC (ClusterRole, ClusterRoleBinding) sampai para insinyur Red Hat memutuskan untuk mengimplementasikannya sebagai bagian dari platform itu sendiri, dan bukan sebagai fungsionalitas OpenShift tambahan. Apakah Red Hat takut untuk meningkatkan Kubernetes? Tentu saja tidak, karena Red Hat secara ketat mengikuti prinsip open source dan tidak memainkan game Open Core. Perbaikan dan inovasi yang didorong oleh komunitas pengembangan, bukan komunitas yang berpemilik, lebih dapat dilaksanakan dan diadopsi secara lebih luas, yang sejalan dengan tujuan utama kami untuk menjadikan perangkat lunak sumber terbuka lebih berguna bagi pelanggan kami.
  • Kebijakan Keamanan untuk pod (Kebijakan Keamanan Pod). Konsep menjalankan aplikasi dengan aman di dalam pod awalnya diimplementasikan di OpenShift dengan nama SCC (Security Context Constraints). Dan seperti pada contoh sebelumnya, Red Hat memutuskan untuk memperkenalkan pengembangan ini ke dalam proyek terbuka Kubernetes sehingga semua orang dapat menggunakannya.

Rangkaian contoh ini dapat dilanjutkan, namun kami hanya ingin menunjukkan bahwa Red Hat benar-benar berkomitmen untuk mengembangkan Kubernetes dan menjadikannya lebih baik bagi semua orang.

Jelas bahwa OpenShift adalah Kubernetes. Apa perbedaannya? 🙂

Kami berharap dengan membaca sejauh ini Anda telah menyadari bahwa Kubernetes adalah komponen inti OpenShift. Yang utama, tapi jauh dari satu-satunya. Dengan kata lain, menginstal Kubernetes saja tidak akan memberi Anda platform kelas perusahaan. Anda harus menambahkan autentikasi, jaringan, keamanan, pemantauan, manajemen log, dan banyak lagi. Selain itu, Anda harus membuat beberapa pilihan sulit dari banyaknya alat yang tersedia (untuk menghargai keanekaragaman ekosistem, lihat saja bagan CNCF) dan memastikan konsistensi dan koherensi sehingga berfungsi sebagai satu kesatuan. Selain itu, Anda perlu melakukan pembaruan dan pengujian regresi secara rutin setiap kali versi baru komponen yang Anda gunakan dirilis. Artinya, selain membuat dan memelihara platform itu sendiri, Anda juga perlu menangani semua perangkat lunak ini. Kecil kemungkinannya akan ada banyak waktu tersisa untuk menyelesaikan masalah bisnis dan mencapai keunggulan kompetitif.

Namun dalam kasus OpenShift, Red Hat mengatasi semua kerumitan ini dan memberi Anda platform yang lengkap secara fungsional, yang tidak hanya mencakup Kubernetes itu sendiri, tetapi juga seluruh rangkaian alat sumber terbuka yang diperlukan yang mengubah Kubernetes menjadi kelas perusahaan yang sesungguhnya. solusi yang dapat Anda luncurkan dengan segera dan sepenuhnya dengan tenang ke dalam produksi. Dan tentu saja, jika Anda memiliki beberapa tumpukan teknologi sendiri, Anda dapat mengintegrasikan OpenShift ke dalam solusi yang ada.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
OpenShift adalah platform Kubernetes yang cerdas

Lihatlah gambar di atas: segala sesuatu yang berada di luar persegi panjang Kubernetes adalah tempat Red Hat menambahkan fungsionalitas yang tidak dimiliki Kubernetes, seperti yang mereka katakan, secara desain. Dan sekarang kita akan melihat area utama ini.

1. OS yang kuat sebagai basis: RHEL CoreOS atau RHEL

Red Hat telah menjadi penyedia distribusi Linux terkemuka untuk aplikasi bisnis penting selama lebih dari 20 tahun. Pengalaman kami yang terakumulasi dan terus diperbarui di bidang ini memungkinkan kami menawarkan dasar yang benar-benar andal dan tepercaya untuk pengoperasian industri kontainer. RHEL CoreOS menggunakan kernel yang sama dengan RHEL, tetapi dioptimalkan terutama untuk tugas-tugas seperti menjalankan container dan menjalankan cluster Kubernetes: ukurannya yang lebih kecil dan kekekalan membuatnya lebih mudah untuk menyiapkan cluster, melakukan penskalaan otomatis, menerapkan patch, dll. landasan ideal untuk menghadirkan pengalaman pengguna yang sama dengan OpenShift di berbagai lingkungan komputasi, mulai dari bare metal hingga private cloud dan public cloud.

2. Otomatisasi operasional TI

Otomatisasi proses instalasi dan operasi sehari-hari (yaitu, operasi sehari-hari) adalah keunggulan OpenShift, membuatnya lebih mudah untuk mengelola, memperbarui, dan menjaga kinerja platform kontainer pada tingkat tertinggi. Hal ini dicapai melalui dukungan untuk operator Kubernetes di level kernel OpenShift 4.

OpenShift 4 juga merupakan keseluruhan ekosistem solusi berdasarkan operator Kubernetes, yang dikembangkan baik oleh Red Hat sendiri maupun oleh mitra pihak ketiga (lihat. direktori operator Red Hat, atau toko operator operatorhub.io, dibuat oleh Red Hat untuk pengembang pihak ketiga).

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Katalog OpenShift 4 yang terintegrasi mencakup lebih dari 180 operator Kubernetes

3. Alat Pengembang

Sejak 2011, OpenShift telah tersedia sebagai platform PaaS (Platform-as-a-Service) yang membuat hidup lebih mudah bagi pengembang, membantu mereka fokus pada pengkodean, dan menawarkan dukungan asli untuk bahasa pemrograman seperti Java, Node.js , PHP, Ruby, Python, Go, serta integrasi berkelanjutan CI/CD dan layanan pengiriman, database, dll. Penawaran OpenShift 4 katalog yang luas, yang mencakup lebih dari 100 layanan berbasis operator Kubernetes yang dikembangkan oleh Red Hat dan mitra kami.

Tidak seperti Kubernetes, OpenShift 4 memiliki GUI khusus (Konsol Pengembang), yang membantu pengembang dengan mudah menyebarkan aplikasi dari berbagai sumber (git, registry eksternal, Dockerfile, dll.) ke dalam namespace mereka dan dengan jelas memvisualisasikan hubungan antar komponen aplikasi.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Konsol Pengembang memberikan gambaran yang jelas tentang komponen aplikasi dan memudahkan penggunaan Kubernetes

Selain itu, OpenShift menawarkan seperangkat alat pengembangan Codeready, yang khususnya mencakup Ruang Kerja Siap Kode, IDE yang sepenuhnya terkontainer dengan antarmuka web yang berjalan langsung di atas OpenShift dan mengimplementasikan pendekatan IDE-as-a-service. Di sisi lain, bagi mereka yang ingin bekerja secara ketat dalam mode lokal, terdapat Codeready Containers, versi OpenShift 4 yang berfungsi penuh dan dapat diterapkan di laptop.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
IDE terintegrasi sebagai layanan untuk pengembangan yang efisien pada platform Kubernetes/OpenShift

OpenShift menawarkan sistem CI/CD lengkap, baik berdasarkan Jenkins dalam container dan sebuah plugin DSL untuk bekerja dengan pipeline, atau sistem CI/CD yang berorientasi Kubernetes Tecton (saat ini dalam versi pratinjau Teknologi). Kedua solusi ini terintegrasi sepenuhnya dengan konsol OpenShift, memungkinkan Anda menjalankan pemicu pipeline, melihat penerapan, log, dan banyak lagi.

4. Alat Aplikasi

OpenShift memungkinkan Anda menerapkan aplikasi stateful tradisional dan solusi berbasis cloud berdasarkan arsitektur baru, seperti layanan mikro atau tanpa server. Solusi OpenShift Service Mesh hadir dengan alat utama untuk memelihara layanan mikro, seperti Istio, Kiali, dan Jaeger. Pada gilirannya, solusi OpenShift Serverless tidak hanya mencakup Knative, tetapi juga alat seperti Keda yang dibuat sebagai bagian dari inisiatif bersama dengan Microsoft untuk menyediakan fungsi Azure pada platform OpenShift.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Solusi terintegrasi OpenShift ServiceMesh (Istio, Kiali, Jaeger) akan berguna saat mengembangkan layanan mikro

Untuk menjembatani kesenjangan antara aplikasi lama dan container, OpenShift kini memungkinkan migrasi mesin virtual ke platform OpenShift menggunakan Container Native Virtualization (saat ini dalam TechPreview), menjadikan aplikasi hibrid menjadi kenyataan dan memfasilitasi migrasinya antara cloud yang berbeda, baik privat maupun publik.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Mesin virtual virtual Windows 2019 berjalan di OpenShift melalui Container Native Virtualization (saat ini dalam versi pratinjau Teknologi)

5. Alat untuk cluster

Setiap platform kelas perusahaan harus memiliki layanan pemantauan dan pencatatan terpusat, mekanisme keamanan, otentikasi dan otorisasi, serta alat manajemen jaringan. Dan OpenShift menyediakan semua ini secara langsung, dan semuanya 100% open source, termasuk solusi seperti ElasticSearch, Prometheus, Grafana. Semua solusi ini hadir dengan dasbor, metrik, dan peringatan yang telah dibuat dan dikonfigurasi menggunakan keahlian pemantauan klaster Red Hat yang ekstensif, memungkinkan Anda mengontrol dan memantau lingkungan produksi Anda secara efektif sejak awal.

OpenShift juga hadir standar dengan hal-hal penting bagi pelanggan korporat seperti otentikasi dengan penyedia oauth bawaan, integrasi dengan penyedia kredensial, termasuk LDAP, ActiveDirectory, OpenID Connect, dan banyak lagi.

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Dasbor Grafana yang telah dikonfigurasi sebelumnya untuk pemantauan cluster OpenShift

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
Lebih dari 150 metrik dan peringatan Prometheus yang telah dikonfigurasi sebelumnya untuk pemantauan cluster OpenShift

Untuk dilanjutkan

Fungsionalitas solusi yang kaya dan pengalaman Red Hat yang luas di bidang Kubernetes adalah alasan mengapa OpenShift mencapai posisi dominan di pasar, seperti yang ditunjukkan pada gambar di bawah ini (baca selengkapnya di sini).

OpenShift sebagai Kubernetes versi perusahaan. Bagian 1
“Red Hat saat ini memimpin pasar dengan pangsa 44%.
Perusahaan ini memperoleh manfaat dari strategi penjualan yang berpusat pada pelanggan, di mana perusahaan pertama-tama berkonsultasi dan melatih pengembang perusahaan dan kemudian beralih ke monetisasi ketika perusahaan mulai menerapkan kontainer ke dalam produksi.”

(Sumber: www.lightreading.com/nfv/containers/ihs-red-hat-container-strategy-is-paying-off/d/d-id/753863)

Kami harap Anda menikmati artikel ini. Pada postingan selanjutnya di seri ini, kita akan melihat lebih dekat keunggulan OpenShift dibandingkan Kubernetes di setiap kategori yang dibahas di sini.

Sumber: www.habr.com

Tambah komentar