ข้อมูลนี้อธิบายวิธีแก้ปัญหาที่คุณเก็บไฟล์ yaml ไว้ในที่เก็บ GitHub โดยแยกจากที่เก็บที่คุณเก็บโค้ดโครงการไว้ ดังนั้น repos ทั้งสองคือ:
- ที่เก็บโครงการ GitHub
- โครงสร้างพื้นฐาน GitHub repo (IaC)
สมมติฐานของฉันคือ Flux นั้นชี้ไปที่ Infrastructure repo เพื่อที่ว่าเมื่อทำการเปลี่ยนแปลงที่นั่น Flux จะนำคลัสเตอร์อินไลน์กับการเปลี่ยนแปลงที่ต้องการที่ประกาศไว้ใน repo (เราใช้ ArgoCD) เมื่อคุณทำการเปลี่ยนแปลง repo โครงการของคุณและ GitHub Action จะสร้างอิมเมจใหม่ (พร้อมแท็กใหม่) และส่งไปยัง Azure Container Registry ของคุณ
จากนั้นคำถามของคุณจะถามว่าจะให้เครื่องมือ CI/CD (เช่น Flux) ทราบเกี่ยวกับแท็กรูปภาพใหม่ได้อย่างไร เพื่อให้สามารถดึงรูปภาพใหม่ได้
คำแนะนำคือการพิจารณาใช้ Kustomize เพื่อจัดการการอัปเดตแท็กใน repo โครงสร้างพื้นฐาน เพื่อให้เครื่องมือ CI/CD ตรวจพบการเปลี่ยนแปลงนั้นใน repo โดยอัตโนมัติ และอัปเดตคลัสเตอร์ตามนั้นโดยใช้อิมเมจใหม่
สิ่งนี้จะต้องมีสิ่งต่อไปนี้:
เพิ่มไฟล์ Kustomization.yaml ลงใน Infrastructure repo ซึ่งมี a) รายการ yaml ที่อธิบายโครงสร้างพื้นฐานของคุณสำหรับโครงการ และ b) แท็กรูปภาพที่จะแทนที่
apiVersion: kustomize.config.k8s.io/v1beta1
ประเภท: การปรับแต่ง
ทรัพยากร:
-source1.yaml
-source2.yaml
- ...
ภาพ:
- ชื่อ: ชื่อภาพในรายการการปรับใช้ของคุณ
newTag: ที่จะถูกแทนที่
จากนั้นในเวิร์กโฟลว์ GitHub Action ใน Project Repo ให้ใช้การดำเนินการ/checkout@v2 เพื่อดึง repo โครงสร้างพื้นฐานระยะไกล จากนั้นเพิ่มการดำเนินการ imranismail/setup-kustomize@v1 และใช้เพื่อแทนที่แท็บรูปภาพ จากนั้นพุชการเปลี่ยนแปลงกลับไปที่ Infrastructure repo ตัวอย่างด้านล่าง แก้ไขให้เหมาะกับสถานการณ์ของคุณ:
สร้างขั้นตอนที่นี่
ปรับใช้:
ความต้องการ: สร้าง
ทำงานบน: อูบุนตูล่าสุด
ขั้นตอน:
- ชื่อ: ชำระเงิน repo ระยะไกล
ใช้: การดำเนินการ/checkout@v2
กับ:
พื้นที่เก็บข้อมูล: {repo github ของคุณ}
โทเค็น: ${{ secrets.INFRA_REPO_TOKEN }}
เส้นทาง: infra-repo
- ชื่อ: ตั้งค่า Kustomize
ใช้: imranismail/setup-kustomize@v1
กับ:
ปรับแต่งเวอร์ชัน: "3.6.1"
- ชื่อ: ปิดแท็กรูปภาพ
วิ่ง: |
cd infra-repo/{ชื่อรีโป}
ปรับแต่งรูปภาพชุดแก้ไข {ชื่อรูปภาพ}:{แท็ก}
- ชื่อ: กระทำและผลักดัน
วิ่ง: |
cd infra-repo/{ชื่อรีโป}
git config --local user.email [email protected]
git config --local user.name github-actions
git commit -am "อัปเดตแท็กรูปภาพ"
คอมไพล์กด
ลิงก์ที่เกี่ยวข้องเหล่านี้ควรให้ข้อมูลที่คุณต้องการเพื่อสร้างเวิร์กโฟลว์อย่างถูกต้อง: