Lewati ke konten utama

Container Redeploy

Mayoritas solusi berbasis Docker (termasuk stacks yang di-manage oleh platform) terus dikembangkan, menghadirkan versi produk serta perbaikan baru. Oleh karena itu, disarankan untuk memperbarui template Anda secara teratur ke tag terbaru mereka, yaitu rilis terbaru.

Operasi seperti itu disebut redeploy dan memiliki spesifik berikut ketika dikelola di platform:

  • data pengguna custom dan file sistem sensitif dipertahankan selama update:
    • konten dari volumes (baik yang default maupun custom)
    • file yang tercantum dalam /etc/jelastic/redeploy.conf (konfigurasi khusus dari stacks), yang diperlukan untuk memastikan operabilitas container
    • konfigurasi terkait AutoFS dan NFS (/etc/autofs.jelastic , /etc/auto.master , /etc/exports)
    • firewall configurations (/etc/sysconfig/iptables-custom , /etc/sysconfig/iptables4-jelastic , /etc/sysconfig/iptables6-jelastic , /etc/iptables/rules.v4)
    • SSH access data (/root/.ssh/authorized_keys , /root/.ssh/authorized_keys2 , /root/.ssh/id_rsa)
  • semua custom configurations yang telah ditentukan sebelumnya (seperti run commands , links , variables , dll.) tidak akan terpengaruh
  • jika beroperasi dengan multiple (instances yang diskalakan secara horizontal), update dapat dilakukan pada containers satu per satu, yaitu secara implisit tanpa downtime

Dengan cara ini, Anda dapat memperbarui container berbasis Docker Anda ke tag (versi) baru tanpa mempengaruhi aplikasi di dalamnya. Dengan platform ini, redeployment container dapat dilakukan hanya dalam beberapa klik melalui dashboard UI atau dengan mudah diotomatisasi via API.

Catatan: Saat bekerja dengan database MySQL, MariaDB, atau Percona, downgrading (yaitu melakukan redeploy ke versi yang lebih rendah) tidak didukung. Jika operasi ini diperlukan, kami merekomendasikan membuat cadangan dan memulihkan database setelah redeploy (atau secara keseluruhan di container terpisah).

Untuk mempelajari tentang menyimpan atau membuat cadangan data custom selama redeploy, lihat bagian yang sesuai di bawah.

Update Container via Dashboard

Cara paling langsung dan ramah pengguna untuk melakukan redeploy tag template adalah dengan menggunakan platform dashboard. Instruksi di bawah ini akan memandu Anda melalui langkah-langkah yang diperlukan:

1. Bingkai dialog redeployment khusus dapat diakses dengan dua cara berbeda:

  • pilih tombol Redeploy Container(s) di sebelah node atau layer yang diperlukan (untuk memperbarui semua container yang terdiri sekaligus)
redeploy containers via UI
  • klik ikon pensil di sebelah versi tag layer di topology wizard (ketika Changing Environment Topology dari environment yang ada)
redeploy containers topology wizard

2. Sebagai hasilnya, bingkai Redeploy containers akan terbuka, di mana Anda dapat memilih Tag baru untuk container Anda.

redeploy containers dialog

Anda juga dapat menyesuaikan beberapa opsi tambahan:

  • Keep volumes data - jika diaktifkan, data dalam volumes akan terlindungi dari penghapusan dan akan tetap tersedia setelah redeploy
  • untuk horizontally scaled containers, Anda dapat memilih antara dua opsi deployment:
    • Simultaneous deployment - redeploy semua nodes sekaligus, lebih cepat tetapi menyebabkan downtime aplikasi singkat
    • Sequential deployment with delay - redeploy instances satu per satu dengan delay tertentu di antara operasi. Opsi ini memastikan bahwa selalu ada node running untuk memproses permintaan yang masuk (i.e. no downtime)

Setelah semua konfigurasi diatur, klik tombol Redeploy dan konfirmasikan dalam pop-up.

3. Setelah update selesai, Anda akan melihat notifikasi yang sesuai di sudut kanan atas dashboard.

successful redeploy notification

Klik tombol Show Logs untuk membuka tab yang sesuai dengan informasi tentang container yang diperbarui - Node ID , name:tag , dan Duration.

redeploy action log

Sekarang, Anda tahu cara melakukan redeploy container melalui platform dashboard.

Update Container via Platform API/CS/CLI

Proses update dapat diotomatiskan menggunakan platform API, Cloud Scripting, dan CLI (command-line interface).

tip

Contoh mendetail tentang redeploy container via CLI disediakan dalam panduan yang terhubung.

Redeploy container dilakukan dengan metode environment.Control.RedeployContainers, yang diatur dengan parameter berikut:

  • envName - nama dari lingkungan di mana container(s) perlu diredeploy

  • session - user session (atau token) identifier, digunakan untuk autentikasi

  • nodeGroup - identifier dari environment layer untuk di-update (optional)

  • nodeId - nomor identifikasi dari container tertentu untuk diredeploy (optional)

