konstructio / kubefirst

The Kubefirst Open Source Platform
https://kubefirst.konstruct.io/docs
MIT License
1.81k stars 141 forks source link

upgrade of the trifecta components #2151

Open johndietz opened 7 months ago

johndietz commented 7 months ago

What is your feature idea?

ingress-nginx, cert-manager, and external-dns applications need to upgrade to the latest helm charts.

when you provision a new kubefirst management platform (any cloud), the version of these apps will be outdated from latest available. for ease of documentation in this example, we'll assume a github org of kubefunk.net and a mgmt cluster named mgmt-funknet

step 1: the mgmt cluster

the charts for these 3 components on the mgmt stack are defined at: https://github.com/kubefunk-net/gitops/blob/main/registry/clusters/mgmt-funknet/components/ingress-nginx/application.yaml#L14 https://github.com/kubefunk-net/gitops/blob/main/registry/clusters/mgmt-funknet/components/ingress-nginx/application.yaml#L14 https://github.com/kubefunk-net/gitops/blob/main/registry/clusters/mgmt-funknet/components/cert-manager/application.yaml#L12

upgrading each to their latest chart, and then refreshing their app in argocd, and confirming health is step 1.

step 2: physical and virtual workload clusters those upgraded components can also be applied to new clusters created by this mgmt stack. to upgrade physical cluster provisioning, you'll need to update: https://github.com/kubefunk-net/gitops/blob/main/templates/workload-cluster/30-ingress-nginx.yaml#L14 https://github.com/kubefunk-net/gitops/blob/main/templates/workload-cluster/30-cert-manager.yaml#L14 https://github.com/kubefunk-net/gitops/blob/main/templates/workload-cluster/30-external-dns.yaml#L12

once you update these in the templates, you can test how well they orchestrate by going to kubefirst console on this stack, creating a physical cluster, and confirming health on these 3 resources on the new physical cluster in argocd.

repeat these steps for virtual clusters templating: https://github.com/kubefunk-net/gitops/blob/main/templates/workload-vcluster/30-ingress-nginx.yaml#L14 https://github.com/kubefunk-net/gitops/blob/main/templates/workload-vcluster/30-cert-manager.yaml#L14 https://github.com/kubefunk-net/gitops/blob/main/templates/workload-vcluster/30-external-dns.yaml#L12

test with creation of a virtual cluster and confirming health in argocd.

step 3: whatever changeset was required to get this stack operational, needs to be promoted up to the gitops-template repository, so that mgmt clusters will begin with the right charts and templates. there will be corresponding files for each of the files listed in steps 1 and 2 in the gitops-template. for example: kubefunk stack:

all of the cloud stacks need these updates in the gitops-template. to test, provision a new stack using your gitops-template branch, and confirm that you can provision a new mgmt cluster, and then confirm that kubefirst instance can create a new physical and virtual cluster that provisions to 100% health in argocd in its registry.

Why is it needed?

cloud native never sleeps

Is this missing feature preventing you from using kubefirst?

Code of Conduct

chadmcrowell commented 7 months ago

Thanks for the incredible detail @johndietz !! One question: Could I find the external-dns here: https://github.com/kubefunk-net/gitops/blob/main/registry/clusters/mgmt-funknet/components/external-dns/application.yaml

chadmcrowell commented 7 months ago

pull request for step 1: https://github.com/gitops-ing/gitops/pull/1

chadmcrowell commented 7 months ago

All green / health confirmed after ugrade 👍 . Proceeding to step 2

chadmcrowell commented 7 months ago

pull request for step 2: https://github.com/gitops-ing/gitops/pull/2

chadmcrowell commented 6 months ago

pull request for virtual clusters (within step 2): https://github.com/gitops-ing/gitops/pull/3