Aceasta descrie o soluție în care vă păstrați fișierele yaml într-un depozit GitHub separat de depozitul în care păstrați codul proiectului. Deci, cele două repoziții sunt:
- Proiectul GitHub depozit
- Infrastructură GitHub repo (IaC)
Presupunerea mea este că Flux este apoi îndreptat către repo-ul de infrastructură, astfel încât atunci când se fac modificări acolo, Flux aliniază clusterul cu modificările dorite declarate acum în repo. (Folosim ArgoCD). Când faceți modificări în depozitul de proiect și acțiunea GitHub creează noua imagine (cu o nouă etichetă) și trimite în Azure Container Registry.
Întrebați, apoi întrebați cum să informați instrumentul CI/CD (adică Flux) despre noua etichetă de imagine, astfel încât să poată extrage imaginea proaspătă.
Recomandarea este să luați în considerare utilizarea Kustomize pentru a gestiona actualizarea etichetei în depozitul de infrastructură, astfel încât instrumentul CI/CD să detecteze automat acea modificare în repo și să actualizeze clusterul în consecință folosind noua imagine.
Acest lucru va necesita următoarele:
Adăugați un fișier Kustomization.yaml în depozitul dvs. de infrastructură care conține a) manifestele yaml care descriu infrastructura dvs. pentru proiect și b) eticheta de imagine care trebuie înlocuită.
apiVersion: kustomize.config.k8s.io/v1beta1
fel: Personalizare
resurse:
- resource1.yaml
- resource2.yaml
-...
imagini:
- nume: nume-imagine în manifestul de implementare
newTag: de înlocuit
Apoi, în fluxul de lucru GitHub Action din Project Repo, utilizați acțiunea actions/checkout@v2 pentru a extrage depozitul de infrastructură la distanță. Apoi adăugați acțiunea imranismail/setup-kustomize@v1 și utilizați-o pentru a înlocui fila de imagine. Apoi împingeți modificările înapoi în depozitul de infrastructură. Exemplu de mai jos, modificați pentru a se potrivi situației dvs.:
construiți pași aici
implementează:
necesită: construi
rulează-pe: ubuntu-latest
pași:
- nume: depozit la distanță de checkout
folosește: actions/checkout@v2
cu:
depozit: {depozitul tău github}
indicativ: ${{ secrets.INFRA_REPO_TOKEN }}
cale: infra-repo
- nume: Setup Kustomize
utilizări: imranismail/setup-kustomize@v1
cu:
versiune-kustomize: „3.6.1”
- nume: dezactivați eticheta de imagine
alerga: |
cd infra-repo/{nume repo}
kustomize editați imaginea setată {nume imagine}:{etichetă}
- nume: Commit and push
alerga: |
cd infra-repo/{nume repo}
git config --local user.email [email protected]
git config --local user.name github-actions
git commit -am „actualizează eticheta de imagine”
git push
Aceste link-uri relevante ar trebui să vă ofere și informațiile de care aveți nevoie pentru a vă construi corect fluxul de lucru: