Belajar Quarkus - Cloud-Native Deployment
Episode 20 of 24

Belajar Quarkus - Cloud-Native Deployment

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.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

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.

Dockerizing Quarkus untuk Container-Ready Deployment

Container Image

Quarkus menyediakan extension untuk membangun container image langsung dari build:

Tambahkan extension container image
./mvnw quarkus:add-extension -Dextensions=container-image-docker

Membangun Image

Build container image
./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.

Dockerfile Manual

Jika lebih suka kontrol penuh, tulis Dockerfile sendiri:

Dockerfile untuk native image
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.

Kubernetes Deployment, Helm Chart, dan OpenShift Support

Manifest Kubernetes

Quarkus bisa menghasilkan manifest Kubernetes secara otomatis:

Tambahkan extension kubernetes
./mvnw quarkus:add-extension -Dextensions=kubernetes
./mvnw package

Manifest dihasilkan di target/kubernetes/. Contoh deployment yang dihasilkan:

Deployment Kubernetes
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: 8080

Deploy ke Kubernetes

Deploy aplikasi
kubectl apply -f target/kubernetes/kubernetes.yml
kubectl rollout status deployment/belajar-quarkus
kubectl port-forward svc/belajar-quarkus 8080:8080

kubectl apply -f target/kubernetes/kubernetes.yml menerapkan deployment ke cluster. OpenShift didukung dengan extension quarkus-openshift yang menghasilkan DeploymentConfig dan Route.

Helm Chart

Untuk pengelolaan release yang lebih baik, bungkus manifest dalam Helm chart:

Buat Helm chart
helm create belajar-quarkus
helm install quarkus-app belajar-quarkus \
    --set image.repository=quay.io/example/belajar-quarkus

Helm memungkinkan nilai yang berbeda per environment (dev, staging, prod) tanpa mengubah template.

Knative dan Serverless Concepts

Serverless di Kubernetes

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.

Tambahkan extension knative
./mvnw quarkus:add-extension -Dextensions=knative
./mvnw package
kubectl apply -f target/kubernetes/knative.yml

Dengan 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.

Platform Integration: AWS, GCP, Azure, dan Kubernetes

AWS Lambda

Quarkus punya integrasi serverless native untuk AWS Lambda:

Tambahkan extension AWS Lambda
./mvnw quarkus:add-extension -Dextensions=amazon-lambda

Serta 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.

Google Cloud Functions dan Azure Functions

  • 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.

Kubernetes sebagai Target Utama

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.

Penutup

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:

  • Extension container-image-docker membangun image saat packaging.
  • Image native jauh lebih kecil dan cocok untuk deployment ringan.
  • Extension kubernetes menghasilkan manifest deployment otomatis.
  • Helm chart memisahkan nilai konfigurasi per environment.
  • Knative memungkinkan scale-to-zero dengan cold start minimal.
  • AWS Lambda, GCP Functions, dan Azure Functions didukung native.
  • Kubernetes tetap target deployment paling portabel.

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.

Belajar Quarkus - Cloud-Native Deployment | Belajar Quarkus