product ที่ทำอยู่กับบริษัทใช้บริการ Microsoft Azure เป็นหลัก ก็มีทั้ง cloud resource provider และ CICD (เช่น Version control, CICD pipeline, project management ไรงี้) ด้วย พบว่าการใช้งาน Azure KeyVault ซึ่งเป็น secret management ใน CICD pipeline มันดูซับซ้อนเกินไป เลยจดบันทึกไว้หน่อยว่าทีมทำการลดความซับซ้อนเหล่านี้ลงยังไง

เริ่มจากตัวอย่างกันก่อน

ตัวอย่างคือต้องการ SQL database password เพื่อไป connect กับ Spark streaming job ซึ่งระบบใช้ Azure Databricks ไม่ได้ provision อยู่บน Kubernetes จีงไม่สามารถใช้ Secrets ได้ครับ

Development ที่เข้ามาใหม่เริ่มรู้สึกว่า ทำไมต้องเขียน PowerShell script ด้วย Azure ควรจะมี task ในการเชื่อม Azure KeyVault กับ Azure DevOps นะ

ใช้ท่า Azure DevOps task ละกัน

แต่ก็ยังไม่ดีที่สุดนะเพราะเราไม่ได้ deploy แค่ environment เดียว งี้ก็ต้องสร้าง task คล้ายๆกัน ต่างกันแค่ชื่อ

ไปใช้งาน Variable groups แทน

  1. ตรงเมนู​ Azure DevOps ไปที่ Library จะเจอหน้าตาประมาณนี้ ADO VarGroups 1

  2. กดเพิ่ม Variable group จากนั้นใส่ชื่อและ toggle ตรง Link secrets from an Azure key vault as variables เลือก Azure subscription และ KeyVault ที่ต้องการ ADO VarGroups 2

พอ toggle แล้วจะมีส่วนของ Variables โผล่ออกมาครับ เราก็กดเพิ่ม Variable ที่ต้องการได้เลย ADO VarGroups 3

ADO VarGroups 4

  1. แล้วเราก็เรียก Variables ผ่าน Azure DevOps pipeline script ได้เลย

ในกรณีที่เรามี Variable groups ใช้ร่วมกับ Variable ปกติ เราจะต้องแยกออกจากกันด้วย syntax ประมาณนี้

ดูเพิ่มเติมได้ที่ https://docs.microsoft.com/en-us/azure/devops/pipelines/library/variable-groups?view=azure-devops&tabs=yaml เลยครับ