Ingatlah bahwa kami menggunakan konfigurasi model yang ditunjukkan pada diagram di bawah, dan harap perhatikan label yang tersedia di sana, karena kami akan secara aktif menggunakannya dalam contoh kami.
| Komponen perangkat lunak | Versi |
|---|---|
| Platform Kontainer OpenShift Red Hat | 4.5.7 |
| Manajemen Cluster Lanjutan Red Hat | 2.0 Fix Pack 2.0.2 |
Repositori Git
Kami juga akan menggunakan repositori Git dari artikel sebelumnya:
| Cabang | Deskripsi |
|---|---|
| config | Menyimpan file dasar untuk aplikasi yang digunakan di semua lingkungan. |
| Melecut | Menyimpan file overlay untuk aplikasi yang digunakan dalam lingkungan produksi. |
| tahap | Menyimpan file overlay untuk aplikasi yang digunakan dalam lingkungan pengujian |
Penerapan Biru / Hijau dengan Red Hat ACM
Di artikel sebelumnya, kami menerapkan aplikasi reversewords kami di dua lingkungan, pengembangan dan produksi. Katakanlah, dalam Pengembangan, kami memiliki versi 0.0.3, dan dalam Produksi - 0.0.2.
Sekarang katakanlah pengembang telah merilis versi 0.0.4 dan kami ingin melakukan penerapan biru-hijau ke cluster Pengembangan dan Produksi menggunakan kapabilitas GitOps dari ACM.
Di artikel sebelumnya, kami membuat sumber daya Channel, PlacementRules, Subscriptions, dan Aplikasi yang diperlukan di ACM, sehingga saat kami menerapkan versi baru, hanya Git yang akan berfungsi di kedua cluster.
Memperbarui aplikasi di lingkungan pengembangan
Karena semua sumber daya yang diperlukan telah dibuat, kita hanya perlu mengubah deskripsi aplikasi di Git untuk memperbarui versi di lingkungan yang sesuai.
CATATAN. Karena di sini kami hanya mendemonstrasikan kapabilitas GitOps dari ACM, kami akan mendorong perubahan langsung ke cabang repositori, yang tidak bagus. Dalam kehidupan nyata, Anda harus memiliki proses yang terdefinisi dengan baik untuk membuat perubahan pada lingkungan yang berbeda, Anda dapat membaca lebih lanjut tentang ini di sini .
1. Buka repositori Git kloning kami:
CATATAN: Jika Anda mereproduksi contoh dari artikel sebelumnya, maka Anda sudah memiliki cabang kloning dari repositori ini .
cd /path/to/acm-app-lifecycle-blog/forked/repository/
2. Pertama, kami ingin memperbarui versi aplikasi di lingkungan Pengembangan sehingga kami dapat mengujinya sebelum mendorong perubahan ke lingkungan Produksi. Oleh karena itu, kami akan bekerja dengan cabang panggung.
git checkout stage
3. Sekarang Anda perlu memperbarui overlay untuk penerapan aplikasi sehingga penerapan ini menggunakan gambar versi baru (0.0.4).
Sejauh ini, rilis 0.0.3 berjalan di cluster Pengembangan.
sed -i "s/v0.0.3/v0.0.4/g" apps/reversewords/overlays/deployment.yaml
4. Sebelum melakukan perubahan, periksa status aplikasi saat ini di cluster pengembangan.
curl http://$(oc --context dev -n reverse-words-stage get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Seperti yang Anda lihat, versi 0.0.3 saat ini berjalan di lingkungan Pengembangan:
Reverse Words Release: Stage Release v0.0.3. App version: v0.0.3
5. Komit file dan dorong ke cabang panggung.
CATATAN. Sekali lagi, dalam kehidupan nyata Anda seharusnya tidak melakukannya. Anda harus memiliki proses yang jelas untuk ini.
git add apps/reversewords/overlays/deployment.yaml
git commit -m "Pushed development reverse-words app version to v0.0.4"
git push origin stage
6. Karena kita sudah memiliki Langganan, setelah mendeteksi komit baru ke repositori dan cabang kita, ACM akan melakukan tindakan untuk mengubah status dari saat ini ke status yang diinginkan, seperti yang tertulis di Git.
oc --context dev -n reverse-words-stage get pods
Seperti yang Anda lihat, perubahan telah terdeteksi dan versi baru dari pod di-deploy dengan aplikasi versi baru.
NAME READY STATUS RESTARTS AGE
reverse-words-5ff744d4bd-kkfvn 0/1 ContainerCreating 0 3s
reverse-words-68b9b894dd-jfgpf 1/1 Running 0 109m
7. Sekarang mari jalankan permintaan ke aplikasi dan pastikan kita telah menerapkan rilis 0.0.4.
curl http://$(oc --context dev -n reverse-words-stage get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Reverse Words Release: Stage Release v0.0.4. App version: v0.0.4
8. Rilis produksi tetap utuh.
curl http://$(oc --context pro -n reverse-words-prod get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Reverse Words Release: Production release v0.0.2. App version: v0.0.2
9. Sekarang Anda dapat menjalankan uji validasi dan, jika semuanya baik-baik saja, luncurkan versi baru aplikasi ke dalam produksi.
Memperbarui aplikasi di lingkungan produksi
1. Buka repositori Git hasil kloning.
cd /path/to/acm-app-lifecycle-blog/forked/repository/
2. Kami yakin bahwa kami telah berhasil menguji versi baru aplikasi di cluster Pengembangan dan sekarang saatnya membuat perubahan yang sesuai untuk menerapkannya ke cluster Produksi, jadi sekarang kami akan bekerja dengan cabang prod.
git checkout prod
3. Anda perlu memperbarui overlay untuk penerapan aplikasi sehingga penerapan ini menggunakan gambar versi baru (0.0.4).
Sejauh ini, rilis 0.0.2 berjalan di cluster Produksi
sed -i "s/v0.0.2/v0.0.4/g" apps/reversewords/overlays/deployment.yaml
4. Sebelum melakukan perubahan, periksa status aplikasi saat ini di cluster produksi.
curl http://$(oc --context pro -n reverse-words-prod get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Seperti yang Anda lihat, versi 0.0.2 saat ini berjalan di lingkungan Produksi:
Reverse Words Release: Stage Release v0.0.2. App version: v0.0.2
5. Komit file dan dorong ke cabang prod.
CATATAN. Sekali lagi, dalam kehidupan nyata Anda seharusnya tidak melakukannya. Anda harus memiliki proses yang jelas untuk ini.
git add apps/reversewords/overlays/deployment.yaml
git commit -m "Pushed production reverse-words app version to v0.0.4"
git push origin prod
6. Karena kita sudah memiliki Langganan, setelah mendeteksi komit baru ke repositori dan cabang kita, ACM akan melakukan tindakan untuk mengubah status dari saat ini ke status yang diinginkan, seperti yang tertulis di Git.
oc --context pro -n reverse-words-prod get pods
Seperti yang Anda lihat, perubahan telah terdeteksi dan versi baru dari pod di-deploy dengan aplikasi versi baru.
NAME READY STATUS RESTARTS AGE
reverse-words-68795d69ff-6t4c7 0/1 ContainerCreating 0 5s
reverse-words-7dd94446c-vkzr8 1/1 Running 0 115m
7. Sekarang mari jalankan permintaan ke aplikasi dan pastikan kita telah menerapkan rilis 0.0.4.
curl http://$(oc --context pro -n reverse-words-prod get service reverse-words -o jsonpath='{.status.loadBalancer.ingress[0].hostname}'):8080
Reverse Words Release: Production Release v0.0.4. App version: v0.0.4
8. Itu saja, kami telah memperbarui aplikasi kami ke versi 0.0.4 di kedua lingkungan: dalam Pengembangan dan Produksi.
Kesimpulan
Di bagian pertama seri ini, kami membahas aspek ACM yang termasuk dalam kategori GitOps. Hari ini kami mempelajari cara menggunakan ACM untuk penerapan biru-hijau, migrasi aplikasi antar cluster, dan pemulihan bencana. Di posting berikutnya, kami akan menunjukkan kepada Anda cara memigrasi aplikasi reversewords Anda dengan mulus antara cluster kami menggunakan ACM.