π¦ Kubernetes Installed PackagesΒΆ
Muppy makes deploying Helm packages into Kubernetes clusters straightforward, through an intuitive graphical interface. Users manage all of their packages directly from the Muppy interface.
π§© Muppy Meta Package (m2p)ΒΆ
Muppy also offers the Muppy Meta Packages (m2p).
An m2p is a tool that simplifies deploying complex applications on Kubernetes, by
grouping several Docker containers and their configuration into a single package, called a
metapackage.
That metapackage is made of parts β modular sub-components representing services, their dependencies and their parameters. Thanks to this structure, even users with little Kubernetes experience can deploy advanced applications smoothly and quickly.
π§± The components of a deploymentΒΆ
Deploying a package relies on the following elements:
-
π¦ K8s Package: the definition of the package to deploy (a Helm chart, or Kubernetes files applied with
kubectl)
β for Helm, it includes the default values (values.yaml) -
π§Ύ K8s Package Profile: for metapackages, the profiles define:
- the parts the package is made of
- the default resources (limits, replicas)
- the dashboards used for configuration
-
the available versions and the upgrade strategies
-
π Installed Package: an instance of a K8s Package deployed in a Kubernetes cluster, with the parameters defined in a K8s Package Profile
-
π Config Journal: the log of the Helm operations performed on a package (deployment history, upgrades, diffs, β¦)
π A package's life cycleΒΆ
- π Creation (to be documented)
- π οΈ Installation / Modification
- βοΈ Edit (Update)
- π Upgrade (version bump)
- β Deletion (to be documented)
βοΈ ModificationΒΆ
Two kinds of modification are possible:
1. Edit / UpdateΒΆ
Changes handled directly by Helm:
- changes to the values
- part configuration
- network or dashboard settings
Muppy automatically detects the differences between the current configuration and the desired one, and displays the "Drifted values" indicator.
These changes are applied on the next helm upgrade.
Every helm upgrade is recorded in the Config Journal, with:
- the values used
- the diff against the previous version
2. π Package UpgradeΒΆ
For the cases where an update affects the databases, or requires stopping the application, Muppy offers an advanced version-bump mechanism: Package Release Upgrade.
Available through:
- π§ the βPackage Release Upgradeβ wizard
- βοΈ the CI/CD API
Based on SEMVER version management, it can:
- identify the version profiles
- run migration scripts
- apply the changes safely
π Version profilesΒΆ
A profile holds:
- π§ the definition of the parts
- π the associated dashboards
- π§ͺ a migration script (if needed)
- π the criteria for applying it
π§ββοΈ How the Package Release Upgrade worksΒΆ
Unlike a plain helm upgrade, the version upgrade wizard expects:
- π― the K8s Profile to apply
- β»οΈ Reload Values (boolean): reload the default values from the profile
- π§Ή Reset Values Overload (boolean): reset, or merge, the customised values
π The upgrade, step by stepΒΆ
If the profile to deploy differs from the one currently in place, the version bump follows these steps:
-
β Profile change
The new K8s Package Profile is assigned to the instance. -
βοΈ Execution of
onchange__k8s_package_profile_id()
This method does the following:-
calls
reload_mpy_meta_config_yaml()to reload the parts configuration:- from the profile, or
- failing that, from the package
-
updates the fields:
default_pathdefault_path_debughealthcheck_pathfqdn_hostname_smart_config_id(if present in the new profile)
-
-
π§© Applying the dashboards
The dashboards defined in the new profile are put in place.β οΈ Existing values are preserved
The values previously entered in the dashboards are preserved by default. -
β»οΈ Reload Values (if enabled)
- reloads the dashboard's values from the profile
- reloads the content of the
valuesfile from the package
-
π§Ή Reset Values Overload (if enabled)
- if enabled: the Values Overload section is replaced by the new values
- otherwise: the new values are merged with the existing ones
-
𧬠Computing the final values
The combined result (default values + overloads) is injected into Final Values. -
π Deployment
Thehelm upgradecommand runs with the Final Values.
β DeletionΒΆ
To be documented later