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: pull from git repo 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 h4. Flow v3: push pipeline * In theory we want every zone change to create a new version number * Actually we have this already with the git commit Nothing to be done here.