By Juan Patrick, Solution Architect Intern
Proses pengembangan web menjadi cepat dan aman di lingkungan Alibaba Cloud.
Continuous Integration and Delivery (CI/CD) menjadi siklus pengembangan software dalam memproduksi aplikasi yang berkualitas. CI/CD merupakan salah satu praktik DevOps yang berguna untuk meningkatkan kualitas proses pengembangan software. Manfaat dari proses CI/CD untuk meningkatkan produksi, mengidentifikasi bug lebih cepat dan efisien. Salah satu tools populer digunakan proses CI/CD adalah GitLab.
Selama proses CI/CD, kita juga ingin mengamankan code aplikasi dari akses yang tidak dikenal (unauthorized) atau adanya pihak luar yang modifikasi code pada aplikasi. Hal ini peran security menjadi bagian penting dalam mengamankan code aplikasi. Kita dapat mengamankan akses server Git dan DevOps dengan Smart Access Gateway (SAG), solusi koneksi jaringan lokal di Alibaba Cloud. SAG App menyediakan layanan berbasis VPN untuk mengakses jaringan lokal yang aman, cerdas, dan terjamin.
Artikel ini menjelaskan tentang bagaimana melakukan proses CI/CD yang hanya dapat diakses oleh tim internal DevOps melalui jaringan lokal. Terdapat tahapan berikut:
Artikel ini berfokus pada prosedur tentang manajemen dan melindungi Git server, dan aplikasi web dikembangkan dengan Node.js yang sudah siap dijalankan dan akan di-upload ke Git server sebagai source code control.
Semua layanan dan produk Alibaba Cloud berada di dalam satu lokasi yang sama, yaitu Indonesia-Jakarta.
Berikut adalah diagram arsitektur untuk mendeskripsikan tentang desain sistem CI/CD di Alibaba Cloud.
Berdasarkan rancangan, seluruh layanan dan produk Alibaba Cloud di dalam VPC yang sama. Dua ECS Instance (sistem operasi Ubuntu) berperan masing-masing sebagai web server dan Git server. Web server bertugas untuk melayani web yang diakses oleh client (publik) dan terhubung dengan ApsaraDB for RDS sebagai database, dan OSS untuk menyimpan dokumen gambar (unstructured data). Git hanya dapat diakses oleh perusahaan melalui jaringan lokal dengan SAG App.
Berdasarkan prinsip keamanan menanggulangi cakupan serangan, konfigurasi Security Group pada proses CI/CD hanya mengizinkan akses port SSH dan HTTP untuk web server dan SAG VPN network, seperti pada tabel aturan berikut:
Source | Destination | No. Port | Deskripsi |
10.10.10.0/24 (SAG VPN Network) |
192.168.7.69 | 22 | Akses remote untuk O&M dari jaringan intranet |
10.10.10.0/24 (SAG VPN Network) |
192.168.7.69 | 80 | Source Code Control dari jaringan intranet |
192.168.6.0/24 (Web server Network) |
192.168.7.69 | 80 | Source Code yang akan di-unduh dari jaringan web server |
SAG atau Smart Access Gateway adalah semua dalam satu solusi produk Alibaba Cloud untuk terhubung dengan jaringan lokal. Ada berbagai tipe produk SAG, anda dapat mengecek di https://www.alibabacloud.com/help/en/smart-access-gateway/latest/what-is-sag dan kita akan menggunakan SAG App pada proyek ini.
1. Akses konsol SAG dan pergi ke SAG -> Smart Access Gateway App -> SAG App Instances, kemudian klik Create SAG App.
Untuk detail konfigurasi, anda dapat melihat di https://www.alibabacloud.com/help/en/smart-access-gateway/latest/purchase-sag-app
2. Setelah membuat SAG App Instance, klik Quick Configuration pada kolom Actions.
3. Ikuti langkah-langkah instruksi secara bertahap dan pastikan pada langkah kedua untuk membuat CEN agar transit router SAG dibuat.
Informasi setelan SAG App tersedia di https://www.alibabacloud.com/help/en/smart-access-gateway/latest/get-started-with-sag-app
1. Buka konsol CEN di dan pergi ke Cloud Enterprise Network -> Instances, dan klik CEN instance yang sudah dibuat sebelumnya saat mengkonfigurasi SAG.
2. Pada Basic Settings of CEN Instance, klik ikon ⊕ pada VPC.
3. Atur Region yang sama dengan Region pada VPC anda gunakan dan pilih VPC yang sama saat digunakan dengan ECS anda. Biarkan default, klik OK. Hasilnya, terdapat dua transit router untuk VPC dan CCN.
Informasi setelan CEN tersedia di https://www.alibabacloud.com/help/en/cloud-enterprise-network/latest/quick-start
1. Unduh aplikasi SAG di https://www.alibabacloud.com/help/en/smart-access-gateway/latest/install-the-sag-app dan instalasi aplikasi pada perangkat anda.
2. Buka smartag-app dan login menggunakan instance ID SAG App, username/email, dan password yang dapat ditemukan di konsol SAG. Centang pada Please read and agree privacy policy dan klik Login.
3. Klik Connect to Intranet and anda bisa melihat Local IP dan DNS Server anda di Connection tab.
4. Ping ECS Instance anda pada lokal IP address dari PC untuk tes koneksi. Jika hasil respons, seperti ini:
Artinya, anda sudah berhasil melakukan koneksi lokal di ECS melalui SAG App. Hal yang perlu diperhatikan adalah saat koneksi dengan ECS, anda perlu mengaktifkan koneksi intranet di SAG App.
Ada pilihan lainnya untuk mengamankan jaringan ECS, yaitu dengan menggunakan SSL VPN, anda melihat di https://www.alibabacloud.com/blog/remote-access-with-centralized-hostname-management-alibaba-cloud-privatezone-sag-app-and-vpn-gateway_597889
Git adalah system version control dalam pengembangan software. Git membantu untuk mengatur dan mendokumentasikan code pada proyek. Semua perubahan code tersimpan ke dalam histori. Kita dapat melacak histori untuk mencari kontributor yang mengubah code aplikasi. Pada bagian ini, kita akan melakukan instalasi Git dengan aplikasi GitLab di ECS Instance.
1. Koneksi ECS Instance anda menggunakan SSH
ssh root@<Private IP address of ECS Instance>
Ada banyak cara untuk melakukan koneksi dengan ECS, anda dapat mengecek di dokumentasi berikut: https://www.alibabacloud.com/help/en/elastic-compute-service/latest/connection-methods
2. Perbarui dan instalasi dependencies di Ubuntu
sudo apt update && sudo apt upgrade
3. Instalasi dependency packages dibutuhkan
sudo apt install curl debian-archive-keyring lsb-release ca-certificates apt-transport-https software-properties-common -y
4. Impor pada GitLab key
gpg_key_url="https://packages.gitlab.com/gitlab/gitlab-ce/gpgkey"
curl -fsSL $gpg_key_url| sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/gitlab.gpg
5. Pada file /etc/apt/sources.list.d/gitlab gitlab-ce.list, tambahkan isi konten file berikut
sudo tee /etc/apt/sources.list.d/gitlab_gitlab-ce.list<<EOF
deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
EOF
6. Perbarui APT package untuk menverifikasi konfigurasi dari repo
sudo apt update
7. Unduh script GitLab
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
8. Tampilkan output untuk mengecek isi dari GitLab.
cat /etc/apt/sources.list.d/gitlab_gitlab-ce.list
9. Lakukan instalasi Gitlab CE (Community Edition)
sudo apt install gitlab-ce
Setelah selesai, anda dapat melihat logo GitLab
10. Edit file konfigurasi GitLab:
nano /etc/gitlab/gitlab.rb
11. Pada baris external_url
, ganti dengan lokal IP address ECS anda. Berikut contoh konfigurasi:
12. Jalankan konfigurasi GitLab
sudo gitlab-ctl reconfigure
13. Cek status GitLab dan lihat semua bagian berjalan di GitLab
sudo gitlab-ctl status
1. Tampilkan kata sandi dan salin kata sandi tersebut kemudian simpan untuk nantinya digunakan untuk mengakses halaman GitLab.
cat /etc/gitlab/initial_root_password
2. Buka tab baru dan ketik http://<Private IP Address of ECS Instance>
. Login sebagai root dan tempelkan kata sandi yang sudah disalin sebelumnya.
3. Tampilan akan seperti berikut:
Anda dapat ke Profile User -> Preferences -> Password untuk memperbarui kata sandi.
Informasi tambahan tentang konfigurasi GitLab dapat ditemukan di https://www.alibabacloud.com/help/en/elastic-compute-service/latest/install-and-use-gitlab
Pada bagian ini, kita akan melakukan instalasi web server. Kita sudah menyiapkan web aplikasi Node.js dan akan commit ke Git Server yang kemudian akan dikloning proyek ke Web Server. Sebelum itu, kita akan menyiapkan Git pada klien dan melakukan instalasi Node.js pada web server.
1. Perbarui dan instalasi dependencies di Ubuntu.
sudo apt update && sudo apt upgrade
2. Pastikan curl sudah di-unduh sebelumnya.
sudo apt install curl
3. Gunakan Node.js PPA dari Nodesource dan secara langsung Node.js dan NPM sudah siap (stable version)
cd ~ | curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
4. Perintah berikut untuk melakukan verifikasi versi yang digunakan sebelum melakukan instalasi Node.js
sudo apt-cache policy nodejs
5. Menggunakan perintah berikut untuk instalasi Node.js
sudo apt install nodejs
6. Cek versi Node.js dan NPM.
node -v && npm -v
1. Unduh git dari https://git-scm.com/downloads dan ikuti petunjuk untuk menginstal git di Desktop anda.
2. Buka aplikasi git bash dan sekarang anda memiliki konsol git yang sudah siap untuk commit proyek anda.
Di bagian ini, kita akan menggunakan Git untuk melakukan upload proyek ke ECS. Web server menggunakan operasi git untuk mengunduh sesuai dengan proyek aplikasi web.
1. Buat repository dengan New Project dan pilih Create blank project.
2. Isi Project Name, atur visibility level (menggunakan Private) dan tidak memberi centang bagian the Initialize repository with a README. Klik Create project.
3. Buka aplikasi git bash dan arahkan ke proyek web. Ikuti perintah untuk mengupload proyek: (menggunakan metode HTTP untuk commit proyek)
git init
git remote add origin <URL-Repository>
git add .
git commit -m "message"
git push -u origin master
Catatan: Nantinya akan muncul Git Credential Manager, login dengan akun yang sama saat pertama kali mengakses GitLab.
4. Hasil:
1. Akses remote web server anda dengan SSH.
ssh root@<Public IP address of ECS Instance>
2. Instalasi git dependency package.
sudo apt install git
3. Salin URL Project dengan klik tombol Clone dan salin teks URL pada sesi Clone with HTTP.
4. Kloning proyek di GitLab dengan mengetik git clone
dan kemudian tempel URL yang sudah disalin sebelumnya.
git clone http://<IP Address of ECS Instance>/<group>/<project-name>.git
5. Instalasi packages untuk proyek dan jalankan aplikasi Node.js sebagai background service dengan mengunduh pm2 atau forever.
Jika anda ingin melihat contoh tambahan tentang kelola proyek Node.js di Alibaba Cloud, anda dapat melihat di https://www.alibabacloud.com/blog/deploying-node-js-apps-for-production-on-alibaba-cloud_594639
CI/CD dapat membantu untuk mempercepat proses pengembangan software dengan keamanan yang terjamin. Kita sudah melakukan instalasi CI/CD menggunakan GitLab dan mengamankan akses server melalui SAG. Tahapan prosedur ini memiliki keuntungan dengan manajemen pengembangan dan operasi proyek di Alibaba Cloud secara aman. Kita sebaiknya mengembangkan software dan dapat memberikan akses kepada orang tertentu saja terhadap proyek kita.
Secure and Simple CI/CD setup on Alibaba Cloud, with SAG & GitLab
100 posts | 17 followers
FollowAlibaba Cloud Indonesia - August 3, 2022
Alibaba Cloud Indonesia - August 3, 2022
Alibaba Cloud Indonesia - May 4, 2021
Yudhistira Heriansyah - August 31, 2024
Regional Content Hub - August 19, 2024
Alibaba Cloud Indonesia - February 4, 2022
100 posts | 17 followers
FollowAn enterprise-level continuous delivery tool.
Learn MoreAccelerate software development and delivery by integrating DevOps with the cloud
Learn MoreReach global users more accurately and efficiently via IM Channel
Learn MoreAccelerate static and dynamic web content in a fast, reliable, and safe way using Secure DCDN (Dynamic Route for CDN)
Learn MoreMore Posts by Alibaba Cloud Indonesia