PuppetConf 2016. Kubernetes untuk administrator sistem. Bagian 3

PuppetConf 2016. Kubernetes untuk administrator sistem. Bagian 1 dari
PuppetConf 2016. Kubernetes untuk administrator sistem. Bagian 2

Kami mengambil aplikasi Lobster dan membuat gambar baru dengan persyaratan baru. Pertama, masukkan perintah penyebaran $ kubectl apply –f deployments / lobster.yaml dan kirim aplikasi ke cluster, yang akan melakukan pembaruan pembaruan yang bergulir untuk setiap instance aplikasi yang tersedia sesuai dengan kebijakan pembaruan. Pertama, sistem memastikan bahwa setiap instance beroperasi, dan kemudian menghancurkannya di set wadah berikutnya.



Mari kita lihat bagaimana cara kerjanya. Untuk melakukan ini, kami memuat ulang situs, dan sekarang kurangnya titik putih akan membuat pemasar kami senang.



Sebagai administrator sistem, Anda dapat mengatakan: "Tidak ada HTTPS di sini, situs seperti itu mudah diretas, berbahaya!" Bagaimana mengatasi masalah ini? Saya pikir dalam solusinya Kubernetes dapat bertindak sebagai kerangka kerja yang memungkinkan administrator sistem untuk menerapkan pendekatan kreatif untuk bekerja. Akan lebih baik jika saya dapat secara deklaratif mengatakan: "Saya ingin mendapatkan sertifikat Let's Encrypt untuk situs ini, tetapi saya tidak ingin menggunakan kembali wadah ini." Saya ingin melakukan ini sesuai kemampuan saya, tanpa meminta bantuan tim pengembangan aplikasi. Kubernet memungkinkan ini, karena mendukung ekstensi khusus.

Saya berbicara tentang kubectl, pod, penyebaran, layanan, tetapi kami juga memiliki jenis khusus - jenis sumber daya khusus yang dapat diperoleh dari Wayang. Di Puppet, kita dapat mendefinisikan tipe baru, sehingga kita dapat menggunakan sistem ini untuk pekerjaan kita.
Mari kita lihat tampilannya di Kubernetes. Pertama-tama, kita memerlukan ekstensi untuk sertifikat, begini tampilannya. Di sini kita memiliki namespace hightower.com kita sendiri, di mana objek tersertifikasi berada.



Kami membuat ekstensi baru di Kubernetes menggunakan perintah $ kubectl create –f extensions / Certificate.yaml, dan penyimpanan secara otomatis dibuat di backend dan keadaan ini dikelola.



Tampilan objek baru ini mengharuskan saya untuk menggunakan alat baru yang melacak perubahan dan mengambil tindakan pada objek sertifikat. Artinya, alat ini di latar belakang harus berinteraksi dengan Let's Encrypt dan mendapatkan sertifikat yang valid. Untuk ini saya menggunakan rahasia - saya akan menunjukkan dengan sangat cepat bagaimana ini dilakukan.

Jadi, kita perlu sub baru, dan saya akan menunjukkan apa perbedaannya dibandingkan dengan kode sebelumnya. Saya menambahkan nginx ke wadah yang ada, jadi kami tidak perlu menghubungi tim pengembangan. Kami terus menggunakan HTTPS dengan hanya menempatkan wadah di bagian paling atas dari perapian yang ada.



Kontainer ini menerima lalu lintas HTTPS dan membutuhkan file konfigurasi untuk berinteraksi dengan backend. Saya juga memerlukan beberapa sertifikat yang mengunduh nginx dari sistem file, sehingga variabel lingkungan tidak berfungsi di sini. Saya tidak menulis nginx, jadi saya tidak bisa membuatnya melakukan ini.



Jadi saya hanya menambahkan wadah ini tepat di dalam perapian dan beralih ke dua rahasia.



Rahasia pertama dan paling penting adalah sertifikat TLS, yang seharusnya berasal dari Let's Encrypt. Saya tidak akan melaporkan Let's Enkripsi ke aplikasi saya, saya melaporkannya ke sistem saya. Saya ingin mengontrol abstraksi ini. Jadi sekarang saya harus membuat file konfigurasi untuk nginx. Ini adalah file konfigurasi utama yang terlihat seperti ini.

