Instalasi Harbor Open Source Registry
Berkenalan dengan Registry Container
Perkembangan teknologi kontainer berkembang pesat, karena fleksibilitas, kemudahan, dan kecepatan yang ditawarkan untuk deploy aplikasi, aplikasi dan semua depedencies yang dibutuhkan untuk menjalankannya dibungkus dalam suatu image yang kemudian image tersebut akan dijalankan dalam kontainer. Penyimpanan image dari container ini biasa disebut dengan registry. Registry dapat berupa publik ataupun privat, salah satu aplikasi untuk membangun registry privat adalah Harbor, dengan menggunakan Harbor kita bisa membangun sendiri registry untuk penyimpanan image dari kontainer.
Penjelasan tentang Harbor
Harbor adalah project yang lulus dari CNCF (Cloud Native Computing Foundation) untuk image container registry, Harbor dapat digunakan untuk menyimpan dan mendistribusikan image yang dijalankan Docker. Docker adalah platform open source yang dapat digunakan untuk menjalankan kontainer.
Perancangan Sistem
Untuk menginstalasi Harbor kali ini digunakan VM yang sebelumnya saya gunakan sebagai master dari klaster Kubernetes, dengan spesifikasi
VCPU: 2 core
Memory: 2GB
Storage: 15GB
Untuk software yang diperlukan untuk menjalankan Harbor adalah Docker dan Docker-compose. Docker digunakan untuk menjalankan kontainer yang akan digunakan oleh Harbor, Docker-compose adalah tools yang digunakan untuk mengelola aplikasi multi-container.Kebutuhan Non-fungsional
Untuk saat ini instalasi normal sudah cukup untuk menjalankan aplikasi Harbor
Instalasi Harbor dan Pembahasan Error
Pertama unduh dan ekstrak file Harbor dari GitHub Harbor
wget https://github.com/goharbor/harbor/releases/download/v2.6.1/harbor-offline-installer-v2.6.1.tgz
tar xzvf harbor-offline-installer-v2.6.1.tgz
Kemudian pindah ke folder Harbor dan salin file template harbor.yml.tmpl
lalu edit menggunakan teks editor nano
cd harbor
cp harbor.yml.tmpl harbor.yml
nano harbor.yml
Karena tidak akan menggunakan konfigurasi HTTPS maka perlu memberikan comment pada baris yang berhubungan dengan konfigurasi HTTPS
# https related config
# https:
# https port for harbor, default is 443
# port: 443
# The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
Kedua install Docker dan Docker-compose
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
apt-get install docker-ce
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod u+x /usr/local/bin/docker-compose
Terakhir jalankan file ./install.sh
untuk menginstal Harbor
Ketika melakukan instalasi Harbor berdasarkan langkah di atas terdapat beberapa masalah yang muncul.
Pertama masalah hostname. Pada file harbor.yml terdapat parameter untuk memasukan hostname, ketika hostname belum diganti dari reg.mydomain.com maka ketika menjalankan file install.sh akan menemui error untuk mengganti hostname. Solusi ganti dengan IP atau hostname dari VM yang digunakan untuk instalasi Harbor.
Kedua masalah port, default port dari HTTP adalah 80 dan ketika Harbor sudah terinstall tidak bisa diakses. Sewaktu mengecek running container menggunakan command docker ps menunjukkan IP 0.0.0.0 port 80 di-forward menuju port 8080.
Hal ketika mencoba mengakses dari luar menggunakan IP dan port 80 tidak bisa diakses. Namun ketika diakses dari internal VM IP 0.0.0.0:80 halaman Harbor dapat diakses, hal ini berarti Harbor telah berhasil diinstal namun masih ada kesalahan konfigurasi namun saya tidak tahu mengapa ini bisa terjadi, kemungkinan ada konflik setingan port atau web-server. Alhasil saya mencoba untuk mengubah setting port HTTP di Harbor menggunakan port 8099.
Untuk mengganti konfigurasi port pada Harbor, pertama stop container yang berjalan kemudian update file yaml Harbor dan jalankan script ./prepare untuk mengupdate konfigurasi Harbor dan jalankan lagi container.
docker-compose down -v
nano harbor.yml
./prepare
docker-compose up -d
Hasilnya sekarang Harbor sudah berjalan pada port yang ditentukan dan bisa diakses dari luar server.
Yeay, instalasi Harbor berhasil dilakukan.
Testing Pull and Push Image
Registry untuk menyimpan image sudah berhasil diinstal sekarang kita akan mencoba untuk pull image nginx:alpine
ctr image pull docker.io/library/nginx:alpine
Kemudian push image ke registry
ctr image push --platform linux/amd64 --plain-http -u admin:Harbor12345 10.2.2.10:8099/library/nginx:alpine
Hasilnya image tidak berhasil di-push karena tidak ditemukan, ternyata setelah membaca beberapa referensi image perlu di-tag terlebih dahulu sebelum melakukan push image.
ctr image tag docker.io/library/nginx:alpine 10.2.2.10:8099/library/nginx:alpine
Image berhasil di-push ke registry
Kesimpulan
- Private registry menggunakan Harbor berhasil diinstal, diperlukan Docker untuk menginstal aplikasi Harbor karena aplikasi tersebut berjalan di atas kontainer.
- Kesalahan konfigurasi port pada kontainer menyebabkan Harbor tidak bisa diakses dari luar server, untuk mengubah konfigurasi Harbor, update file harbor.yml dan kontainer perlu di-stop dan di-start kembali.
- Sebelum melakukan push image ke registry diperlukan tag untuk menandai image
Saran
Untuk menambah keamanan pada Aplikasi Harbor instalasi aplikasi dapat dilakukan dengan mengaktifkan konfigurasi lebih lanjut dengan menggunakan protokol HTTPS.
Referensi:
https://computingforgeeks.com/install-harbor-registry-centos-debian-ubuntu/
https://www.dreamit.ltd/2022/02/02/push-pull-images-without-docker/
Harbor Install Guide (ticket internal ditulis oleh Rizki Muhammad – Btech)