0

Deploy aplikasi ke Amazon Lightsail container (menggunakan repository lightsail)

Deploy aplikasi ke Amazon Lightsail container (menggunakan repository lightsail)

Kali ini saya akan bahas cara deploy aplikasi ke amazon lightsail container menggunakan repository lightsail. Jadi nanti kita akan mem-push imagenya/aplikasinya ke lightsail repository, setelah itu akan kita deploy di amazon lightsail.

Yang diperlukan disini :

  1. aws cli + lightsailctl (kita akan push imagenya dari terminal menggunakan aws cli)
  2. aws lightsail container (Layanan aws lightsail)


Step yang akan kita lakukan:

  1. Membuat container kosong di aws lightsail
  2. Membuat user dan policy di IAM (Identity and Access Management), supaya kita bisa mempush imagenya ke lightsail repository
  3. Install aws CLI & lightsailctl di local komputer
  4. Push imagenya ke lightsail repository melalui aws cli
  5. Deploy aplikasinya ke amazon lightsail


1. Membuat container kosong di aws lightsail

Pertama kita harus membuat wadah kosong (container) terlebih dahulu. Nanti wadahnya akan kita isi (deploy) dengan image aplikasi kita.

Oke jadi kita harus masuk dulu ke amazon lightsail. Ketikkan amazon lightsail pada kolom pencarian, Klik Lightsail

deploy aplikasi ke amazon lightsail

Setelah itu akan dibawa ke halaman amazon lightsail, pilih tab Containers, klik Create container service untuk mebuat container baru

Tentukan regionnya, contoh disini saya memilih region terdekat yaitu singapore.

Kemudian pilih server capacitynya, saya pilih yang $7 USD (per month) dengan spec 512MB RAM, 0.25 vCPUs.

Lalu pilih scalenya 1.

Note: Jika ingin availability aplikasinya tinggi, kalian bisa scale containernya menjadi 2 atau lebih. Namun perlu diperhatikan.. semakin tinggi scale, semakin tinggi juga biayanya. Misalkan kalian ingin men-scalenya menjadi 2, maka biayanya akan menjadi 2 x $7 USD = $14 USD

Selanjutnya kita beri nama servicenya: container-service-1

Kemudian klik Create container service

Tunggu beberapa saat sampai statusnya Ready



Okey, sekarang kita sudah berhasil membuat container kosong. Nanti diakhir step kita akan isi kekosongan tersebut dengan image aplikasi kita.

2. Membuat user dan policy di IAM (Identity and Access Management)

Langkah selanjutnya kita wajib membuat user di IAM. User ini akan kita gunakan di aws CLI nanti pada saat mempush image ke lightsail repository. Selain user, kita akan buat hak aksesnya / policynya juga, karena untuk mempush ke lightsail repository diperlukan hak akses. So semua ini akan kita buat di IAM.

Oke langsung saja, kita akan buat user dan policynya.

#Create User & Policy

Ketikkan IAM pada kotak pencarian, lalu klik IAM

Selanjutnya klik Users pada menu sebelah kiri, lalu klik Add users

Masukkan nama username: aws

Lalu centang Access key – Programmatic access, supaya kita bisa push imagenya melalui CLI aws. Klik Next: Permissions

Klik Attach existing policies directly, klik Create policy.

Disini kita akan buat sebuah policy baru, pada tab JSON masukkan policy berikut, lali klik Next: Tags

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lightsail:CreateContainerServiceRegistryLogin",
                "lightsail:RegisterContainerImage"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}

Action:

lightsail:CreateContainerServiceRegistryLogin = permission untuk bisa login ke container service registry

lightsail:RegisterContainerImage = permission untuk bisa meregistrasikan image yang kita push

Resource

* = Resource bisa diterapkan ke semua container service

Lalu pada step Tags, cukup lanjutkan saja dengan mengklik Next: Review

Kemudian masukkan nama policynya dengan policy_lightsail, lalu descriptionnya kalian bebas isi apa saja. Klik Create Policy

Okey, sekarang policy untuk lightsail sudah terbuat

Sekarang balik lagi ke proses buat user, klik refresh lalu cari policynya policy_lightsail, kemudian klik Next: Tags

Pada tahap ini, cukup klik Next: Review

Kemudian halaman review, klik Create user