Port 443 ditentukan di sini dan SSL diaktifkan, yang mencari 2 file ini dalam sistem file, menangkap lalu lintas dan mengirimkannya ke host lokal 127.0.0.1 {000.



Inilah yang didengarkan aplikasi saya. Sekarang saya akan membuat configmap - peta konfigurasi nginx menggunakan perintah berikut.



Sekarang, dengan menggunakan perintah $ kubectl get configmaps, saya menempatkan configmap “nginx” pada sistem dengan nama yang sama dengan disk.



Selanjutnya, Anda perlu membuat rahasia, saya ingatkan lagi - Saya ingin semuanya otomatis, dan saya tidak ingin ikut campur dalam proses mendapatkan sertifikat. Untuk melakukan ini, saya menggunakan alat yang disebut "kube-cert-manager", dan inilah hasilnya.



Kami mencoba untuk mendapatkan sertifikat Let's Encrypt yang valid, yang akan dipercayai oleh browser saya, dan masukkan ke backend sebagai rahasia. Oleh karena itu, untuk perapian saya tidak akan ada perbedaan dalam kenyataan bahwa kami telah menambah isinya. Jika Anda ingat, semua ini dilakukan dengan membuat jenis kustom di Wayang.

Mungkin ini adalah ide yang buruk, tetapi sekarang saya akan mencoba untuk memulai controller, yang akan berfungsi di latar belakang. Kami tidak mengkompilasi, kami tidak membuat penyedia, daemon ini hanya berfungsi di latar belakang dan menonton perubahan. Segera setelah objek sertifikat muncul, ia menerimanya dengan Let's Encrypt dan memasukkannya ke dalam sistem secara real time tanpa penundaan. Jadi, saya menggunakan perintah berikut.



Benda ini juga memiliki penyimpanan, sehingga kami dapat menyimpan semua yang kami butuhkan. Butuh beberapa detik bagi manajer sertifikasi manajer kubus-sertifikasi untuk mulai bekerja.



Hal berikutnya yang perlu kita lakukan adalah membuat objek sertifikat. Ini yang saya definisikan sendiri, ini skema saya sendiri. Saya membuat hal baru yang belum dipenuhi Kubernetes sampai saat ini, yang mengatakan bahwa saya bisa mendapatkan sertifikat untuk domain lobsters.com.



Ada alamat email dan informasi lain yang diperlukan agar Let's Encrypt memberi saya sertifikat yang valid. Let's Encrypt akan mengirimkan saya token pertukaran untuk melihat apakah saya benar-benar memiliki domain ini dan saya perlu menerapkan token ini ke DNS saya di Google Cloud. Jika cek lolos, mereka akan memberi saya sertifikat nyata, yang akan saya masukkan ke sistem file saya. Mari kita lihat bagaimana ini bekerja dengan memasukkan perintah $ kubectl get pods.



Seperti yang Anda lihat, manajer sertifikat masih berfungsi. Mari kita lihat informasi terperinci tentang proses ini menggunakan $ kubectl mendeskripsikan perintah kube-cert-manager, memasukkan nama kontainer dari baris pertama kode.



Anda melihat bahwa pekerjaan yang dijadwalkan sedang berlangsung. Saat ini, server membuat volume yang, setelah memeriksa dan memformat, akan dipasang di server ini. Sementara proses ini sedang berlangsung, kita bisa melangkah lebih jauh dan menyelesaikan pekerjaan kita.

Saya memasukkan perintah kubectl create –f Certificate / lobsters.yaml dan mendapatkan hasil berikut.



Selanjutnya, saya menggunakan perintah yang memungkinkan Anda untuk melihat log beberapa kontainer. Saya akan menyoroti yang berhubungan dengan objek saya.



Sekarang catatan DNS sedang dibuat di dalam server DNS berbasis cloud saya. Jika saya menyegarkan halaman yang ditampilkan di sini, saya akan melihat token pertukaran baru dengan ekstensi .txt.



Jadi, saya menerima token dari Let's Encrypt dan sekarang saya memverifikasi bahwa catatan DNS ini telah didistribusikan ke semua server yang berwenang sebelum saya memberitahu Let's Encrypt untuk memeriksa entri teks ini di domain saya.



Jika ini berhasil, mereka akan mengirim saya sertifikat yang valid kembali. Demonstrasi DNS waktu-nyata adalah ide yang buruk. Ya, kami akhirnya mendapatkan sertifikat. Let's Encrypt memperhatikan bahwa sertifikat menghilang dari Kubernetes, dan memasukkannya ke sana. Ini bagus, karena sekarang saya sudah memiliki antarmuka permintaan sertifikat untuk semua yang berjalan di Kubernetes.

Untuk memastikan semuanya bekerja dengan benar, saya memasukkan perintah $ kubectl get secrets dan kami melihat satu rahasia untuk lobster.hightowerlabs.com.



Sekarang saya menggunakan perintah $ kubectl delete secrets lobsters.hightowerlabs.com, karena ini adalah sistem deklaratif, kami tidak menghapus objek sertifikat, tetapi menyingkirkan rahasia yang terkait dengan itu terletak di dalam Kubernetes. Akibatnya, kita harus memastikan bahwa ketika elemen ini dihapus, sistem akan mengembalikan sertifikat Let's Encrypt itu sendiri. Ini sangat mirip dengan apa yang kita lakukan di Wayang, hanya di sini terjadi secara online.

Setelah memastikan bahwa semuanya berfungsi, kami menggunakan kembali aplikasi nginx kami yang disebut "lobster-secure", yang akan memastikan keamanan domain baru. Gambarnya mirip dengan versi sebelumnya, tetapi perbedaannya adalah kita meletakkan nginx di sini. Nginx mengambil tautan rahasia, lalu Kubernetes memasukkannya ke dalam sistem file, sebagai hasilnya saya mendapatkan sertifikat yang valid untuk domain tertentu.

Untuk melakukan ini, saya memasukkan perintah $ kubectl apply –f deployments / lobster-secure.yaml menggunakan nama yang sama sehingga perintah ini menimpa status yang ada. Selanjutnya, perintah $ kubectl get pods digunakan, yang menunjukkan bahwa rolling rolling sedang terjadi di sini sekarang, karena definisi kami telah berubah.

Setelah pembaruan selesai, jelaslah bahwa definisi baru digunakan untuk aplikasi ini. Saya ingin memastikan sertifikat itu valid untuk nama DNS kami, yang saya masukkan perintah $ kubectl dapatkan svc dan salin alamat IP dari situs lobster.



Dengan membuka tab Google Cloud, Anda dapat melihat bahwa alamat ini cocok dengan alamat yang terkait dengan nama domain lobster.hightowerlabs.com. Sekarang, jika Anda mengetik lobster.hightowerlabs.com di bilah alamat browser Anda, Anda dapat melihat bahwa kami memiliki sertifikat yang valid.



Terima kasih, itu saja yang ingin saya sampaikan dalam laporan Kubernetes untuk Admin Sistem.


Sedikit iklan :)


Terima kasih untuk tetap bersama kami. Apakah Anda suka artikel kami? Ingin melihat materi yang lebih menarik? Dukung kami dengan melakukan pemesanan atau merekomendasikan kepada teman Anda VPS berbasis cloud untuk pengembang mulai $ 4,99 , analog unik dari server entry-level yang diciptakan oleh kami untuk Anda: Seluruh kebenaran tentang VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps mulai dari $ 19 atau cara membagi server? (opsi tersedia dengan RAID1 dan RAID10, hingga 24 core dan hingga 40GB DDR4).

Dell R730xd 2 kali lebih murah di pusat data Equinix Tier IV di Amsterdam? Hanya kami yang memiliki 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV dari $ 199 di Belanda!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - mulai dari $ 99! Baca tentang Cara Membangun Infrastruktur Bldg. kelas c menggunakan server Dell R730xd E5-2650 v4 seharga 9.000 euro untuk satu sen?

All Articles