Deploy microservices using the Helm plugin

2 minute readExtensibilityDeveloper productivity

The Helm plugin allows you to deploy Helm charts into Kubernetes clusters. Clusters should be part of an environment and have Helm - Kubernetes in the cluster definition.

Microservice deployments use the upgrade --install command that support new deployments and upgrade existing deployments. You can use the Additional Options deployment parameter to provide a list of flags and options for the deployment command. Content of the Values parameter is saved to a file and passed to the command with the -f <fileName> option. Parameters are added to the command in following order; options that are later prepended can override previously configured values.

  • File supplied by the deployment: Values

  • Configuration: Options

  • Deployment: Additional Options

  • Cluster definition: Namespace

  • Cluster definition: Kubeconfig Context

Optionally, rollback can be enabled with a specified timeout. When rollback is enabled, the --atomic parameter is added to the upgrade --install command.

After invoking the upgrade --install command, the plugin procedure invokes a set of commands to retrieve the deployment details:

  • Release details: list -l <releaseName>

  • Notes: get notes <releaseName>

  • Values: get values <releaseName>

  • Manifests: get manifest <releaseName>

Release manifests are parsed to retrieve a list of containers deployed with this release. These containers are reported to the environment inventory.

Since different YAML libraries may have different implementations of the YAML specification, some manifests accepted by Kubernetes may not be parsed by Perl libraries used in the Helm plugin. If you receive warnings about a specific YAML file that has containers, and the chart is under your governance, you can provide proper formatting and linting for the chart template to fix the parsing error. For charts provided by a third-party provider, you can file an issue for the maintainer of those charts.

If the plugin fails to parse a manifest for one of the generated YAML files, and it has a container specification, this container is not reported to the environment inventory.