Project

General

Profile

Task #9565

Updated by Nico Schottelius over 3 years ago

* Basically: git push && pipeline that does the rest 
 * Input from your experiences is appreciated 


 h2. Choices 

 h3. Jenkins 

 * The "standard" 
 * Very heavy (4GB+ memory) 

 h3. "Buildbot":https://buildbot.net/ 

 * Old 
 * Static workers (easy to configure via k8s) 
 * Seems to be fast and easy to setup 

 h3. Gitlab 

 * Highly integrated 
 * Can use k8s workers, can use docker 
 * Widely deployed 
 * Huge and tricky to maintain 

 h3. "GoCD":https://www.gocd.org/kubernetes/ 

 * Recommended by the buildbot author (haaaaa??) 

 h3. "ArgoCD":https://argoproj.github.io/argo-cd/ *and(?)* "argoflow":https://argoproj.github.io/argo-workflows/ 

 TBD 

 h2. Flows 

 h3. DNS Update 

 Questions: 

 * Should we create a stand-alone zone repository? 
 ** Would be very small 
 ** Can only clone head/last commit 
 * If using git pull inside the container, we need to pass along credentials 
 ** possible in a secret 

 h4. Flow v1 

 * We change a zone file in git and push it somewhere 
 * A new helm chart is being created 
 * (maybe in between) bump the chartversion field? 
 ** only if knot was able to run it? 
 * The new helm chart is uploaded to the chartmuseum 
 * The pods/services are notified about a new version 
 ** How? 
 *** Configmap change? 
 *** git pull? 

 h4. Flow v2 

 * The helm chart is given a git repo (+possible secret) 
 * The pod tries reloading every minute 
 ** if checkconf works: restart 
 ** else: reject 
 * A webhook in gitea might be used to trigger the DNS server instances 
 ** Faster deploy 
 ** Question is where to, whether we have 1 hook per cluster, etc. 


 Disadvantage: need to build our own container (?) 

 * In theory a custom container could do that in a pod 

Back