Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mufidu/jobhun-devops-test
Muhammad Mufid Utomo - DevOps - Technical Test Jobhun Internship 2023
https://github.com/mufidu/jobhun-devops-test
Last synced: 2 days ago
JSON representation
Muhammad Mufid Utomo - DevOps - Technical Test Jobhun Internship 2023
- Host: GitHub
- URL: https://github.com/mufidu/jobhun-devops-test
- Owner: mufidu
- Created: 2023-04-23T14:20:36.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-06-29T14:52:17.000Z (5 months ago)
- Last Synced: 2024-06-29T16:23:35.288Z (5 months ago)
- Size: 326 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Muhammad Mufid Utomo - DevOps - Technical Test Jobhun Internship 2023
## Soal
a. Buatlah Script Github Actions untuk Deploy GitHub Repo ke SSH Instance!\
b. Buatlah Kubernetes YAML File untuk Deploy App disertai penjelasannya!## Solusi
Saya mengerjakan kedua soal secara sekaligus karena saya merasa kedua soal tersebut bisa dikerjakan secara bersamaan dan saya juga dapat mengaplikasikan pengetahuan saya dalam membuat Kubernetes cluster dan mengimplementasikan praktik continuous deployment dengan GitHub Actions.
Konfigurasi untuk Kubernetes cluster di kubernetes.yaml telah dites di [ValidKube](https://validkube.com/) dan berhasil tidak mengeluarkan error. Namun, karena saya tidak memiliki akses ke instance SSH, saya tidak dapat mengetes apakah aplikasi Wordpress yang saya deploy ke Kubernetes cluster berhasil berjalan.
### GitHub Actions
Saya membuat file deploy.yaml yang berada di .github/workflows sebagai konfigurasi untuk workflow Github Actions yang akan dijalankan ketika kita melakukan push ke branch `main`. Workflow ini akan menjalankan serangkaian perintah untuk mendeploy repo GitHub ini ke instance SSH, lalu mendeploy Kubernetes cluster yang berisi aplikasi Wordpress. Berikut 3 langkah yang dilakukan oleh workflow ini:
- Checkout code: Langkah ini akan mengambil kode dari repository ke runner Github Actions.
- Setup SSH: Langkah ini akan mengatur koneksi SSH ke instance target menggunakan action webfactory/ssh-agent. Secret SSH_PRIVATE_KEY digunakan untuk autentikasi koneksi SSH dan disimpan di GitHub menggunakan fitur [encrypted secrets](https://docs.github.com/en/actions/security-guides/encrypted-secrets).
- Deploy to Kubernetes: Langkah ini akan melakukan deploy aplikasi WordPress ke cluster Kubernetes menggunakan perintah kubectl apply dengan file konfigurasi kubernetes.yaml.
### Kubernetes
Saya menggunakan Wordpress sebagai contoh aplikasi yang akan dideploy ke Kubernetes. File kubernetes.yaml berisi konfigurasi untuk deployment dan service Wordpress. Berikut adalah penjelasan singkat mengenai konfigurasi Kubernetes yang saya gunakan:
1. Deployment Wordpress
Deployment Wordpress akan menggunakan image `wordpress:latest` dan membuat 2 replika. Kemudian, di dalamnya terdapat beberapa environment variable yang digunakan untuk mengatur nama host, user, dan password database MySQL. Deployment ini juga akan membuat sebuah volume yang akan di-mount ke container MySQL sebagai persistent storage, dan menggunakan port 80 sebagai port yang akan di expose ke service Wordpress.
2. Service Wordpress
Service Wordpress ini mengekspos deployment WordPress di dalam cluster Kubernetes lewat port 80.