จุดเริ่มต้นที่ดีอีกอย่างคือการตั้งค่า Vagrantโดยเฉพาะ หากระบบปฏิบัติการโฮสต์ของคุณเป็น Windows ข้อดีที่ชัดเจนคือ
- การตั้งค่าที่รวดเร็วและไม่เจ็บปวด
- ง่ายต่อการทำลาย / สร้างเครื่องใหม่
- การ จำกัด ทรัพยากรโดยปริยาย
- ความสามารถในการทดสอบมาตราส่วนแนวนอนโดยการสร้างหลายโหนด
ข้อเสีย - คุณต้องใช้ RAM มากและ VirtualBox คือ VirtualBox ... ดีขึ้นหรือแย่ลง
ข้อดี / ข้อเสียแบบผสมคือการแมปไฟล์ผ่าน NFS ในการตั้งค่าของเราเราได้สร้างคำจำกัดความ RC สองชุด - ชุดหนึ่งที่เพียงดาวน์โหลดอิมเมจนักเทียบท่าของแอปพลิเคชันเซิร์ฟเวอร์ของเรา อีก 7 บรรทัดพิเศษที่ตั้งค่าการแมปไฟล์จาก HostOS -> Vagrant -> VirtualBox -> CoreOS -> Kubernetes pod; เขียนทับซอร์สโค้ดจากอิมเมจ Docker
ข้อเสียของสิ่งนี้คือแคชไฟล์ NFS - ด้วยมันมีปัญหาถ้าไม่มีมันก็ช้าอย่างมีปัญหา แม้แต่การตั้งค่าmount_options: 'nolock,vers=3,udp,noac'
ก็ไม่สามารถกำจัดปัญหาการแคชได้อย่างสมบูรณ์ แต่ก็ใช้งานได้เกือบตลอดเวลา งาน Gulp บางอย่างที่รันในคอนเทนเนอร์อาจใช้เวลา 5 นาทีเมื่อใช้เวลา 8 วินาทีบนโฮสต์ OS mount_options: 'nolock,vers=3,udp,ac,hard,noatime,nodiratime,acregmin=2,acdirmin=5,acregmax=15,acdirmax=15'
ประนีประนอมที่ดีน่าจะเป็น
สำหรับการรีโหลดโค้ดอัตโนมัตินั้นเป็นภาษาเฉพาะ แต่เราพอใจกับ devserver ของ Django สำหรับ Python และ Nodemon สำหรับ Node.js สำหรับโครงการส่วนหน้าแน่นอนว่าคุณสามารถทำอะไรได้หลายอย่างเช่น gulp + browserSync + watch แต่สำหรับนักพัฒนาหลายคนการให้บริการจาก Apache นั้นไม่ใช่เรื่องยากและเพียงแค่ทำการรีเฟรชแบบดั้งเดิม
เราเก็บไฟล์ yaml ไว้ 4 ชุดสำหรับ Kubernetes Dev, "devstable", stage, prod ความแตกต่างระหว่างสิ่งเหล่านี้คือ
- ตัวแปร env ตั้งค่าสภาพแวดล้อมอย่างชัดเจน (dev / stage / prod)
- จำนวนแบบจำลอง
- devstable, stage, prod ใช้ภาพนักเทียบท่า
- dev ใช้อิมเมจนักเทียบท่าและแมปโฟลเดอร์ NFS ด้วยซอร์สโค้ดเหนือพวกเขา
มันมีประโยชน์มากในการสร้างจำนวนมากของนามแฝงทุบตีและเติมข้อความอัตโนมัติ - ฉันสามารถเพียงพิมพ์และจะทำrec users
kubectl delete -f ... ; kubectl create -f ...
ถ้าฉันต้องการให้การตั้งค่าทั้งหมดเริ่มต้นฉันพิมพ์recfo
และมันจะสร้างบริการขึ้นมาใหม่โดยดึงอิมเมจนักเทียบท่าล่าสุดนำเข้า db dump ล่าสุดจาก Staging env และล้างไฟล์ Docker เก่าเพื่อประหยัดเนื้อที่