Kubernetes adalah sistem manajemen orkestrasi open-source yang digunakan untuk otomatisasi deployment, skalabilitas, dan manajemen aplikasi kontainer. Kubernetes menyediakan cara untuk mengelola dan menyelaraskan kontainer Docker di lingkungan yang besar dan dinamis.
Mengenal Kubernetes
- Node dan Cluster:
- Kubernetes bekerja dengan konsep node, yang bisa berupa mesin fisik atau virtual.
- Node-node ini dikelompokkan ke dalam sebuah cluster yang dikelola oleh master node.
- Master Node:
- Master node bertanggung jawab atas manajemen cluster dan mengatur kerja node-node lainnya.
- Pod:
- Unit dasar dalam Kubernetes.
- Pod dapat berisi satu atau beberapa kontainer yang berbagi sumber daya dan jaringan.
- Service:
- Cara untuk mengekspos aplikasi ke luar cluster atau di antara pod di dalam cluster.
Langkah-langkah Build, Push, dan Run Container dengan Kubernetes
1. Persiapkan Aplikasi dan Dockerfile:
- Buat aplikasi sederhana dan buat Dockerfile yang mendefinisikan cara menjalankan aplikasi tersebut dalam container.
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
2. Build Image:
- Gunakan perintah
docker build
untuk membangun image dari Dockerfile.
docker build -t nama_pengguna/nama_aplikasi:tag .
3. Push Image ke Registry:
- Note : Pastikan ketika mau push image ke registry di beri tag dlu image localnya sesuai dengan repository misalnya fadhellya/app:1.0 kemudian baru di push
- Upload image ke Docker Hub atau registry lainnya.
docker push nama_pengguna/nama_aplikasi:tag
4. Konfigurasi Kubernetes Deployment:
- Buat file YAML untuk Deployment.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nama-deployment
spec:
replicas: 3
selector:
matchLabels:
app: nama-aplikasi
template:
metadata:
labels:
app: nama-aplikasi
spec:
containers:
- name: nama-container
image: nama_pengguna/nama_aplikasi:tag
ports:
- containerPort: 3000
5. Deploy Aplikasi:
- Gunakan perintah
kubectl apply
untuk menerapkan konfigurasi deployment.
kubectl apply -f nama_file.yaml
6. Expose Aplikasi melalui Service:
- Buat file YAML untuk Service.
apiVersion: v1
kind: Service
metadata:
name: nama-service
spec:
selector:
app: nama-aplikasi
ports:
- protocol: TCP
port: 80
targetPort: 3000
type: LoadBalancer
7. Expose Aplikasi:
- Gunakan perintah
kubectl apply
untuk menerapkan konfigurasi service.
kubectl apply -f nama_file.yaml
8. Cek Status Aplikasi:
- Gunakan perintah
kubectl get
untuk melihat status pod dan service.
kubectl get pods kubectl get services
9. Akses Aplikasi:
- Dapatkan alamat IP atau URL yang diberikan oleh LoadBalancer untuk mengakses aplikasi.