Perlu mengotomatiskan penyebaran kontainer Docker? Pernahkah Anda mendengar tentang AWS Elastic Beanstalk? AWS Elastic Beanstalk adalah layanan luar biasa lainnya untuk menerapkan dan menskalakan aplikasi dan layanan web.
Dalam tutorial ini, Anda mempelajari cara menerapkan aplikasi ke AWS Elastic Beanstalk menggunakan EB CLI dan GitHub Actions.
Siap? Baca terus dan mulailah menskalakan aplikasi Anda!
Prasyarat
Tutorial ini akan menjadi demonstrasi langsung. Jika Anda ingin mengikuti, pastikan Anda memiliki yang berikut:
- AWS Command-Line Interface (CLI) – Tutorial ini menggunakan AWS CLI v2.
- Pengguna AWS dengan izin Elastic Beanstalk.
- EB CLI v3.14.6 terpasang
- Akun GitHub dan repositori GitHub yang sudah disiapkan.
Membuat Host Web Statis Docker
Untuk mendemonstrasikan cara men-deploy container Docker, Anda memerlukan aplikasi terlebih dahulu untuk men-deploy. Dan untuk demo ini, Anda akan menggunakan file HTML.
1. Jalankan git clone
perintah di bawah ini untuk mengkloning file HTML dari repositori GitHub.
git clone [email protected]:Adam-the-Automator/aws-elastic-beanstalk.git
2. Selanjutnya, buat Dockerfile dengan editor teks pilihan Anda di root repositori yang Anda kloning (langkah pertama), dan isi file dengan kode di bawah ini.
Kode di bawah ini menampilkan output dari kode HTML (index.html
).
# Get NGINX base image
FROM nginx
# Add the index file to nginx
ADD index.html /usr/share/nginx/html/
# Expose port to enable elastic beanstalk and connect to the Docker container
EXPOSE 80
3. Jalankan docker build
perintah di bawah ini untuk membangun wadah Docker dari file HTML Anda yang disebut html
dalam direktori kerja.
docker build -t html .
4. Sekarang, jalankan docker run
perintah di bawah ini untuk menjalankan wadah Docker (html
) yang Anda buat sebelumnya (langkah ketiga).
--name
flag memberi tahu Docker nama (justhtml
) untuk digunakan saat mereferensikan wadah dalam jaringan. Sedangkan -p
flag memetakan port localhost Anda (8080
) ke port wadah Docker (80
).
docker run --name justhtml -p 8080:80 html
5. Terakhir, buka browser web Anda dan navigasikan ke http://localhost:8080/ untuk memverifikasi bahwa Anda dapat mengakses wadah Docker (HTML).
Jika semuanya bekerja dengan baik, Anda akan melihat halaman HTML di bawah ini.
Menerapkan Aplikasi ke Elastic Beanstalk melalui AWS CLI
Anda telah memverifikasi bahwa wadah Docker Anda dapat diakses di host Anda, jadi inilah saatnya untuk menerapkan aplikasi Anda ke AWS Elastic Beanstalk. Anda akan menggunakan EB CLI untuk men-deploy container Docker (html) Anda ke AWS Elastic Beanstalk.
Dengan asumsi Anda sudah menyiapkan AWS CLI, Anda tidak perlu melakukan apa pun untuk menyiapkan EB CLI. Mengapa? EB CLI menggunakan kredensial yang sama dengan AWS CLI.
1. Jalankan eb init
perintah di bawah ini untuk menginisialisasi lingkungan Pohon Kacang Elastis untuk proyek Anda. Lingkungan memungkinkan Elastic Beanstalk untuk mengidentifikasi jenis aplikasi yang ingin Anda terapkan.
eb init
Setelah menjalankan perintah, Anda akan menerima prompt untuk mengisi rincian. Di bawah, opsi berikut digunakan untuk contoh ini.
- Wilayah Bawaan:
3
- Nama Aplikasi:
html
- Tampaknya Anda menggunakan Docker. Apakah ini benar?
Y
- Pilih Cabang Platform:
1
- Apakah Anda ingin melanjutkan CodeCommit?
N
- Apakah Anda ingin menyiapkan SSH untuk instans Anda?
N
2. Selanjutnya, jalankan eb create
perintah di bawah ini untuk membuat lingkungan untuk aplikasi Anda di Elastic Beanstalk. Pada dasarnya, Anda menerapkan aplikasi Anda dan Elastic Beanstalk akan menangani sisanya seperti penyeimbangan beban
Jika Anda memiliki Git yang diinisialisasi dalam proyek Anda, pastikan Anda melakukan semua perubahan terlebih dahulu sebelum Anda membuat aplikasi di Elastic Beanstalk. Mengapa? EB CLI menggunakan arsip Git dari komit terbaru.
eb create
Tekan Enter untuk menggunakan default untuk Nama Lingkungan , awalan DNS CNAME , dan jenis penyeimbang beban karena Anda hanya mengerjakan aplikasi HTML.
Tetapi ketika diminta untuk mengaktifkan permintaan Spot Fleet, ketik n
, karena opsi ini menyediakan Instans Sesuai Permintaan opsional yang tidak diperlukan di sini, dan terakhir tekan Enter.
Grup penskalaan otomatis disediakan secara otomatis saat Anda pertama kali menjalankan
eb create
perintah.Pemicu default ditingkatkan saat lalu lintas jaringan keluar rata-rata dari setiap instans lebih tinggi dari 6 MB dan turun saat lalu lintas jaringan keluar lebih rendah dari 2 MB selama periode lima menit.
Karena aplikasi Anda hanya HTML, pemicu penskalaan aplikasi tidak mungkin terjadi.
3. Terakhir, jalankan eb open
perintah di bawah ini untuk membuka aplikasi Anda di browser web default Anda langsung dari Elastic Beanstalk.
eb open
Memverifikasi Aplikasi AWS Elastic Beanstalk
Sekarang Anda telah menerapkan aplikasi Anda, Anda akan melihat semua fungsi praktis ditambahkan ke aplikasi Anda. Pertama-tama Anda akan memverifikasi di mana Elastic Beanstalk menyimpan file aplikasi.
Untuk memiliki akses ke file aplikasi:
1. Masuk ke konsol AWS dengan pengguna yang ditambahkan dalam konfigurasi AWS CLI.
2. Klik Semua Layanan tarik-turun, klik Penyimpanan tab, lalu pilih S3 .
3. Di dasbor S3, klik proyek Anda untuk melihat informasi aplikasi Anda.
Seperti yang ditunjukkan di bawah ini, Anda melihat aplikasi Anda di Objek daftar.
4. Terakhir, klik tarik-turun Semua Layanan dan klik tab Hitung, lalu pilih EC2 untuk mengakses dasbor EC2 .
Di dasbor EC2, Anda dapat melihat sumber daya EC2 yang menjalankan aplikasi Anda, mirip dengan yang di bawah ini. Namun perlu diingat, data di bawah ini mungkin berbeda dengan data Anda.
Selain itu, Anda dapat menjalankan eb status
perintah di bawah ini untuk melihat detail selengkapnya tentang aplikasi Anda.
eb status
Memperbarui Aplikasi AWS Elastic Beanstalk
Ketika perubahan telah dibuat di aplikasi Anda, Anda harus menjalankan eb deploy
perintah untuk membuat dan menerapkan versi lain dari aplikasi Anda.
Buka file HTML Anda (index.html ) dan ganti apa yang Anda miliki di <style>
tag dengan yang di bawah ini. Kode di bawah ini mengubah warna latar belakang aplikasi Anda .
<style>
body{
background-color: rgb(0, 255, 55);
}
</style>
Sekarang, jalankan perintah berikut untuk deploy
perubahan dan open
aplikasi Anda di browser web Anda.
eb deploy
eb open
Saat penerapan selesai, aplikasi Anda akan terbuka secara otomatis di browser Anda dengan perubahan baru yang Anda buat.
Menyebarkan Aplikasi ke Elastic Beanstalk dengan Tindakan GitHub
Selain menggunakan EB CLI, menggunakan GitHub Actions adalah cara lain yang nyaman untuk menyebarkan wadah Docker Anda ke Elastic Beanstalk. GitHub Actions memungkinkan Anda untuk mengotomatiskan hal-hal yang berulang selama pengembangan. Dengan GitHub Actions, Anda menyiapkan instruksi dan mendorongnya ke GitHub.
Saat ini, ketika Anda membuat perubahan, Anda menjalankan sendiri perintah penerapan. Namun dalam demo ini, Anda akan menyiapkan Tindakan GitHub untuk menjalankan perintah penerapan untuk Anda.
Penyiapan ini bermanfaat jika Anda mengembangkan saluran yang menjalankan pengujian dan melakukan pemeriksaan lainnya.
1. Buat direktori bernama .github/workflows di direktori root proyek Anda. Direktori ini adalah tempat Anda menyimpan file alur kerja Anda.
2. Selanjutnya, buat file dengan nama pilihan Anda di direktori .github/workflows. Tapi untuk contoh ini, filenya bernama main.yml .
Salin dan tempel kode di bawah ini ke main.yml file, yang melakukan hal berikut:
- Membuat pekerjaan yang mendapatkan push terbaru ke repositori Anda dan meng-zip repositori (Elastic Beanstalk mengharuskan Anda untuk meng-zip folder proyek Anda).
- Memformat stempel waktu, dan menggunakan stempel waktu yang diformat sebagai label versi.
- Terapkan repositori ke Elastic Beanstalk.
name: Deployment From Github To AWS
on:
# activates the workflow when there is a push on the main branch
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest # the operating system your job will run on
steps:
- name: Checkout Latest Repo
# checks out your repository under the GitHub workspace so that your workflow can access it
uses: actions/[email protected]
- name: Generate Deployment Package
# zip all files except .git
run: zip -r deploy.zip * -x '*.git*'
- name: Get timestamp
uses: gerred/actions/[email protected]
id: current-time
- name: Run string replace
uses: frabert/[email protected]
id: format-time
with:
# replaces '[:\.]+' in the timestamp with '-'
pattern: '[:\.]+'
string: "${{ steps.current-time.outputs.time }}"
replace-with: '-'
flags: 'g'
- name: Deploy to EB
uses: einaregilsson/[email protected]
with:
# Input the credentials you used to setup AWS CLI and credentials for the application environment
aws_access_key: AKIATI3RC11111YQ3TAU
aws_secret_key: Urr46HfaaaaaabbbbbcccaC/+YpWFtJFbRQN27xF
application_name: html
environment_name: html-dev3
version_label: "${{ steps.format-time.outputs.replaced }}"
region: us-west-2
deployment_package: deploy.zip
Biasanya, dalam proyek langsung, Anda ingin meletakkan kredensial di Rahasia GitHub.
3. Jalankan perintah berikut pada root proyek Anda untuk melakukan dan mendorong kode ke repositori GitHub Anda.
git add . # adds changes to staging area
git commit -m "update" # commits your changes
git push # Push to GitHub
4. Sekarang, buka browser web Anda dan navigasikan ke proyek Anda di GitHub. Klik pada Tindakan tab, lalu klik komit Anda saat ini.
Mirip dengan gambar di bawah, Anda dapat mengonfirmasi bahwa aplikasi Anda telah diterapkan.
5. Terakhir, jalankan perintah di bawah ini untuk menjalankan aplikasi Anda.
eb open
Di bawah, Anda dapat melihat bahwa GitHub Actions berhasil menerapkan perubahan.
Kesimpulan
Sepanjang tutorial ini, Anda telah mempelajari cara men-deploy aplikasi ke Elastic Beanstalk melalui terminal dengan EB CLI dan GitHub Actions.
Sekarang, Anda sudah mengetahui berbagai cara untuk menerapkan aplikasi Anda ke pohon kacang Elastis, sehingga Anda dapat memilih mana yang paling sesuai dengan kebutuhan Anda.
Bagaimana Anda berencana untuk membangun pengetahuan yang baru ditemukan ini? Mungkin menerapkan aplikasi lengkap?