Episode ini membahas deployment cloud-native: Dockerizing Quarkus, deployment ke Kubernetes dengan Helm chart dan dukungan OpenShift, Knative dan serverless concepts, serta integrasi platform AWS, GCP, Azure, dan Kubernetes.

Aplikasi yang sudah diuji dan diamankan tidak berguna jika tidak bisa di-deploy. Di episode ini, kalian akan membawa aplikasi Quarkus ke produksi: membungkusnya dalam container, men-deploy ke Kubernetes, memahami Helm chart dan OpenShift, serta menjajaki serverless dan integrasi platform cloud.
Episode 20 membahas cloud-native deployment secara menyeluruh: Dockerizing Quarkus, Kubernetes deployment dan Helm, Knative dan serverless concepts, serta integrasi dengan AWS, GCP, Azure, dan Kubernetes.
Quarkus menyediakan extension untuk membangun container image langsung dari build:
./mvnw quarkus:add-extension -Dextensions=container-image-docker./mvnw package -Dquarkus.container-image.build=true
docker images | grep belajar-quarkus-Dquarkus.container-image.build=true membangun image Docker saat packaging. Untuk JVM mode, base image JRE cukup; untuk native, base image minimal bisa memakai ubi-micro atau distroless — image jauh lebih kecil.
Jika lebih suka kontrol penuh, tulis Dockerfile sendiri:
FROM registry.access.redhat.com/ubi8/ubi-minimal
WORKDIR /work/
COPY target/*-runner /work/application
RUN chmod 775 /work/application
EXPOSE 8080
CMD ["./application"]Image native bisa sangat kecil (sekitar 60-90MB). Perintah docker build -t belajar-quarkus . membangun image dari Dockerfile ini.
Quarkus bisa menghasilkan manifest Kubernetes secara otomatis:
./mvnw quarkus:add-extension -Dextensions=kubernetes
./mvnw packageManifest dihasilkan di target/kubernetes/. Contoh deployment yang dihasilkan:
apiVersion: apps/v1
kind: Deployment
metadata:
name: belajar-quarkus
spec:
replicas: 3
selector:
matchLabels:
app: belajar-quarkus
template:
metadata:
labels:
app: belajar-quarkus
spec:
containers:
- name: belajar-quarkus
image: quay.io/example/belajar-quarkus:1.0.0
ports:
- containerPort: 8080kubectl apply -f target/kubernetes/kubernetes.yml
kubectl rollout status deployment/belajar-quarkus
kubectl port-forward svc/belajar-quarkus 8080:8080kubectl apply -f target/kubernetes/kubernetes.yml menerapkan deployment ke cluster. OpenShift didukung dengan extension quarkus-openshift yang menghasilkan DeploymentConfig dan Route.
Untuk pengelolaan release yang lebih baik, bungkus manifest dalam Helm chart:
helm create belajar-quarkus
helm install quarkus-app belajar-quarkus \
--set image.repository=quay.io/example/belajar-quarkusHelm memungkinkan nilai yang berbeda per environment (dev, staging, prod) tanpa mengubah template.
Knative Serving memungkinkan aplikasi scale-to-zero: pod hanya aktif saat ada traffic. Quarkus native sangat cocok di sini karena startup cepat menghilangkan cold start latency.
./mvnw quarkus:add-extension -Dextensions=knative
./mvnw package
kubectl apply -f target/kubernetes/knative.ymlDengan quarkus-knative, manifest Knative Service dihasilkan otomatis. Saat tidak ada traffic, replica turun ke nol; saat request datang, pod menyala kembali dalam milidetik berkat native image.
Quarkus punya integrasi serverless native untuk AWS Lambda:
./mvnw quarkus:add-extension -Dextensions=amazon-lambdaSerta handler untuk amazon-lambda-http agar endpoint REST berjalan di API Gateway. Fungsi Lambda Quarkus bisa dikompilasi native sehingga runtime Java ringan dan biaya rendah.
quarkus-google-cloud-functions-http menjalankan aplikasi di Google Cloud Functions.quarkus-azure-functions-http untuk Azure Functions.Keduanya mendukung fungsi HTTP yang mengekspos aplikasi REST kalian. Pola umum: gunakan native image untuk meminimalkan biaya cold start dan memory.
Meski ada integrasi serverless per platform, Kubernetes tetap target paling portabel. Aplikasi Quarkus yang di-containerisasi bisa berjalan di EKS (AWS), GKE (GCP), AKS (Azure), OpenShift, atau cluster on-premise tanpa perubahan kode.
Episode 20 membawa aplikasi kalian ke dunia nyata: memahami Dockerizing Quarkus untuk image JVM dan native, deployment Kubernetes dengan manifest otomatis dan Helm chart, Knative untuk serverless scale-to-zero, serta integrasi dengan AWS, GCP, Azure, dan Kubernetes.
Inti yang harus dibawa pulang:
container-image-docker membangun image saat packaging.kubernetes menghasilkan manifest deployment otomatis.Di episode 21 selanjutnya kita akan membahas CI/CD dan GitOps — pipeline CI/CD untuk Quarkus dengan GitHub Actions atau GitLab CI, build, test, scan, dan deploy automation, GitOps integration dengan Argo CD atau Flux, serta canary release, blue-green deployment, dan rollback.