Overview
ArgoCD adalah sebuah alat open-source yang digunakan untuk continuous delivery (CD) dalam DevOps, yang memungkinkan otomatisasi, manajemen, dan monitoring aplikasi Kubernetes.
Dikembangkan oleh Argo Project dan disponsori oleh CNCF (Cloud Native Computing Foundation), ArgoCD berfokus pada pendekatan GitOps, di mana Git digunakan sebagai sumber kebenaran utama untuk mendefinisikan dan mengelola infrastruktur serta aplikasi.
Berikut adalah beberapa fitur dan fungsi utama dari ArgoCD:
-
GitOps: ArgoCD mengimplementasikan pendekatan GitOps, di mana konfigurasi aplikasi disimpan dalam repository Git.
-
Deployment Otomatis: ArgoCD secara otomatis mendeteksi perubahan yang dilakukan pada repository Git dan mengaplikasikan perubahan tersebut ke cluster Kubernetes. Hal ini mengurangi intervensi manual dan meningkatkan efisiensi deployment.
-
Sinkronisasi dan Penyimpangan: ArgoCD memantau cluster Kubernetes untuk memastikan bahwa keadaan saat ini konsisten dengan definisi yang ada di repository Git. Jika ditemukan penyimpangan (drift), ArgoCD dapat memberikan notifikasi atau secara otomatis menyinkronkan kembali ke keadaan yang diinginkan.
-
Manajemen Aplikasi: ArgoCD menyediakan antarmuka pengguna yang intuitif, baik berbasis web maupun CLI.
-
Keamanan dan Kontrol Akses: ArgoCD mendukung kontrol akses RBAC.
-
Integrasi dengan CI/CD: ArgoCD dapat diintegrasikan dengan alat continuous integration (CI) lainnya.
-
Multi-Cluster Management: ArgoCD mendukung manajemen aplikasi di beberapa cluster Kubernetes.
Hal - hal yang akan di bahas di artikel ini adalah:
- Cara setup ArgoCD di cluster Kubernetes.
- Cara expose ArgoCD ke public DNS dengan menggunakan ingress.
- Cara setup repository untuk ter-integrasi dengan ArgoCD.
- Automate deployment dengan ArgoCD.
Pre-requisites
- ArgoCD CLI
- kubectl
Getting Started
Install ArgoCD
Install ArgoCD CLI
Opsi install dengan OS lainnya https://argo-cd.readthedocs.io/en/stable/cli_installation/
Expose ArgoCD via port-forwarding
Perintah diatas adalah cara untuk meng-expose service argocd-server dari port 443 ke luar port 8080 di komputer lokal kita.
Untuk url nya bisa di akses di http://localhost:8080
.
Setup Auth
Login via CLI
Update password
Hapus initial password untuk keamanan.
Hapus secret intial password
Expose ArgoCD via Ingress Network
Sekedar informasi argocd default nya ter-expose di port :443
yaitu port HTTPS, untuk di case ini, kita akan merubah configurasi nya.
Plan-nya kita akan expose via ingress traefik, untuk https cukup serahkan ke traefik, di level service cukup expose port 80
saja.
tambahkan flag —insecure di command entrypoint argocd-server.
Kemudian lanjut edit service svc/argocd-server
dan hapus port :443
.
Create Ingress
ingress.yaml
Tunggu sekitar 30 menit, argocd sudah bisa di akses melalui public DNS.
Create automate deployment with ArgoCD
Selanjutnya kita akan coba deployment dengan menggunakan argcd, untuk manifest nya silahkan lihat di bawah.
application.yaml
deployment.yaml
service.yaml
Referensi bisa di cek disini https://github.com/ak9024/argocd/tree/main/example/nginx
Yup sampai disini harusnya service nginx sudah ter-deploy, dan setiap ada perubahan yang masuk di git repository kita, akan otomatis ter-deploy oleh argocd.