Upgrade Third-Party Dependencies
This page outlines the process for upgrading third-party dependencies for Terraform-based infrastructure deployments.
Third-party dependencies refer to the software that is installed by the Terraform scripts to support the deployment of kdb Insights Enterprise.
When to upgrade
Each release of kdb Insights Enterprise includes a Third-party Dependencies section in the release notes. This section lists the specific versions of the third-party infrastructure components that have been tested and verified for compatibility with that specific kdb Insights Enterprise release and provides links to download the required files.
To ensure continued stability, compatibility, and support, it is recommended that you update these dependencies in conjunction with the corresponding upgrade of kdb Insights Enterprise.
Upgrade cert-manager
-
Using the download links in the kdb Insights Enterprise release notes, get the latest version of the cert-manager helm chart for the specific release of kdb Insights Enterprise.
-
Switch to your local
kxi-terraformdirectory. -
Open the Terraform
variables.tffile for your cloud provider, for example, AWS (Amazon Web Services), ACS (Azure Cloud Services), or GCP (Google Cloud Platform), and update thecert-manager helm chart versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "cert_manager_helm_version" { .... default = "1.16.3" }vi terraform/k8s_config_azure/variables.tf variable "cert_manager_helm_version" { .... default = "1.16.3" }vi terraform/k8s_config_gcp/variables.tf variable "cert_manager_helm_version" { .... default = "1.19.1" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.cert-manager" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
cert-manager helm chart version.helm ls -n cert-manager
Upgrade ingress-nginx
-
Using the download links in the kdb Insights Enterprise release notes, get the latest version of the ingress-nginx helm chart for the specific release of kdb Insights Enterprise
-
Switch to your local
kxi-terraformdirectory. -
Open the Terraform
variables.tffile for your cloud provider (for example, AWS, ACS, or GCP), and update theingress-nginx helm chart versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "ingress_nginx_helm_version" { .... default = "4.11.5" }vi terraform/k8s_config_azure/variables.tf variable "ingress_nginx_helm_version" { .... default = "4.11.5" }vi terraform/k8s_config_gcp/variables.tf variable "ingress_nginx_helm_version" { .... default = "4.11.5" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.ingress-nginx" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
ingress-nginx helm chart version.helm ls -n ingress-nginx
Upgrade nginx-community
-
Using the download links in the kdb Insights Enterprise release notes, get the latest version of the nginx-community helm chart for the specific release of kdb Insights Enterprise.
-
Switch to your local
kxi-terraformdirectory. -
Open the Terraform
variables.tffile for your cloud provider (for example, AWS, ACS, or GCP), and update thenginx-community helm chart versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "nginx_community_helm_version" { .... default = "2.4.1" }vi terraform/k8s_config_azure/variables.tf variable "nginx_community_helm_version" { .... default = "2.4.1" }vi terraform/k8s_config_gcp/variables.tf variable "nginx_community_helm_version" { .... default = "2.4.1" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.nginx-community" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
nginx-community helm chart version.helm ls -n nginx-community
Ingress post upgrade steps
If you have deployed kdb Insights Enterprise with Encryption in flight enabled, you need to re-enable this setting on your chosen Ingress Controller post upgrade.
This involves using helm and the kxi cli to interact with your kdb Insight Enterprise deploy. Follow the steps below:
ingress-nginx
-
Get your kdb Insights Enterprise values using
helmINSIGHTS_NAMESPACE=<insights namespace> helm get values -n $INSIGHTS_NAMESPACE insights -o yaml > insights-values.yaml -
Download and install the latest
kxi cliseeNote
Requires
kxi cliversion 1.18.3 or greater! -
Get your current ingress controller settings
helm get values -n ingress-nginx ingress-nginx -o yaml > ingress-nginx-values.yaml.1 -
Run the
kxi clito update your ingress controller settingsINSIGHTS_VERSION=<insights version> kxi task run nginx --version $INSIGHTS_VERSION --encryption true -f insights-values.yaml -
Get your updated ingress controller settings
helm get values -n ingress-nginx ingress-nginx -o yaml > ingress-nginx-values.yaml.2 -
Diff your ingress controller settings and ensure the istio
podAnnotationsandpodLabelsare present:diff ingress-nginx-values.yaml.1 ingress-nginx-values.yaml.2The output should look something like this:
> podAnnotations: > traffic.sidecar.istio.io/excludeInboundPorts: "443" > traffic.sidecar.istio.io/includeInboundPorts: "" > podLabels: > sidecar.istio.io/inject: "true"
nginx-community
-
Get your kdb Insights Enterprise values using
helm:INSIGHTS_NAMESPACE=<insights namespace> helm get values -n $INSIGHTS_NAMESPACE insights -o yaml > insights-values.yaml -
Download and install the latest
kxi cli, refer to the installation guide for more details.Note
Requires
kxi cliversion 1.18.3 or greater! -
Get your current ingress controller settings:
helm get values -n nginx-community nginx-community -o yaml > nginx-community-values.yaml.1 -
Run the
kxi clito update your ingress controller settings:INSIGHTS_VERSION=<insights version> kxi task run nginx-f5 --version $INSIGHTS_VERSION --encryption true -f insights-values.yaml -
Get your updated ingress controller settings:
helm get values -n nginx-community nginx-community -o yaml > nginx-community-values.yaml.2 -
Diff your ingress controller settings and ensure the istio
podAnnotationsandpodLabelsare present:diff nginx-community-values.yaml.1 nginx-community-values.yaml.2The output should look similar to the below:
> podAnnotations: > traffic.sidecar.istio.io/excludeInboundPorts: "443" > traffic.sidecar.istio.io/includeInboundPorts: "" > podLabels: > sidecar.istio.io/inject: "true"
Upgrade Rook-Ceph
Important
Rook-Ceph must be upgraded one minor version at a time. For example, to upgrade from 1.15.9 to 1.17.0, two sequential minor version upgrades are required: 1.15.9 -> 1.16.7 -> 1.17.0.
Review the rook-ceph release notes for breaking changes.
Read the rook-ceph upgrade documentation for more details.
Prepare the environment
-
Using the download links in the kdb Insights Enterprise release notes, get the latest version of the
rook-cephhelm chart for the specific release of kdb Insights Enterprise. Remember to upgrade one minor version at a time. -
Switch to your local
kxi-terraformdirectory. -
Update the
rook_ceph_helm_versionvariable interraform/modules/rook-ceph-helm/variables.tfto the next minor version and latest available patch version. -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Export the
cloudTerraform variable.export TF_VAR_cloud=$CLOUD -
Export the
cluster_nameTerraform variable.export TF_VAR_cluster_name=$CLOUD-$ENV -
Export the
regionTerraform variable.export TF_VAR_region=$REGION -
Export the
architecture_profileTerraform variable.export TF_VAR_architecture_profile=$PROFILE -
Run the
terraform initcommand../scripts/terraform.sh init config -
Switch to the config Terraform stage directory for your cloud provider.
cd terraform/k8s_config_awscd terraform/k8s_config_azurecd terraform/k8s_config_gcp
Upgrade the rook-ceph operator
-
Run the
terraform plancommand for therook-cephhelm chart.terraform plan -out=.terraform/rook-ceph-$CLOUD-$ENV.tfplan -target=module.rook-ceph-helm[0].helm_release.rook_cephThe output should confirm that the rook-ceph helm chart will be upgraded to the specified version.
# module.rook-ceph-helm[0].helm_release.rook_ceph will be updated in-place ~ resource "helm_release" "rook_ceph" { id = "rook-ceph" name = "rook-ceph" ~ version = "v1.15.9" -> "v1.16.7" # (27 unchanged attributes hidden) } -
Upgrade the
rook-cephhelm chartterraform apply -input=false .terraform/rook-ceph-$CLOUD-$ENV.tfplan
Upgrade the rook-ceph cluster
-
Run the
terraform plancommand for therook-ceph-clusterhelm chart.terraform plan -out=.terraform/rook-ceph-cluster-$CLOUD-$ENV.tfplan -target=module.rook-ceph-helm[0].helm_release.rook-ceph-clusterThe output should confirm that the rook-ceph helm chart will be upgraded to the specified version.
# module.rook-ceph-helm[0].helm_release.rook_ceph will be updated in-place ~ resource "helm_release" "rook_ceph" { id = "rook-ceph-cluster" name = "rook-ceph-cluster" ~ version = "v1.15.9" -> "v1.16.7" # (27 unchanged attributes hidden) } -
Upgrade the
rook-ceph-clusterhelm chartterraform apply -input=false .terraform/rook-ceph-cluster-$CLOUD-$ENV.tfplan
AWS cluster third-party dependencies
Note
This section applies to AWS (EKS) only.
The following third-party dependencies are installed on AWS clusters as Helm charts by the config Terraform stage. They are all deployed to the kube-system namespace, and their versions are pinned by variables in terraform/k8s_config_aws/variables.tf. The table below lists the current default versions; use it as a reference for the versions you are upgrading from, and follow the per-component steps that follow to upgrade each one.
| Component | Helm repository | Version | Terraform variable |
|---|---|---|---|
| aws-ebs-csi-driver | https://kubernetes-sigs.github.io/aws-ebs-csi-driver |
2.56.1 | aws_ebs_csi_driver_helm_version |
| aws-efs-csi-driver | https://kubernetes-sigs.github.io/aws-efs-csi-driver |
3.4.1 | aws_efs_csi_driver_helm_version |
| aws-load-balancer-controller | https://aws.github.io/eks-charts |
3.0.0 | aws_load_balancer_controller_helm_version |
| cluster-autoscaler | https://kubernetes.github.io/autoscaler |
9.56.0 | cluster_autoscaler_helm_version |
| metrics-server | https://kubernetes-sigs.github.io/metrics-server |
3.13.0 | metrics_server_helm_version |
Note
These versions are managed by Renovate and are bumped automatically as new versions are released, so the values above reflect the current repository defaults.
Upgrade aws-ebs-csi-driver
-
Get the version of the
aws-ebs-csi-driverhelm chart you want to upgrade to from the chart repository. -
Switch to your local
kxi-terraformdirectory. -
Open
terraform/k8s_config_aws/variables.tfand update theaws_ebs_csi_driver_helm_versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "aws_ebs_csi_driver_helm_version" { .... default = "2.56.1" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.aws-ebs-csi-driver" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
aws-ebs-csi-driverhelm chart version.helm ls -n kube-system
Upgrade aws-efs-csi-driver
-
Get the version of the
aws-efs-csi-driverhelm chart you want to upgrade to from the chart repository. -
Switch to your local
kxi-terraformdirectory. -
Open
terraform/k8s_config_aws/variables.tfand update theaws_efs_csi_driver_helm_versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "aws_efs_csi_driver_helm_version" { .... default = "3.4.1" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.aws-efs-csi-driver" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
aws-efs-csi-driverhelm chart version.helm ls -n kube-system
Upgrade aws-load-balancer-controller
-
Get the version of the
aws-load-balancer-controllerhelm chart you want to upgrade to from the chart repository. -
Switch to your local
kxi-terraformdirectory. -
Open
terraform/k8s_config_aws/variables.tfand update theaws_load_balancer_controller_helm_versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "aws_load_balancer_controller_helm_version" { .... default = "3.0.0" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.aws-load-balancer-controller" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
aws-load-balancer-controllerhelm chart version.helm ls -n kube-system
Upgrade cluster-autoscaler
-
Get the version of the
cluster-autoscalerhelm chart you want to upgrade to from the chart repository. -
Switch to your local
kxi-terraformdirectory. -
Open
terraform/k8s_config_aws/variables.tfand update thecluster_autoscaler_helm_versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "cluster_autoscaler_helm_version" { .... default = "9.56.0" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.cluster-autoscaler" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
cluster-autoscalerhelm chart version.helm ls -n kube-system
Upgrade metrics-server
-
Get the version of the
metrics-serverhelm chart you want to upgrade to from the chart repository. -
Switch to your local
kxi-terraformdirectory. -
Open
terraform/k8s_config_aws/variables.tfand update themetrics_server_helm_versionvariable to the new version.vi terraform/k8s_config_aws/variables.tf variable "metrics_server_helm_version" { .... default = "3.13.0" } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init config -
Run the
terraform plancommand../scripts/terraform.sh plan config -target="helm_release.metrics-server" -
Run the
terraform applycommand../scripts/terraform.sh apply config -
Verify the
metrics-serverhelm chart version.helm ls -n kube-system
Upgrade the EKS managed add-ons
Note
This section applies to AWS (EKS) only.
The coredns, vpc-cni, and kube-proxy components are installed as EKS managed add-ons (aws_eks_addon) rather than as Helm charts. They are declared in the cluster_addons block of terraform/modules/k8s_cluster_aws/main.tf in the cluster Terraform stage, and no add-on version is pinned.
Upgrade automatically with the cluster
Because no addon_version is set, AWS resolves the default add-on version for the active cluster_version. As a result, when you upgrade the Kubernetes version (see Upgrade Kubernetes Cluster), applying the cluster upgrade automatically pulls the matching default add-on versions. No separate step is required in this case.
Upgrade an add-on explicitly
Follow these steps to pin an add-on to a specific version independently of a cluster upgrade.
-
Find the available add-on versions for your Kubernetes version.
aws eks describe-addon-versions --kubernetes-version <version> --addon-name <coredns|vpc-cni|kube-proxy> -
Switch to your local
kxi-terraformdirectory. -
Open
terraform/modules/k8s_cluster_aws/main.tfand set theaddon_versionfor the relevant add-on in thecluster_addonsblock, for example:cluster_addons = { coredns = { addon_version = "<version>" resolve_conflicts = "OVERWRITE" } ... } -
Run the
manage-cluster.shscript../scripts/manage-cluster.sh.\scripts\manage-cluster.bat -
Run the
terraform initcommand../scripts/terraform.sh init cluster -
Run the
terraform plancommand../scripts/terraform.sh plan cluster -target='module.kx-aws.module.eks.aws_eks_addon.this["<addon>"]' -
Run the
terraform applycommand../scripts/terraform.sh apply cluster -
Verify the add-on version.
aws eks describe-addon --cluster-name $TF_VAR_cluster_name --addon-name <addon> --query 'addon.addonVersion'