Catatan: Anda perlu menyatakan parameter nodeGroup atau nodeId untuk menentukan target operasi. Metode ini mengabaikan nodeGroup jika keduanya disediakan dan gagal jika tidak ada yang ditentukan.

  • tag - versi image untuk diterapkan

  • useExistingVolumes - atur ke true untuk mempertahankan data dalam volumes yang dipasang di dalam container yang diperbarui (optional)

  • login dan password - kredensial untuk mengakses image dari registry privat (optional)

redeploy containers API

Konstruk berikut dapat digunakan untuk mendefinisikan update container dalam automation scripts Anda:

1. Redeploy seluruh layer dari containers.

api: environment.control.RedeployContainers 
nodeGroup: {nodeGroup}
tag: {myImage}:{newTag}

Di sini:

  • {nodeGroup} - environment layer (or node group) di mana semua containers harus diupdate
  • {myImage} - nama dari image yang akan diterapkan
  • {newTag} - versi yang dibutuhkan dari image di atas

2. Memperbarui container tertentu.

api: environment.control.RedeployContainers 
nodeId: {nodeId}
tag: {myImage}:{newTag}

Di sini, nilai {nodeId} harus diganti dengan nomor ID dari node yang dibutuhkan (placeholder lainnya sama seperti contoh di atas).

Saving Custom Data during Container Redeploy

Setiap platform-managed container dilengkapi dengan file khusus /etc/jelastic/redeploy.conf, yang menyimpan daftar konfigurasi container yang kritis. Pengaturan ini secara otomatis dipertahankan oleh platform selama redeploy container. File ini dapat dengan mudah diakses melalui embedded file manager melalui shortcut Favorites.

redeploy.conf file manager shortcut

File redeploy.conf dibagi menjadi dua bagian system dan custom dan dapat digunakan untuk membuat cadangan file sistem.

System Files and Folders

system files and folders

Catatan: Jangan mengedit daftar “ system files and folders ” kecuali Anda tahu persis apa yang Anda lakukan.

Di sini, konfigurasi spesifik container yang diperlukan untuk operasi redeploy yang benar terdaftar. Beberapa file umum disediakan di semua stacks:

  • /etc/jelastic/redeploy.conf - konfigurasi redeployment saat ini sendiri (untuk menyimpan daftar file dan direktori yang diperlukan untuk disimpan selama setiap redeploy container selanjutnya)
  • ${home}/.bash_profile - berisi pengaturan shell SSH default (misalnya, pesan pengantar shell, file konfigurasi yang harus diambil, dll.)
  • /etc/sysconfig/iptables - menyimpan aturan firewall default
  • /etc/sysconfig/iptables-custom - berisi custom firewall rules
  • /var/lib/jelastic/keys - menyimpan SSH private keys yang diunggah, yang diperlukan untuk mengakses container via SSH dan untuk berinteraksi dengan containers lainnya

Juga, redeploy.conf untuk tiap jenis node tertentu mencakup file-file spesifik stack yang berbeda.

StackPath
Tomcat/opt/tomcat/conf/jelastic-ha.xml
/opt/tomcat/conf/jelastic-ssl.xml
/opt/tomcat/conf/tomcat-env.sh
/opt/tomcat/conf/variables.conf
/opt/tomcat/temp/
/var/spool/cron/tomcat
TomEE/opt/tomcat/temp/
/var/spool/cron/tomcat
GlassFish/home/jelastic/.ssh
/home/jelastic/.ssh2
/opt/glassfish/glassfish/domains/domain1/applications
/opt/glassfish/glassfish/domains/domain1/config/admin-keyfile
/opt/glassfish/glassfish/domains/domain1/config/domain.xml
/opt/glassfish/hazelcast.xml
/opt/glassfish/glassfish/domains/domain1/config/variables.conf
/opt/glassfish/glassfish/domains/domain1/docroot
/opt/glassfish/glassfish/nodes
/root/contexturl
/var/spool/cron/glassfish
/var/lib/jelastic/hooks
Golang/home/jelastic
/var/lib/jelastic/app.info
/var/lib/jelastic/keys
/var/lib/jelastic/vcs
/var/spool/cron/golang
Payara/home/jelastic/.ssh
/home/jelastic/.ssh2
/opt/payara/glassfish/domains/domain1/applications
/opt/payara/glassfish/domains/domain1/config/admin-keyfile
/opt/payara/glassfish/domains/domain1/config/domain.xml
/opt/payara/hazelcast.xml
/opt/payara/glassfish/domains/domain1/config/variables.conf
/opt/payara/glassfish/domains/domain1/docroot
/opt/payara/glassfish/nodes
/root/contexturl
/var/spool/cron/payara
/var/lib/jelastic/hooks
Spring Boot/home/jelastic/conf
/home/jelastic/APP
/var/lib/jelastic/keys
/var/spool/cron/jvm
Apache PHPbackup:/etc/php.ini
/etc/php.d/
/var/spool/cron/apache
/var/www/.ssh/
Apache Ruby/var/lib/jelastic/env
/var/spool/cron/apache
Couchbase/opt//etc/
MariaDB/etc/my.cnf
/etc/php.ini
/var/lib/mysql/.ssh/
/var/spool/cron/mysql
Maven/opt/maven/.ssh/
/var/spool/cron
Memcached/etc/sysconfig/memcached
MySQL/etc/my.cnf
/etc/php.ini
/var/lib/mysql/.ssh/
/var/spool/cron/mysql
NGINX (load balancer)/etc/dhcp/dhcpd.conf
/etc/nginx/conf.d
/etc/nginx/neighbors
/etc/nginx/nginx-jelastic.conf
/etc/nginx/tcpmaps/mappings.xml
/etc/nginx/upstreams
/var/lib/nginx/.ssh/
/var/spool/cron/nginx
/var/lib/jelastic/SSL
NGINX PHPbackup:/etc/php-fpm.conf
backup:/etc/php.ini
/etc/php.d/
/etc/sysconfig/php-fpm
/var/lib/nginx/.ssh/
/var/spool/cron/nginx
NGINX Ruby/var/lib/jelastic/env
/var/spool/cron/nginx
NodeJS/home/jelastic//.ssh/
home/jelastic//.ssh2/
var/spool/cron/nodejs
/home/jelastic/ROOT
PerconaDB/etc/my.cnf
/etc/php.ini
/var/spool/cron/mysql
PostgreSQL/etc/php.ini
/var/lib/pgsql/.ssh/
/var/spool/cron/postgres
${home}/lib/
${home}/share/
Varnish/etc/nginx
/etc/varnish
/etc/sysconfig/varnish
/var/lib/varnish
/var/spool/cron/varnish
WildFly/opt/contexturl
/home/jelastic/.ssh/
/var/spool/cron/wildfly
/opt/wildfly/domain
/opt/wildfly/standalone
/opt/wildfly/welcome-content/index.html
/var/lib/jelastic/hooks

Custom Files and Folders

custom files and folders

Catatan: Ketika menyediakan “ custom files and folder ”, hanya tambahkan file konfigurasi sistem yang diperlukan untuk memastikan operabilitas container selama redeployment. Gunakan container volumes untuk kasus lain (misalnya untuk mempertahankan data aplikasi Anda).

Anda dapat menambahkan daftar konfigurasi “ system files and folders ” default dengan custom files dan folders Anda (jika diperlukan). Buka file redeploy.conf dan tambahkan entri dengan jalur penuh ke item yang diperlukan (setiap entri harus dinyatakan dalam baris terpisah).

Creating File Backup Copy Upon Image Redeployment

Platform menyediakan cara yang nyaman dan sederhana untuk membuat cadangan file konfigurasi selama update container. Artinya, ketika mengganti konfigurasi yang ditentukan dengan versi baru dari tag baru, salinan file dari sebelum redeploy akan dipertahankan.

Untuk membuat cadangan, Anda perlu menentukan jalur ke file yang diperlukan di redeploy.conf dan tambahkan prefix “ backup: ” pada catatannya:

backup: {path_to_file}

Catatan: Operasi ini hanya tersedia untuk file (bukan direktori).

Setelah redeploy, konfigurasi dari container lama dapat dengan mudah dikenali oleh ekstensi “ backup ” atau “ time stamp ” yang sesuai. Mereka dapat digunakan untuk rollback instan berdasarkan inkompatibilitas dengan konfigurasi baru atau untuk analisis perubahan.

Misalnya, semua platform-managed PHP application servers secara default membuat cadangan untuk konfigurasi /etc/php.ini.

file backup via redeploy.conf

Setelah update container, Anda akan melihat versi baru dan sebelumnya dari php.ini atau file lain yang dicadangkan:

  • {file_name} - file dari image target redeployment (dari tag baru)
  • {file_name}.{time_stamp} - versi cadangan dari file yang dibuat tepat sebelum operasi redeploy (file terpisah untuk setiap redeployment ke tag yang berbeda)
  • {file_name}.backup - cadangan terbaru dari file (secara otomatis menggantikan cadangan sebelumnya dengan nama yang sama)
backup file successfully created

Dengan cara ini, Anda dapat dengan mudah beralih ke pengaturan yang digunakan sebelumnya dengan menggantikan file php.ini dengan cadangannya (misalnya melalui penggantian nama atau penyalinan konten).

Sekarang, Anda tahu cara mengelola versi template (Docker tags) dari containers di dalam platform.

Baca Juga