Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create Helm chart extending an existing chart

I am using https://gitlab.com/charts/gitlab to deploy certain components included in the chart on an Openshift cluster. For now I just want to deploy the included Prometheus chart. I accomplished this, having an specific values.yaml configuration.

I want to extend the Gitlab helm chart, to do so I am adding it as a requirement of my own chart. The problem comes whenever I add the previous values.yaml as subpart of my values.

Deploying upstream Gitlab chart works with:

global:
  registry:
    enabled: false
  # Disabling minio still requires to disable gitlab.minio or it will complain about "A valid backups.objectStorage.config.secret is needed"
  minio:
    enabled: false
  ingress:
    enabled: false
    configureCertmanager: false

nginx-ingress:
  enabled: false
registry:
  enabled: false
certmanager:
  install: false
  rbac:
    create: false
...

Deploying my chart including configuration as a subchart does not work:

global:
  registry:
    enabled: false
  # Disabling minio still requires to disable gitlab.minio or it will complain about "A valid backups.objectStorage.config.secret is needed"
  minio:
    enabled: false
  ingress:
    enabled: false
    configureCertmanager: false


test:
  nginx-ingress:
    enabled: false

  registry:
    enabled: false
  certmanager:
    install: false
    rbac:
      create: false
  ...

I added the Gitlab upstream chart as a requirement:

dependencies:
- name: gitlab
  # Upgrade manually. Check https://gitlab.com/charts/gitlab/blob/master/requirements.yaml for the new Prometheus chart version.
  version: 1.7.1
  repository: https://charts.gitlab.io/
  alias: test

It seems that it is not fully checking my configuration, so this creates objects that the serviceAccount does not have permissions to, failing in the process. It still tries to create objects related to certmanager even if it is disabled and was correctly disabled when deploying Gitlab chart directly.

like image 543
djuarezg Avatar asked Mar 29 '19 13:03

djuarezg


People also ask

Is helm being deprecated?

helm/charts has been deprecated and will be obsolete by Nov 13 2020. For this reason, the datawire team as retaken ownership of this chart. The Ambassador Chart is now hosted at datawire/ambassador-chart.

How do you override a helm chart?

You can use a --values flag in your Helm commands to override the values in a chart and pass in a new file. Specify the name of the new file after the --values flag in the Helm command. Example: helm upgrade --install <service> -f values.


Video Answer


1 Answers

Found it. Requirements conditions for a subchart have to be specified on the first level of values.yaml.

If A has B as a subchart requirement, in order to specify the B requirement conditions, you have to set them at A level:

global:
  registry:
    enabled: false
  # Disabling minio still requires to disable gitlab.minio or it will complain about "A valid backups.objectStorage.config.secret is needed"
  minio:
    enabled: false
  ingress:
    enabled: false
    configureCertmanager: false


test:
  nginx-ingress:
    enabled: false

  registry:
    enabled: false
  ...

certmanager:
  install: false
  rbac:
    create: false
  ...
like image 155
djuarezg Avatar answered Sep 24 '22 16:09

djuarezg