Setelah itu kita akan mendapatkan credential, simpan credential tersebut. Credential ini akan kita gunakan nanti pada saat mempush imagenya melalui aws CLI


3. Install AWS CLI & lightsailctl di local komputer

Untuk mempush image ke lightsail repository, kita memerlukan aws cli dan lightsailctl terlebih dahulu. Jadi ditahap ini kita akan menginstall aws cli dan lightsailctl


# Install AWS CLI

Oke kita akan install aws cli, caranya sebagai berikut

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

unzip awscliv2.zip

sudo ./aws/install

Nice, aws cli sudah terinstall, kita bisa coba test untuk mengecek versionnya.

aws --version

Jika saat menjalankan aws --version kalian mendapatkan error not found in directory atau semacamnya, silahkan buka tab terminal baru, lalu jalankan kembali aws --version

selanjutnya kita akan menginstall lightsailctl


# Install Lightsailctl

Lightsailctl merupakan plugin dari aws. Dengan lightsailctl kita bisa melakukan command ke service lightsail, seperti command untuk mem-push image, melihat container service, dll. Jalankan script berikut untuk menginstall lightsailctl:

sudo curl "https://s3.us-west-2.amazonaws.com/lightsailctl/latest/linux-amd64/lightsailctl" -o "/usr/local/bin/lightsailctl"

sudo chmod +x /usr/local/bin/lightsailctl

Oke lightsailctl sudah berhasil diinstall. Selanjutnya kita akan mempush image ke lightsail repository.


4. Push imagenya ke lightsail repository melalui aws cli

Okey, sekarang kita tinggal push imagenya ke lightsail repository. Disini saya sudah mempunyai image yang berisi aplikasi simple, hanya menampilkan tulisan “This is my website” kira-kira seperti ini:

Jika kalian belum mempunyai / belum tahu cara membuat image, kalian bisa ikuti tutorial berikut: Cara build aplikasi sederhana menjadi image di docker

Oke lanjut, Image yang saya punya adalah moko25/mywebsite:1.0, jika kita lihat lewat docker images tampilannya seperti ini

Kita akan push image tersebut, pertama-tama kita harus login aws cli dulu

aws configure

Selanjutnya kita push imagenya dengan command berikut:

aws lightsail push-container-image --region ap-southeast-1 --service-name container-service-1 --label mysimplewebsite --image moko25/mywebsite:1.0

Perlu diperhatikan disini, pada step awal kita telah membuat container dan memilih region singapore, maka pada command diatas kita perlu set kode regionnya menjadi ap-southeast-1

Lalu container-service-1 merupakan nama container servicenya.

Label mysimplewebsite merupakan nama image yang akan kita daftarkan ke lighstail repository

Berikutnya image moko25/mywebsite:1.0 adalah image yang akan kita push

Oke, sekarang kita push imagenya, kira-kira tampilannya setelah berhasil seperti ini:

Sekarang kita cek di amazon lightsailnya, klik tab Images

Bagus, imagenya sudah masuk ke lightsail repository, namanya :container-service-1.mysimplewebsite.2

Oke, langkah terakhir kita akan deploy image tersebut


5. Deploy aplikasinya ke amazon lightsail

Klik tab deployments pada amazon lightsail

deploy aplikasi ke amazon lightsail

lalu klik Create your first deployment, masukkan nama container name (bebas), image dan portnya

Untuk nama imagenya harus sama dengan image yang sudah kita push tadi, yaitu :container-service-1.mysimplewebsite.2

Kemudian masukkan port 80 HTTP, pilih PUBLIC ENDPOINT mywebsite, lalu klik Save and deploy

Tunggu sekitar 5 menit, image akan dideploy. Jika sudah berhasil dideploy maka statusnya akan running

Disini kita akan mendapatkan container URL seperti pada gambar diatas, tinggal kita klik saja

https://container-service-1.njcqae371d40k.ap-southeast-1.cs.amazonlightsail.com/

Great! aplikasi sudah bisa diakses

Ok teman-teman, begitu cara deploy aplikasi ke amazon lightsail menggunakan repository dari lightsail. Mudah-mudahan bermanfaat !

Ambar Hasbiyatmoko

Hello, I'm web developer. Passionate about programming, web server, and networking.

Leave a Reply

Your email address will not be published. Required fields are marked *

Time limit is exhausted. Please reload the CAPTCHA.