Laravel adalah framework PHP open-source untuk mengembangkan aplikasi web. Framework ini mengikuti pola arsitektur model-view-controller (MVC). Laravel menyediakan sintaks yang ekspresif dan serangkaian alat serta fitur yang tangguh yang dirancang untuk membuat pengembangan lebih cepat dan mudah sekaligus mengurangi tugas-tugas umum yang digunakan dalam banyak proyek web.
Saat ini di mana kecepatan dan keandalan harus berjalan beriringan, lingkungan produksi membutuhkan kemampuan yang tangguh, termasuk penanganan kegagalan otomatis, mekanisme perbaikan mandiri, dan penskalaan dinamis untuk memenuhi beban kerja yang bervariasi. Fitur-fitur ini sangat penting untuk mempertahankan aplikasi yang andal dan berkinerja tinggi dalam skenario dunia nyata.
Mengemas aplikasi PHP-Laravel lama Anda ke dalam kontainer membuatnya portabel dan tidak bergantung pada infrastruktur. Kontainer mengemas aplikasi, dependensinya, dan lingkungan runtime-nya ke dalam unit standar. Ketika dikombinasikan dengan kemampuan orkestrasi Kubernetes, pendekatan kontainerisasi ini memungkinkan penyebaran, penskalaan, dan pengelolaan aplikasi Laravel yang efisien di infrastruktur cloud modern.
Melalui perjalanan modernisasi aplikasi PHP-Laravel Anda untuk penerapan Kubernetes. Baik Anda menjalankan layanan API dengan trafik tinggi, arsitektur microservices, atau aplikasi web tradisional, Anda akan mempelajari cara memanfaatkan Kubernetes untuk memastikan aplikasi Laravel Anda dapat diskalakan, andal, dan mudah dipelihara.
Mengeksplorasi dua metode untuk menyebarkan aplikasi Express.js:
– Menggunakan Devtron untuk Penyebaran Otomatis
– Menggunakan Kubernetes Secara Manual
Menerapkan Aplikasi PHP-Laravel di Kubernetes
Menerapkan aplikasi PHP-Laravel ke Kubernetes melibatkan beberapa langkah. Mari kita tinjau terlebih dahulu keseluruhan prosesnya, kemudian kita bahas berbagai langkah tersebut secara mendalam.
Langkah Implementasi:
– Menulis dan membangun aplikasi PHP-Laravel.
– Mengontainerisasi Aplikasi PHP-Laravel
– Unggah kontainer ke Container Registry seperti DockerHub.
– Buat Manifest YAML yang diperlukan untuk Sumber Daya Kubernetes.
– Terapkan manifes YAML ke klaster Kubernetes.
Prasyarat
Sebelum melanjutkan proses penyebaran, pastikan Anda telah memenuhi prasyarat berikut.
– Aplikasi PHP-Laravel
– Buruh pelabuhan
– Kubectl
– Klaster Kubernetes seperti ini
Metode 1. Menerapkan Aplikasi PHP-Laravel Menggunakan Devtron
Devtron adalah platform manajemen Kubernetes yang menyederhanakan seluruh siklus hidup DevOps. Platform ini mengotomatiskan pembuatan Dockerfile dan manifest Kubernetes, membangun aplikasi, dan mengelola penyebaran melalui antarmuka pengguna yang intuitif.
1. Buat Aplikasi Devtron dan Tambahkan Repositori Git
– Dari halaman utama Devtron, buat aplikasi Devtron baru.
– Tambahkan repositori Git yang berisi kode aplikasi PHP-Laravel.
2. Konfigurasi Build
– Devtron akan mengambil kode dari repositori dan membangun kontainer Docker.
– Anda perlu mengkonfigurasi OCI Container Registry.
– Pilih dari tiga opsi pembuatan:
— Gunakan Dockerfile yang sudah ada.
— Buat Dockerfile (menggunakan templat Devtron untuk aplikasi Go)
— Gunakan Buildpack
3. Konfigurasi Penyebaran
– Devtron menyediakan templat YAML yang telah dikonfigurasi sebelumnya untuk penyebaran Kubernetes.
– Konfigurasikan ingress, autoscaler, dan pengaturan deployment lainnya.
4. Membuat Pipeline CI/CD
– Pipeline CI akan membangun aplikasi dan mengirimkan image ke registry.
– Pipeline CD akan memicu deployment di cluster Kubernetes.
– Konfigurasikan Tahap Pra dan Pasca (misalnya, pemindaian keamanan, pengujian unit).
5. Memicu Pipeline Build dan Deploy
– Pilih cabang Git dan picu tahap build.
– Setelah proses build selesai, picu tahap deployment.
– Devtron akan menyebarkan aplikasi dan menampilkan:
— Status penyebaran
— Kesehatan aplikasi
— Detail sumber daya Kubernetes
— Kerentanan keamanan
— Opsi pengembalian (rollback) jika terjadi kesalahan
Setelah aplikasi di-deploy, Anda akan dapat melihat kesehatan aplikasi, status deployment, kerentanan keamanan, sumber daya Kubernetes aplikasi, dan banyak lagi.
Metode 2. Menerapkan Aplikasi PHP-Laravel Secara Manual Menggunakan Kubernetes
1. Buat Dockerfile (Debian 13, composer:2.8.8, nginx-extras, php8.4-fpm dan php-laravel)
Dockerfile adalah serangkaian instruksi untuk membangun citra kontainer. Berikut adalah Dockerfile untuk mengkontainerisasi aplikasi Express.js:
# Stage 1: Build dependencies & install Composer
FROM debian:13 AS build
# Set environment variables
ENV DEBIAN_FRONTEND=noninteractive \
COMPOSER_ALLOW_SUPERUSER=1 \
COMPOSER_HOME=/composer
# Install system dependencies
RUN apt-get update && apt-get install -y \
curl \
unzip \
git \
ca-certificates \
php8.4-cli \
php8.4-common \
php8.4-mbstring \
php8.4-xml \
php8.4-bcmath \
php8.4-curl \
php8.4-zip \
&& rm -rf /var/lib/apt/lists/*
# Install Composer 2.8.8
RUN curl -sS https://getcomposer.org/download/2.8.8/composer.phar -o /usr/local/bin/composer \
&& chmod +x /usr/local/bin/composer
# Copy Laravel project files
WORKDIR /var/www/html
COPY . .
# Install Laravel dependencies
RUN composer install --no-dev --optimize-autoloader
# Stage 2: Production image with PHP-FPM & Nginx
FROM debian:13
# Install PHP-FPM, Nginx Extras, and required extensions
RUN apt-get update && apt-get install -y \
nginx-extras \
php8.4-fpm \
php8.4-mysql \
php8.4-Aapcu \
php8.4-exif \
php8.4-pcntl \
php8.4-bcmath \
php8.4-bz2 \
php8.4-cgi \
php8.4-cli \
php8.4-common \
php8.4-bcmath \
php8.4-gd \
php8.4-igbinary \
php8.4-imagick \
php8.4-imap \
php8.4-intl \
php8.4-ssh2 \
php8.4-ldap \
php8.4-mbstring \
php8.4-memcache \
php8.4-mysql \
php8.4-opcache \
php8.4-pgsql \
php8.4-redis \
php8.4-soap \
php8.4-xml \
php8.4-xmlrpc \
php8.4-zip \
php8.4-curl \
supervisor \
&& rm -rf /var/lib/apt/lists/*
# Copy application from build stage
WORKDIR /var/www/saksenengku
COPY --from=build /var/www/saksenengku /var/www/saksenengku
# Configure Nginx
COPY ./docker/nginx.conf /etc/nginx/nginx.conf
# Configure PHP-FPM
RUN sed -i 's|listen = /run/php/php8.4-fpm.sock|listen = 9000|' /etc/php/8.4/fpm/pool.d/www.conf
# Configure Supervisor to run both PHP-FPM and Nginx
COPY ./docker/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# Set permissions for Laravel storage & bootstrap cache
RUN chown -R www-data:www-data /var/www/saksenengku/storage /var/www/saksenengku/bootstrap/cache
EXPOSE 80
CMD ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisor/conf.d/supervisord.conf"]docker/nginx.conf
user www-data;
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 100000;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
events {
worker_connections 4000;
use epoll;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name _;
root /var/www/saksenengku/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
}2. Build dan Push images Docker
– Jalankan perintah berikut untuk membuat image Docker:
docker build -t saksenengku/php-laravel-app:v1
– Push image ke DockerHub:
docker push saksenengku/php-laravel-app
3. Membuat Deployment Kubernetes dan Manifest Layanan
– Buat file deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: laravel-kubernetes-saksenengku
spec:
selector:
matchLabels:
run: laravel-kubernetes-saksenengku
template:
metadata:
labels:
run: laravel-kubernetes-saksenengku
spec:
containers:
- name: saksenengku
image: bhushannemade/laravel-kubernetes-saksenengku
ports:
- containerPort: 80
env:
- name: APP_KEY
value: base64:cUPmwHx4LXa4Z25HhzFiWCf7TlQmSqnt98pnuiHmzgY=– Buat file service.yaml:
apiVersion: v1
kind: Service
metadata:
name: laravel-kubernetes-saksenengku
spec:
type: NodePort
selector:
run: laravel-kubernetes-saksenengku
ports:
- port: 80
targetPort: 80
nodePort: 30004. Lakukan deployment ke Kubernetes
Jalankan perintah berikut untuk menerapkan manifest:
kubectl apply -f deployment.yaml service.yaml
Aplikasi Express.js Anda kini telah berhasil di-deploy ke Kubernetes
Tantangan dan Solusi Umum
1. Manajemen Ukuran image Kontainer
— Gunakan Multi-Stage Build untuk memisahkan lingkungan build dan runtime.
— Gunakan image dasar yang ringan seperti Alpine atau Distroless untuk mengurangi ukuran.
2. Manajemen Sumber Daya
— Tetapkan Batas Memori dan CPU untuk menghindari penggunaan berlebihan.
— Terapkan Autoscaling (HPA) untuk menangani beban kerja yang bervariasi.
3. Strategi Deployment
— Pembaruan bertahap untuk memastikan penerapan tanpa waktu henti.
— Penanganan Penghentian Sistem yang Baik untuk menghindari terputusnya lalu lintas data yang sedang berjalan.
Setelah membahas dua pendekatan untuk menerapkan aplikasi PHP-Laravel di Kubernetes:
– Deployment Kubernetes secara manual menggunakan Docker dan manifest YAML.
– Deployment Devtron otomatis dengan pipeline CI/CD bawaan dan konfigurasi tingkat lanjut.
Menggunakan Devtron menyederhanakan Deployment Kubernetes, mengurangi upaya manual, dan meningkatkan efisiensi.

