×
Community Blog Instalasi CI/CD Sederhana dan Aman di Alibaba Cloud dengan SAG dan GitLab

Instalasi CI/CD Sederhana dan Aman di Alibaba Cloud dengan SAG dan GitLab

Lihat tutorial ini tentang cara instalasi CI/CD yang sederhana dan aman di Alibaba Cloud dengan SAG dan GitLab.

By Juan Patrick, Solution Architect Intern

Proses pengembangan web menjadi cepat dan aman di lingkungan Alibaba Cloud.

Pendahuluan

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.

Ringkasan

Artikel ini menjelaskan tentang bagaimana melakukan proses CI/CD yang hanya dapat diakses oleh tim internal DevOps melalui jaringan lokal. Terdapat tahapan berikut:

  • Instalasi SAG,
  • Instalasi Git server-klien,
  • Instalasi Web server, dan
  • Proses CI/CD

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.

Sistem Arsitektur

Berikut adalah diagram arsitektur untuk mendeskripsikan tentang desain sistem CI/CD di Alibaba Cloud.

1

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.

Kendali Keamanan

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

Instalasi SAG

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.

SAG App

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.

2

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

CEN

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

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.

4

Informasi setelan CEN tersedia di https://www.alibabacloud.com/help/en/cloud-enterprise-network/latest/quick-start

SAG App Klien

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.

5

4.  Ping ECS Instance anda pada lokal IP address dari PC untuk tes koneksi. Jika hasil respons, seperti ini:

6

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

Instalasi Git server

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.

Instalasi GitLab CE

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

7.  Unduh script GitLab

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

8

8.  Tampilkan output untuk mengecek isi dari GitLab.

cat /etc/apt/sources.list.d/gitlab_gitlab-ce.list

9

9.  Lakukan instalasi Gitlab CE (Community Edition)

sudo apt install gitlab-ce

Setelah selesai, anda dapat melihat logo GitLab

10

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:

11

12.  Jalankan konfigurasi GitLab

sudo gitlab-ctl reconfigure

13.  Cek status GitLab dan lihat semua bagian berjalan di GitLab

sudo gitlab-ctl status

12

Mengakses Web GitLab CE

1.  Tampilkan kata sandi dan salin kata sandi tersebut kemudian simpan untuk nantinya digunakan untuk mengakses halaman GitLab.

cat /etc/gitlab/initial_root_password

13

2.  Buka tab baru dan ketik http://<Private IP Address of ECS Instance>. Login sebagai root dan tempelkan kata sandi yang sudah disalin sebelumnya.

14

3.  Tampilan akan seperti berikut:

15

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

Instalasi Aplikasi Server dan Git Klien

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.

Instalasi Node.js di ECS

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

16

5.  Menggunakan perintah berikut untuk instalasi Node.js

sudo apt install nodejs

6.  Cek versi Node.js dan NPM.

node -v && npm -v

17

Instalasi Git di Klien

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.

18

Proses CI/CD

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.

Upload Code ke ECS GitLab

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.

19

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:

20

Unduh Code dari ECS GitLab

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.

21

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

Kesimpulan

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.

0 0 0
Share on

Alibaba Cloud Indonesia

99 posts | 15 followers

You may also like

Comments