constellation/cli/internal/helm
Daniel Weiße afa7fd0edb
cli: refactor kubernetes package (#2232)
* Clean up CLI kubernetes package

* Rename CLI kubernetes pkg to kubecmd

* Unify kubernetes clients

* Refactor attestation config upgrade

* Update CODEOWNERS file

* Remove outdated GetMeasurementSalt

---------

Signed-off-by: Daniel Weiße <dw@edgeless.systems>
2023-08-21 16:15:32 +02:00
..
charts cli: declare mastersecret as immutable and print attestationCfg diff in warning (#2167) 2023-08-08 13:03:23 +02:00
imageversion bazel: allow custom container_prefix (#1693) 2023-04-27 11:52:02 +02:00
testdata cli: declare mastersecret as immutable and print attestationCfg diff in warning (#2167) 2023-08-08 13:03:23 +02:00
backup_test.go cli: refactor kubernetes package (#2232) 2023-08-21 16:15:32 +02:00
backup.go cli: refactor kubernetes package (#2232) 2023-08-21 16:15:32 +02:00
BUILD.bazel cli: fix incorrect usage of masterSecret salt for clusterID generation (#2169) 2023-08-07 15:24:46 +02:00
cilium.patch deploy cilium via helmchart (#321) 2022-08-12 10:20:19 +02:00
ciliumhelper.go cli: install cilium in cli instead of bootstrapper (#2146) 2023-08-02 15:49:40 +02:00
generateCertManager.sh bazel: add go generate to //:generate target 2023-03-29 12:51:40 -04:00
generateCilium.sh bazel: add go generate to //:generate target 2023-03-29 12:51:40 -04:00
helm_test.go cli: install cilium in cli instead of bootstrapper (#2146) 2023-08-02 15:49:40 +02:00
helm.go Add package design goals to CLI package documentation 2023-08-09 15:42:24 +02:00
init.go cli: add --workspace flag to set base directory for Constellation workspace (#2148) 2023-08-04 13:53:51 +02:00
install.go cli: add --workspace flag to set base directory for Constellation workspace (#2148) 2023-08-04 13:53:51 +02:00
loader_test.go cli: upgrade uses same helm releases as init (#2177) 2023-08-11 15:18:59 +02:00
loader.go cli: upgrade uses same helm releases as init (#2177) 2023-08-11 15:18:59 +02:00
overrides.go cli: fix incorrect usage of masterSecret salt for clusterID generation (#2169) 2023-08-07 15:24:46 +02:00
README.md Fix README 2023-07-20 15:47:12 +02:00
release.go cli: unify chart value setup (#2153) 2023-08-03 13:54:48 +02:00
serviceversion.go cli: output CSI driver versions on status (#2128) 2023-07-27 16:14:36 +02:00
update-aws-load-balancer-chart.sh aws: use new LB controller to fix SecurityGroup cleanup on K8s service deletion (#2090) 2023-07-24 10:30:53 +02:00
update-csi-charts.sh Move CSI charts to separate chart and cleanup loader code 2023-07-20 15:47:12 +02:00
upgrade_test.go cli: upgrade uses same helm releases as init (#2177) 2023-08-11 15:18:59 +02:00
upgrade.go cli: refactor kubernetes package (#2232) 2023-08-21 16:15:32 +02:00
values.go aws: use new LB controller to fix SecurityGroup cleanup on K8s service deletion (#2090) 2023-07-24 10:30:53 +02:00

Helm

Constellation uses helm to install and upgrade deployments to the Kubernetes cluster. Helm wraps deployments into charts. One chart should contain all the configuration needed to run a deployment.

Charts used by Constellation

To make installation and lifecycle management easier, Constellation groups multiple related charts into sub-charts. The following "parent" charts are used by Constellation:

  • cert-manager

  • Cilium

  • constellation-services

    Cluster services (mostly) written by us, providing basic functionality of the cluster

  • csi

    Our modified Kubernetes CSI drivers and Snapshot controller/CRDs

  • operators

    Kubernetes operators we use to control and manage the lifecycle of a Constellation cluster

Chart upgrades

All services that are installed via helm-install are upgraded via helm-upgrade. Two aspects are not full covered by running helm-upgrade: CRDs and values. While helm-install can install CRDs if they are contained in a chart's crds folder, upgrade won't change any installed CRDs. Furthermore, new values introduced with a new version of a chart will not be installed into the cluster if the --reuse-values flag is set. Nevertheless, we have to rely on the values already present in the cluster because some of the values are set by the bootstrapper during installation. Because upgrades should be a CLI-only operation and we want to avoid the behaviour of --reuse-values, we fetch the cluster values and merge them with any new values.

Here is how we manage CRD upgrades for each chart.

Cilium

  • CRDs are updated by cilium-operator.

cert-manager

  • installCRDs flag is set during upgrade. This flag is managed by cert-manager. cert-manager is in charge of correctly upgrading the CRDs.
  • WARNING: upgrading cert-manager might break other installations of cert-manager in the cluster, if those other installation are not on the same version as the Constellation-manager installation. This is due to the cluster-wide CRDs.

Operators

  • Manually update CRDs before upgrading the chart. Update by applying the CRDs found in the operators/crds/ folder.

Constellation-services

  • There currently are no CRDs in this chart.

CSI

  • CRDs are required for enabling snapshot support
  • CRDs are provided as their own helm chart and may be updated using helm