Addon Dependencies

Understand addon dependencies and interactions

When deploying Konvoy, addons are a integral part of the cluster’s functionality. When deploying or troubleshooting addons, it helps to understand how addons interact and may require other addons as dependencies.

If an addon’s dependency does not successfully deploy, the addon requiring that dependency does not successfully deploy. Addon dependencies are determined by their .spec.requires key value pair item.

For example, the cert-manager addon is a dependency of traefik. If we take a look at the traefik ClusterAddon object, we see the following .spec.requires key value pair item:

   - matchLabels:
        kubeaddons.mesosphere.io/name: cert-manager

As indicated by the key matchLabels, the addon looks for its dependencies using labels on objects.

If we then view the .metadata.labels key value pair item of the cert-manager ClusterAddon object, we see the following label:

   kubeaddons.mesosphere.io/name: cert-manager

In this example, if the cert-manager addon does not deploy, the traefik addon does not deploy.

In addition to understanding why an addon does not deploy, these concepts help troubleshoot an addon not working properly. An addon dependency could not be healthy and cause issues. The table below lists Konvoy addons and their dependencies.

Addon Dependencies
awsebscsiprovisioner kubeaddons.mesosphere.io/name: defaultstorageclass-protection
awsebsprovisioner kubeaddons.mesosphere.io/name: defaultstorageclass-protection
defaultstorageclass-protection kubeaddons.mesosphere.io/name: cert-manager
dex kubeaddons.mesosphere.io/provides: ingresscontroller
dex-k8s-authenticator kubeaddons.mesosphere.io/name: dex
kubeaddons.mesosphere.io/provides: ingresscontroller
elasticsearch-curator kubeaddons.mesosphere.io/name: elasticsearch
elasticsearchexporter kubeaddons.mesosphere.io/name: elasticsearch
flagger kubeaddons.mesosphere.io/name: istio
fluentbit kubeaddons.mesosphere.io/name: elasticsearch
gatekeeper kubeaddons.mesosphere.io/name: cert-manager
gcpdisk-csi-driver kubeaddons.mesosphere.io/name: defaultstorageclass-protection
gcpdiskprovisioner kubeaddons.mesosphere.io/name: defaultstorageclass-protection
kubeaddons.mesosphere.io/name: gcpdisk-csi-driver
istio Experimental kubeaddons.mesosphere.io/name: cert-manager
kibana kubeaddons.mesosphere.io/name: elasticsearch
kube-oidc-proxy kubeaddons.mesosphere.io/provides: ingresscontroller
kubeaddons.mesosphere.io/name: cert-manager<br/>kubeaddons.mesosphere.io/name: dex
localvolumeprovisioner kubeaddons.mesosphere.io/name: defaultstorageclass-protection
prometheusadapter kubeaddons.mesosphere.io/name: prometheus
traefik kubeaddons.mesosphere.io/name: cert-manager
traefik-forward-auth kubeaddons.mesosphere.io/name: dex
kubeaddons.mesosphere.io/provides: ingresscontroller
velero kubeaddons.mesosphere.io/provides: ingresscontroller

Some dependency labels in the above table have a label key of kubeaddons.mesosphere.io/provides. The table below lists multiple addons that can have these labels.

kubeaddons.mesosphere.io/provides value Addon(s)
storageclass awsebsprovisioner
azurediskprovisioner
awsebscsiprovisioner
gcpdiskprovisioner
localvolumeprovisioner
nvidia nvidia
csi-driver azuredisk-csi-driver
gcpdisk-csi-driver
loadbalancer metallb
ingresscontroller traefik

For information on related topics or procedures, refer to the following: