GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Cara Menyebarkan Tumpukan Tulis Docker ke Kubernetes dengan Kompose

Docker Compose memungkinkan Anda menentukan tumpukan container yang dapat Anda kelola secara kolektif. Ini adalah alat yang relatif sederhana yang awalnya berfokus pada instalasi Docker lokal.

Kubernetes adalah orkestra wadah yang dilengkapi dengan rantai alat dan file manifesnya sendiri. Biasanya terlihat lebih kompleks daripada alur kerja Docker biasa, tetapi kemampuannya memfasilitasi penerapan container skalabel dalam produksi.

Kompose adalah alat yang memungkinkan Anda mengambil file Docker Compose dan menyebarkannya ke cluster Kubernetes. Ini dikembangkan sebagai bagian dari proyek Kubernetes.

Versi Kompose saat ini terbatas pada konversi file YAML. Anda harus menerapkan manifes sumber daya Kubernetes yang dikonversi ke cluster Anda menggunakan alat seperti Kubectl. Versi Kompose yang lebih lama memiliki up bawaan perintah yang dapat diterapkan langsung ke cluster Anda tanpa langkah konversi perantara. Ini telah dihapus karena meningkatnya kompleksitas teknis.

Memulai

Kompose tersedia untuk Windows, macOS, dan distribusi Linux paling populer. Binari yang dibuat sebelumnya tersedia dari repositori GitHub-nya. Unduh rilis terbaru, atur bit izin yang dapat dieksekusi, dan pindahkan biner ke direktori yang ada di jalur Anda. Beberapa pengelola paket juga didukung.

curl -L https://github.com/kubernetes/kompose/releases/download/v1.23.0/kompose-linux-amd64 -o komposechmod +x komposesudo mv ./kompose /usr/local/bin/kompose 

Coba jalankan kompose di terminal Anda. Anda akan melihat beberapa informasi dasar tentang perintah yang tersedia. Menjalankan kompose version memeriksa versi Kompose yang Anda gunakan.

Sekarang, pastikan Anda memiliki docker-compose.yml berkas tersedia. Berikut adalah contoh dasar yang menyiapkan server web Apache dengan database MySQL:

versi:"3" layanan:apache:image:httpd:port terbaru:- 80:80 mysql:image:mysql:ekspos terbaru:- 3306 volume:- mysql:/var/lib/mysqlvolumes:mysql: 

Anda juga memerlukan cluster Kubernetes untuk di-deploy. Buat cluster baru dengan penyedia cloud publik atau buat cluster Anda sendiri menggunakan project seperti MicroK8s.

Mengonversi Tumpukan Anda

kompose convert perintah menerima jalur ke file Docker Compose dan memancarkan manifes sumber daya Kubernetes yang setara. Ia menggunakan docker-compose.yml di direktori kerja Anda ketika tidak ada jalur yang diberikan. Beberapa file diterima melalui -f bendera.

kompose convert -f docker-compose.yml -f docker-compose-dev.yml

Anda akan melihat beberapa baris output saat Kompose menulis file manifes untuk setiap sumber daya di tumpukan Compose Anda. File individual dibuat untuk setiap komponen docker-compose.yml . Anda . Mereka akan ditempatkan ke direktori kerja Anda.

Berikut hasil konversi docker-compose.yml ditunjukkan di atas:

Penerapan dan layanan Kubernetes telah dibuat untuk setiap layanan Compose. Resource ini menentukan Pod yang akan dibuat serta aturan perutean jaringannya.

PersistentVolumeClaim juga ada untuk wadah MySQL. Ini mewakili volume yang dikonfigurasi di docker-compose.yml , menyediakan penyimpanan persisten untuk database MySQL yang bertahan lebih lama dari setiap Pod.

Jika Anda memeriksa file YAML, Anda akan melihat bahwa itu hanyalah manifes Kubernetes biasa yang kompatibel dengan Kubectl. Berikut apache-deployment.yaml yang dikonversi berkas:

apiVersion:apps/v1kind:Deploymentmetadata:annotations:kompose.cmd:kompose convert kompose.version:1.23.0 (bc7d9f4f) creationTimestamp:null labels:io.kompose.service:Apache name:Apachespec:replicas:1 selector:matchLabels:io.kompose.service:apache strategy:{} template:metadata:annotations:kompose.cmd:kompose convert kompose.version:1.23.0 (bc7d9f4f) creationTimestamp:null labels:io.kompose.service:Apache spec:containers :- gambar:httpd:nama terbaru:port apache:- containerPort:80 sumber daya:{} restartPolicy:Alwaysstatus:{}

spec penerapan ini sangat mirip dengan definisi wadah Apache di docker-compose.yml asli . Dalam hal layanan sederhana ini, layanan ini dengan mudah dipetakan ke objek Kubernetes. Sisa file sebagian besar mengatur metadata, termasuk anotasi khusus Kompose yang memungkinkan Anda mengidentifikasi sumber daya yang dibuat dengan alat tersebut.

Menyebarkan ke Cluster Anda

Deploy kumpulan file manifes dengan cara biasa dengan kubectl apply . Sebaiknya simpan di direktori terpisah ke docker-compose.yml Anda , sehingga kubectl tidak mencoba memilih file yang tidak kompatibel itu juga.

kubectl berlaku .

Sumber daya akan disediakan di dalam cluster Anda. Mungkin perlu beberapa menit agar layanan Anda berjalan. Periksa penerapan Anda dengan kubectl get deployments . Saat AVAILABLE kolom menunjukkan 1 , beban kerja Anda harus dapat diakses.

Sekarang, Anda dapat memperbarui penerapan Anda dengan mengedit manifes yang dihasilkan dan menjalankan kembali kubectl apply . Jika Anda ingin menskalakan Apache menjadi tiga replika, buka apache-deployment.yaml , ubah replicas bidang ke 3 , dan terapkan manifes yang dimodifikasi.

Anda juga dapat terus memperbarui file Tulis Docker Anda. Jalankan kompose convert lagi untuk mendapatkan interpretasi Kubernetes terbaru dari kontennya, dan kemudian menerapkan kembali output ke cluster Anda. Ketahuilah bahwa ini akan menimpa setiap perubahan yang telah Anda terapkan secara manual sejak itu.

Batasan

Kompose biasanya bekerja dengan baik dengan file Docker Compose menggunakan fitur paling umum dan praktik terbaik. Itu dapat membuat container, mengekspos port, dan menyediakan penyimpanan persisten melalui volume.

Namun, tidak setiap konversi akan sempurna. Beberapa kemampuan Compose tidak memiliki padanan langsung di dunia Kubernetes, sementara yang lain akan memetakan dengan cara yang mungkin tidak memenuhi kebutuhan Anda. Penggunaan penerapan dan layanan dalam contoh ini adalah salah satunya—jika Anda menerapkan langsung ke Kubernetes, Anda mungkin menggunakan aturan Ingress untuk mengekspos layanan Anda, tetapi ini tidak dibuat oleh Kompose. Keputusan beropini diselesaikan dengan mengambil opsi yang paling sederhana.

Anda juga akan mengalami masalah seputar volume. File Docker Compose dapat mengikat file dan folder mount dari Host ke dalam wadah. Ini tidak mungkin dilakukan dengan Kubernetes, jadi Anda memerlukan solusi alternatif. Selain itu, meskipun Kompose dapat membuat sumber daya untuk PersistentVolumeClaims, itu tidak akan membuat PersistentVolumes yang sebenarnya. Anda harus memiliki volume yang sudah tersedia dalam kluster sebelum mencoba menerapkan manifes.

Tabel lengkap fitur yang didukung dan detail konversi ditawarkan sebagai bagian dari dokumentasi Kompose. Sebaiknya periksa apakah fitur Docker Compose yang Anda gunakan didukung sebelum Anda memulai upaya konversi apa pun.

Kesimpulan

Kompose menyederhanakan migrasi dari Docker Compose ke cluster Kubernetes. Ini mengotomatiskan langkah-langkah yang sebelumnya membosankan, memakan waktu, dan rawan kesalahan. Ini adalah bantuan yang baik, meskipun bukan alat yang harus dijalankan tanpa tingkat pengawasan.

Konversi komposisi tidak berlaku secara universal, sehingga tidak akan cocok untuk semua lingkungan. Itu selalu layak untuk memeriksa manifes yang dipancarkan sebelum Anda menerapkannya ke cluster Anda. Dalam beberapa kasus, sebaiknya gunakan Kompose sebagai referensi—konversi docker-compose.yml Anda , lihat hasilnya, lalu gunakan itu sebagai titik awal untuk membuat manifes yang sepenuhnya kompatibel dengan aplikasi dan cluster Anda.


Docker
  1. Cara Menyebarkan Server DNS Dinamis dengan Docker di Debian 10

  2. Cara Mengamankan Data Sensitif Dengan Rahasia Penulisan Docker

  3. Cara Menggunakan Profil Layanan untuk Menyederhanakan Tumpukan di Docker Compose

  1. Cara Menginstal Jenkins dengan Docker

  2. Cara Menyebarkan Layanan Mikro dengan Docker

  3. Cara Menggunakan Tulis Docker

  1. Cara Menyebarkan RabbitMQ di Kubernetes

  2. Cara Menyebarkan Aplikasi dengan Rancher

  3. Cara Menyebarkan Wadah nginx dengan Docker di Linode