Interface KubernetesClusterProvider

All Superinterfaces:
ClusterProvider, PluginProvider

public interface KubernetesClusterProvider extends ClusterProvider
A specialization of ClusterProvider for Kubernetes-based clusters (managed control-plane offerings such as EKS, AKS, and GKE, as well as self-managed kubeadm-style clusters).

On the appliance side this provider is backed by a host service that extends the built-in KubernetesHostService. That means a plugin implementing this interface inherits the full suite of core Kubernetes operations (namespace management, node drain/cordon, kubectl/helm execution, service-account handling, brownfield node sync, etc.) for free. A plugin only needs to implement the Facet interfaces below to supply the small, genuinely cloud-specific seams where the managed offering differs from a vanilla cluster.

Routing model. The host service routes each overridable operation by checking whether this provider implements the corresponding facet (instanceof); if it does, the facet is invoked, otherwise the inherited core Kubernetes behavior runs. This mirrors the existing facet convention on ClusterProvider (ServerPowerFacet, ClusterUpdateFacet) and on ProvisionProvider.

Refresh model. When a cluster is refreshed, the appliance runs the full built-in Kubernetes sync first (node discovery, namespaces, workloads, etc.). Individual pieces of that sync can be customized by implementing the facets below (ApiAccessFacet, NodeSyncFacet, the per-resource *CacheFacets, etc.) — the host service substitutes your facet wherever the core sync reaches one of those seams. After the built-in sync completes, the base ClusterProvider.refresh(com.morpheusdata.model.ComputeServerGroup) is invoked last. For most Kubernetes clusters this final call is a no-op: the built-in sync has already done the work. Only implement refresh when you have a genuine cloud-side concern to reconcile that the core Kubernetes sync does not cover (for example cloud node-group or autoscaler state).

Since:
1.4.x
  • Method Details

    • getProviderType

      default String getProviderType()
      Kubernetes cluster providers default their provider type to "kubernetes" so that the appliance applies Kubernetes-specific category conventions and resolves the Kubernetes host service. Override only if a more specific type discriminator is required.
      Specified by:
      getProviderType in interface ClusterProvider
      Returns:
      the provider type discriminator, "kubernetes" by default