DevOps & Hạ Tầng Container

Chuyển Đổi Docker Compose Sang Kubernetes

Chuyển đổi docker-compose.yml sang Kubernetes Deployment, Service, ConfigMap, PersistentVolumeClaim và Ingress chuẩn production. 100% xử lý tại trình duyệt, bảo mật tuyệt đối.

Quick Presets:
100% In-Browser Private
Kubernetes Manifest Settings
Production Kubernetes YAML
apiVersion: v1
kind: ConfigMap
metadata:
  name: web-config
  namespace: production
  labels:
    app: web
    tier: backend
data:
  NODE_ENV: production
  PORT: "3000"
  REDIS_HOST: redis-service
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-redis-data-pvc
  namespace: production
  labels:
    app: redis
    tier: backend
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: production
  labels:
    app: web
    tier: backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: myorg/nextjs-app:v1.0.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000
              name: port-1
          envFrom:
            - configMapRef:
                name: web-config
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            tcpSocket:
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            tcpSocket:
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: production
  labels:
    app: redis
    tier: backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: redis:7-alpine
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 6379
              name: port-1
          volumeMounts:
            - name: redis-data
              mountPath: /data
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            tcpSocket:
              port: 6379
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            tcpSocket:
              port: 6379
            initialDelaySeconds: 5
            periodSeconds: 10
      volumes:
        - name: redis-data
          persistentVolumeClaim:
            claimName: redis-redis-data-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: web-service
  namespace: production
  labels:
    app: web
    tier: backend
spec:
  type: ClusterIP
  selector:
    app: web
  ports:
    - name: port-1
      port: 3000
      targetPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  namespace: production
  labels:
    app: redis
    tier: backend
spec:
  type: ClusterIP
  selector:
    app: redis
  ports:
    - name: port-1
      port: 6379
      targetPort: 6379
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: production-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts:
        - app.example.com
      secretName: app-example-com-tls
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /web
            pathType: Prefix
            backend:
              service:
                name: web-service
                port:
                  number: 3000
          - path: /redis
            pathType: Prefix
            backend:
              service:
                name: redis-service
                port:
                  number: 6379
Advertisement

Hướng dẫn sử dụng

  1. Bước 1: Dán nội dung file docker-compose.yml vào khung soạn thảo bên trái, hoặc chọn mẫu cấu hình có sẵn (Next.js + Redis, FastAPI + PostgreSQL).
  2. Bước 2: Tùy chỉnh Kubernetes Namespace, số lượng replica mong muốn và loại Service (ClusterIP, LoadBalancer, NodePort).
  3. Bước 3: Bật tùy chọn Ingress và nhập tên miền nếu bạn cần định tuyến HTTP/HTTPS công khai với chứng chỉ TLS cert-manager.
  4. Bước 4: Xem trước các manifest YAML được tạo ở khung bên phải, chuyển đổi giữa các tab hoặc nhấn "Tải về .yaml" để lưu toàn bộ cấu hình.

Câu hỏi thường gặp

Cơ chế ánh xạ từ Docker Compose sang Kubernetes hoạt động như thế nào?
Mỗi service trong docker-compose.yml được ánh xạ thành một Kubernetes Deployment và một Service ClusterIP tương ứng. Các biến môi trường được nhóm vào ConfigMap, cổng kết nối ánh xạ sang containerPort và Service targetPort, còn volume được chuyển thành PersistentVolumeClaim (PVC).
File Docker Compose YAML của tôi có bị gửi lên máy chủ từ xa không?
Không. Quá trình phân tích cú pháp và chuyển đổi diễn ra hoàn toàn 100% trong trình duyệt của bạn bằng JavaScript client-side. Tên image nội bộ, cổng dịch vụ và các biến môi trường không bao giờ rời khỏi thiết bị của bạn.
Công cụ có hỗ trợ Docker Compose v2, v3 và Compose Spec không?
Có. Công cụ hỗ trợ đầy đủ các định dạng Docker Compose chuẩn, xử lý biến môi trường dạng mảng và key-value, ánh xạ cổng host/container, mount volume, chính sách restart và lệnh entrypoint tùy chỉnh.
Tại sao công cụ tạo ra cả Deployment và Service?
Trong Kubernetes, Deployment quản lý vòng đời và số lượng bản sao (pods) của container. Trong khi đó, Service cung cấp địa chỉ IP ảo và định danh DNS nội bộ ổn định để các pod khác hoặc Ingress controller có thể giao tiếp với ứng dụng.
Tôi có thể tùy chỉnh giới hạn tài nguyên (resource limits) và kiểm tra sức khỏe không?
Có. Bạn có thể bật tùy chọn "Resource Limits" và "Health Probes" trong bảng cấu hình để tự động chèn CPU/Memory requests & limits cùng các probe kiểm tra liveness và readiness qua TCP socket.

The Senior Full-Stack Production Kit (2026)

Checklists, Docker recipes, and SSR error fixes in one dense PDF.

Get Free Kit

Bài viết liên quan

Dev Kits & DataToolsTagsRSSPrivacy PolicyTerms