UNIXDEV
Pre-Production Deployment Checklist
ใช้สำหรับ New Client Onboarding · New Service Deploy · Infrastructure Provisioning
Sign in required
0
Done
0
Remaining
0
Critical Done
0%
Complete
▲
1. Project Readiness & PM
0/0
▼
ALL General
ได้รับ SOW / TOR / Requirements อย่างเป็นทางการแล้ว
มี signed document หรือ email confirmation จาก client
กำหนด Project Lead และ Technical Owner ชัดเจน
ระบุชื่อ PM, Tech Lead, และ Client PIC ใน ClickUp
สร้าง ClickUp Space / Project พร้อม task breakdown ครบ
ใช้ UNIXDEV task template — Infrastructure / App / Security
กำหนด timeline, milestones และ cutoff date ชัดเจน
แจ้ง deployment window ให้ client อนุมัติแล้ว
มี maintenance window ที่ตกลงกันแล้ว — วันเวลา, impact scope
กำหนด rollback plan และ go/no-go criteria ไว้แล้ว
ทำ risk assessment เบื้องต้น — identify blockers ก่อน deploy
Team briefing เสร็จสมบูรณ์ — ทุกคนรู้บทบาทตัวเอง
มี emergency contact list — client, vendor, on-call engineer
■
2. New Client Onboarding — Kubernetes Namespace
0/0
▼
ALL Namespace & RBAC Setup
สร้าง Namespace ด้วยชื่อ convention ที่ถูกต้อง
e.g.
client-prod, client-staging — ห้ามใช้ default namespaceตั้ง Resource Quotas และ LimitRange ให้ Namespace
กำหนด CPU, Memory limit ป้องกัน noisy neighbor บน shared cluster
kubectl apply -f namespace-quota.yaml
สร้าง ServiceAccount และ RBAC Role/RoleBinding
Least-privilege principle — แยก SA สำหรับ app, CI/CD, monitoring
ตั้ง Network Policy — isolate namespace จาก client อื่น
Default deny ingress/egress — อนุญาตเฉพาะ required traffic
Kyverno Policy ผ่านทั้งหมด — ตรวจ compliance ก่อน deploy
ตรวจ: no-latest-tag, require-labels, require-probes, disallow-privilege
กำหนด Labels ครบ — client, environment, team, version
ใช้ labels สำหรับ Zabbix discovery และ Grafana dashboard filtering
CLOUD Cloud-Specific
IAM Role / Service Account สำหรับ cloud services configured
AWS IRSA / GKE Workload Identity / Azure Workload Identity ตั้งค่าถูกต้อง
Cloudflare DNS / Zero Trust Access configured สำหรับ client domain
Tunnel, Access Policy, SSL mode ตั้งค่าถูกต้อง
Storage bucket / PVC provisioned และ access policy ถูกต้อง
Harbor registry project สร้างแล้ว — image pull secret ใส่ใน namespace
ON-PREM On-Premise Specific
VLAN / Network segment สร้างแล้ว และ routing ถูกต้อง
Storage class (Ceph/NFS/Local-Path) verified — provisioner ทำงาน
Internal DNS record สร้างและ resolve ถูกต้อง
MetalLB / Load Balancer IP Pool configured สำหรับ Service LoadBalancer
▲
3. Infrastructure Provisioning
0/0
▼
ALL Kubernetes Cluster Health
Cluster nodes ทั้งหมด Ready — ไม่มี NotReady / Tainted nodes
kubectl get nodes -o wide
Ingress Controller (NGINX) ทำงานปกติ — ตรวจ cert-manager
kubectl get pods -n ingress-nginx
CoreDNS ทำงานปกติ — DNS resolution ใน cluster ถูกต้อง
Persistent Volume Claims (PVCs) ทั้งหมด Bound แล้ว
kubectl get pvc -n <namespace>
Resource usage ของ cluster ไม่เกิน 70% — มี headroom พอ
kubectl top nodes
ALL Database (MariaDB / PostgreSQL)
Database instance provisioned — schema และ user สร้างแล้ว
HA setup verified — MariaDB Galera / replication ทดสอบ failover แล้ว
Backup ตั้งค่าแล้ว — ทดสอบ restore procedure สำเร็จ
Connection pool (ProxySQL / MaxScale) configured ถูกต้อง
Database credentials ใน Kubernetes Secret — ไม่มี hardcode ใน config
ALL Redis / Cache
Redis instance/cluster provisioned และ connection test ผ่าน
Redis password / TLS configured — ไม่ใช้ unauthenticated Redis
Memory maxmemory policy กำหนดแล้ว (allkeys-lru หรือตาม use case)
ALL MinIO / Object Storage
MinIO bucket สร้างแล้ว — access policy กำหนดถูกต้อง
MinIO credentials ปลอดภัย — ใช้ service account ไม่ใช้ root
CLOUD Cloud Infrastructure
Terraform state ล็อค remote backend (S3/GCS/Azure Blob) แล้ว
Security Group / Firewall Rules — principle of least privilege
Auto-scaling policy กำหนดแล้ว — HPA/VPA ตั้งค่าถูกต้อง
Cost alert / budget ตั้งค่าแล้ว — มี billing notification
ON-PREM On-Premise Infrastructure
Server hardware check — CPU, RAM, Disk, NIC ปกติทั้งหมด
RAID / Disk health ตรวจแล้ว — ไม่มี failed/degraded drive
UPS / Power redundancy verified — มี failover power
Ansible inventory updated — playbook ทดสอบ dry-run แล้ว
ansible-playbook site.yml --check
OS patched ล่าสุด — kernel, security packages up to date
●
4. Application Deployment
0/0
▼
ALL Container Image
Docker image build ด้วย specific tag — ไม่ใช้ :latest ใน production
image: registry.unixdev.co.th/client/app:1.2.3
Image scan ผ่าน — Trivy และ Grype ไม่มี CRITICAL CVE
trivy image --severity CRITICAL,HIGH <image>
Base image เป็น official / minimal — ไม่ใช้ image ที่ไม่รู้ที่มา
Image push ไป Harbor registry แล้ว — สามารถ pull ได้จาก cluster
Dockerfile มี non-root user — ไม่รัน process เป็น root
USER 1000
Image built บน read-only filesystem — ไม่มี write-to-container-fs
ALL Kubernetes Manifests / Helm
Deployment manifest มี resource requests และ limits ครบทุก container
Liveness และ Readiness Probe ตั้งค่าถูกต้อง — ทดสอบแล้ว
Deployment strategy กำหนดแล้ว — RollingUpdate พร้อม maxSurge/maxUnavailable
ConfigMap และ Secret แยก environment values ออกจาก image แล้ว
Ingress rules, TLS certificates, annotations ถูกต้อง
HPA (Horizontal Pod Autoscaler) configured สำหรับ stateless services
PodDisruptionBudget กำหนดแล้ว — ป้องกัน all pods down ระหว่าง maintenance
Helm chart values.yaml แยก per environment (prod/staging) ชัดเจน
Init containers (ถ้ามี) ชี้ไปยัง image version ที่ถูกต้อง — ไม่ stale
ALL CI/CD Pipeline (GitLab)
GitLab pipeline ผ่านทุก stage — build, test, scan, deploy
SonarQube scan ผ่าน — Quality Gate GREEN ไม่มี blocker
Semgrep / Checkov scan ผ่าน — ไม่มี HIGH/CRITICAL findings ค้าง
GitLab Agent for Kubernetes configured — deploy จาก pipeline ได้
Environment variables และ secrets ใน GitLab CI/CD ครบ — ไม่มี hardcode
Branch protection rules ใน GitLab — ต้อง approve ก่อน merge to main
◆
5. Security & Compliance
0/0
▼
ALL Secrets & Credentials
ไม่มี credentials / API keys ใน Git repository — ตรวจด้วย gitleaks หรือ trufflehog
Kubernetes Secrets encrypt at rest — ตรวจสอบ encryption provider config
Production credentials แตกต่างจาก staging/dev ทั้งหมด — rotate ก่อน go-live
TLS certificates valid — อายุ > 30 วัน, auto-renew ด้วย cert-manager
ALL Wazuh SIEM
Wazuh agent ติดตั้งและ enrolled ทุก node — agent status ACTIVE
wazuh-control status
Custom rules สำหรับ client application configured ใน Wazuh
Vulnerability detection enabled — scan schedule ตั้งค่าแล้ว
Alert rules และ notification (email/Slack) configured สำหรับ critical events
ALL Falco Runtime Security
Falco deployed ใน cluster — eBPF probe ทำงานปกติ
Custom Falco rules สำหรับ client namespace กำหนดแล้ว
ALL Cloudflare WAF/WAAP
WAF rules enabled — OWASP ruleset active, custom rules ตามระบบ
Bot protection configured — challenge page / block ตามความเหมาะสม
Rate limiting rules ตั้งค่าแล้ว — ป้องกัน DDoS / brute force
Cache rules configured ถูกต้อง — ไม่ cache sensitive endpoints
SSL/TLS mode: Full (Strict) — Minimum TLS 1.2
Cloudflare Zero Trust Access Policy กำหนดสำหรับ internal tools
ALL Compliance
PDPA / Data privacy requirements ตรวจสอบแล้ว — PII handling ถูกต้อง
Audit logging enabled — ทุก access ถูก log ใน Graylog
Penetration test / vulnerability assessment ผ่าน — ไม่มี open criticals
▲
6. Monitoring & Observability
0/0
▼
ALL Zabbix Monitoring
Zabbix host/host-group สร้างสำหรับ client — templates apply แล้ว
Zabbix agent/proxy ทำงานปกติ — items ทั้งหมด SUPPORTED
zabbix_agentd -t system.uptime
Trigger / Alert rules กำหนดสำหรับ CPU, RAM, Disk, Network threshold
Notification media configured — alert ส่งไปถูก team (email/Line/Slack)
Predictive monitoring / anomaly detection configured (ถ้ามี Chronos-Bolt)
ALL Grafana Dashboards
Grafana dashboard สำหรับ client provisioned — infra + app metrics ครบ
Data sources (Prometheus/VictoriaMetrics, Loki, Tempo) เชื่อมต่อแล้ว
Grafana folder / RBAC ตั้งค่าแล้ว — client เห็นเฉพาะ dashboard ของตัวเอง
Alerting rules ใน Grafana / Alertmanager configured — no-data/error alerts ด้วย
ALL Graylog (Centralized Logging)
Log shipper (Filebeat/Fluent Bit) configured — logs ไหลเข้า Graylog แล้ว
Graylog stream / index กำหนดสำหรับ client — retention policy ตั้งค่าแล้ว
Structured logging format (JSON) ตรวจแล้ว — application logs parse ถูกต้อง
Graylog RBAC — client/team เห็นเฉพาะ stream ของตัวเอง
ALL Sentry (Error Tracking)
Sentry project สร้างสำหรับ application — DSN ใส่ใน app config แล้ว
Sentry alert rules กำหนดแล้ว — error rate, new issue notification
Source maps / release tracking configured — errors link กลับไปที่ source code
PII scrubbing rules กำหนดแล้ว ใน Sentry — ไม่ capture sensitive data
■
7. Networking & Connectivity
0/0
▼
ALL DNS & Endpoints
DNS record (A/CNAME) ชี้ไปถูก endpoint — propagation complete
dig +short yourdomain.com
HTTPS endpoint ตอบสนองถูกต้อง — HTTP → HTTPS redirect ทำงาน
curl -I https://yourdomain.com
SSL certificate valid — chain ครบ, ไม่มี self-signed ใน production
openssl s_client -connect yourdomain.com:443
Security headers ครบ — HSTS, X-Frame-Options, CSP, X-Content-Type-Options
ALL Service Connectivity Tests
Application → Database connectivity ทดสอบผ่าน
Application → Redis connectivity ทดสอบผ่าน
Application → External APIs / 3rd party services ทดสอบผ่าน
Inter-service communication ใน cluster ทำงานถูกต้อง
Firewall / Network Policy ไม่บล็อก traffic ที่จำเป็น
CLOUD Cloud Network
VPC peering / Transit Gateway / PrivateLink configured ถูกต้อง
Egress IP ที่ fixed — whitelist กับ 3rd party แล้ว (ถ้าจำเป็น)
ON-PREM On-Prem Network
Firewall rules (iptables/pfsense) verify ใน production network
VPN / Dedicated line พร้อม — latency ต่ำกว่า threshold ที่กำหนด
Network redundancy — bond/LACP configured สำหรับ production servers
●
8. Testing & QA
0/0
▼
ALL Functional Testing
Smoke test ผ่าน — core features ทำงานใน production environment
Integration test ผ่าน — ทุก integration point ทดสอบกับ production APIs
UAT (User Acceptance Testing) ผ่านและ client sign off แล้ว
Regression test — existing functionality ไม่พัง
ALL Performance & Load
Load test ผ่าน — รับ concurrent users ตาม SLA โดยไม่มี error
Response time ตาม SLA — P95 latency ไม่เกิน threshold ที่กำหนด
Memory leak test — application ไม่มี memory growth ผิดปกติ
Database query performance — slow queries ระบุและแก้ไขแล้ว
ALL Failover & Recovery
Rollback procedure ทดสอบใน staging — สามารถ rollback ใน < 15 นาที
Database failover ทดสอบ — application reconnect อัตโนมัติ
Pod restart / crash recovery ทดสอบ — application กลับมาปกติอัตโนมัติ
Backup restore ทดสอบ — RPO/RTO ตาม SLA
◆
9. Documentation & Handover
0/0
▼
ALL Technical Documentation
Architecture diagram updated — ตรงกับ current deployment
Runbook / SOP เขียนครบ — step-by-step สำหรับ ops team
Credentials / access ทั้งหมดบันทึกใน password manager (Vault/Bitwarden)
Network diagram และ IP addressing scheme บันทึกแล้ว
Change log / deployment history บันทึกใน ClickUp หรือ GitLab
API documentation (Swagger/Postman Collection) updated และ share กับ client
ALL Client Handover
Client ได้รับ access credentials ที่จำเป็น — พร้อม 2FA setup
Monitoring dashboard URL และ login ส่งให้ client แล้ว
SLA document ลงนามแล้ว — response time, uptime guarantee ชัดเจน
Support channel (Line/Slack/Email) แจ้ง client และ on-call schedule ส่งแล้ว
Training / walkthrough กับ client team เสร็จสมบูรณ์
▲
10. Post-Deploy — Day-1 Watch
0/0
▼
ALL ช่วงแรกหลัง Go-Live
Monitor Zabbix / Grafana ต่อเนื่อง 2 ชั่วโมงแรกหลัง deploy
ตรวจ Sentry error rate — ไม่มี spike ผิดปกติ
ตรวจ Graylog — ไม่มี ERROR/CRITICAL log ที่ผิดปกติ
ตรวจ Pod status ทุก pod RUNNING — ไม่มี CrashLoopBackOff / OOMKilled
kubectl get pods -n <namespace> -w
Resource usage หลัง go-live ปกติ — ไม่มี unexpected spike
Client confirm ระบบทำงานปกติ — ได้รับ verbal/written confirmation
Go/No-Go decision ทำ — deploy confirmed หรือ rollback executed
Post-deploy report เขียนและส่ง stakeholders แล้ว