สำหรับบริษัทของฉัน ฉันได้รับมอบหมายให้สร้างการกำหนดค่ามาตรฐานและเทมเพลตสำหรับคลัสเตอร์ Kubernetes (EKS) ใน Terraform ที่ปรับใช้ได้โดยใช้ GitLab CI/CD การปรับใช้และการกำหนดค่าเสร็จสิ้นไประยะหนึ่งแล้ว แต่ฉันประสบปัญหาด้านเทมเพลต
นี่คืองานของฉัน: สร้างโครงการเทมเพลต/พื้นที่เก็บข้อมูลที่มีการกำหนดค่าที่บุคคลอื่นสามารถคัดลอกและแก้ไขได้
อย่างไรก็ตาม ฉันต้องสามารถอัปเดตการกำหนดค่าของฉันให้ตรงกับรุ่นหรือคุณสมบัติใหม่ในอนาคต จากนั้นพวกเขาจำเป็นต้องโคลน/คัดลอก/รวมเทมเพลตของฉันกลับเข้าไปในการกำหนดค่าโดยไม่ต้องเขียนทับการกำหนดค่าเฉพาะ
ฉันได้ขอคำแนะนำจากนักพัฒนาอาวุโสคนหนึ่ง และเขาแนะนำให้ฉันสร้างไฟล์การกำหนดค่าประเภทหนึ่ง (เช่น ไฟล์ .tfvars สำหรับ Terraform) ซึ่งการกำหนดค่าเฉพาะสามารถเข้าไปได้ จากนั้นฉันจึงสามารถสรุปเทมเพลตและอัปเดตได้ โดยไม่กระทบต่อการกำหนดค่าในอนาคต สิ่งนี้จะใช้งานได้บนพื้นผิวและตอนนี้ แต่เมื่อมีการเพิ่มคุณสมบัติและคำขอที่เฉพาะเจาะจงมากขึ้นสำหรับฉัน สิ่งนี้จะกลายเป็นสิ่งที่ไม่สามารถบำรุงรักษาได้มากขึ้นในอนาคต
อีกทางเลือกหนึ่งคือการใช้โมดูล Terraform แต่สิ่งนี้ต้องทนทุกข์ทรมานจากผลข้างเคียงที่เป็นไปได้แบบเดียวกัน นั่นคือการเติบโตที่ยุ่งเหยิงที่ดูแลไม่ได้ในภายหลัง
ดังนั้นฉันจึงสูญเสียที่นี่สิ่งนี้ดูเหมือนจะไม่สามารถบำรุงรักษาได้มากนักสำหรับฉันหรือพวกเขาในอนาคต สิ่งสำคัญที่สุดคือ เมื่อมีการอัปเดตเวอร์ชันหลักสำหรับเทมเพลตของฉัน การกำหนดค่าจะเสียหายอย่างแน่นอนโดยที่ฉันไม่มีทางแก้ไขได้โดยไม่ต้องใช้แรงงานคนมากนัก ฉันต้องการทำงานเพิ่มอีกเล็กน้อยในตอนนี้ เพื่อให้สามารถบำรุงรักษาได้ในอนาคตโดยทำงานให้น้อยที่สุดเท่าที่จะทำได้ แต่ฉันไม่สามารถหาทางออกที่ดีได้
ดังนั้นคำถามของฉันจึงกลายเป็น: ฉันจะสร้างเทมเพลตคลัสเตอร์ Terraform Kubernetes ที่บำรุงรักษาได้อย่างถูกต้องได้อย่างไร ซึ่งฉันสามารถอัปเดตโดยใช้ความพยายามน้อยที่สุดในอนาคตได้อย่างไร