Date   

Re: Feedback on Helm

Matt Farina
 

Berin,

Thanks for such an extensive write-up. I can't address all of it now but I wanted to talk about transitive dependencies. I am curious what you are looking for in respect to that as far as handling goes.

When you have a tree of dependencies you can't exactly flatten them. For example, if you have a dependency on WordPress and Drupal and they both have a dependency on MySQL you can't flatten the tree to have one MySQL. You will end up with two as they are operating as services, possible with very different configurations, for each of those. So, the transitive handling is mildly different from something like a programming language package manager.

When `helm package` is run (to create the archive) the dependencies are bundled in the `charts` directory. These are the direct dependencies. Each of the direct dependencies dependencies would be bundled in its own `charts` directory and so on.

This is why I ask about your use case. I wonder what's going on. I'd like to better understand it and the usage pattern.

Cheers,
Matt Farina

On Fri, May 1, 2020, at 3:16 PM, Loritsch, Berin wrote:
I'm in the process of modernizing our deployment to use containers and kubernetes to deploy a complex microservices application.  The current deployment uses python scripts to place things where they need to go, and while it works, that deployment model doesn't deliver on some promises we made.

We have around 30 different services we need to deploy, most of which are Spring Boot based.  The bottom line is that the deployment for individual services should be reasonably the same.  The availability check would use the Spring Actuator health endpoint, and the only a few things need to be distinct (such as service port, ingress path, resource limits, and things of that nature).

My goal was to have a very small deployment of three microservices (discovery, config, and one of the simpler non-database services).  There's some things that I like:

  • Templating makes it easier to customize deployments
  • The default template is a good 80% solution, which I was able to make some needed customizations
  • It wasn't hard to figure out how to make starters for my project
  • I can collocate the chart definition with my service source code

That said, there are a lot of rough edges:

  • You can't avoid the templating language if you customize your deployment, and if go-lang isn't something you do in your shop, it can be challenging to do otherwise simple things.
  • The templates themselves are part of the chart.  That means if I convert 15 out of 30 services to Helm, and discover something I need to fix in the generated templates, I have to change my starter and 15 services to provide that piece.
  • Helm does not have transitive package resolution, like most package management software I am used to using (Maven, Nuget, etc.)

I'm hoping I am missing something, or that there are already plans to address these rough edges.  The biggest problem is the transitive package resolution.  My helm charts look like this:
  • logging-configmap
  • system-configmap
  • eureka
    • logging-configmap
  • config-server
    • eureka
    • system-configmap
  • simple-service
    • eureka
    • config-server
The remainder of my ~30 services will be like simple-service.  In order for a successful deployment of that to happen I need the two other dependent services.  However each of those declare a copy of their dependencies, and so on.  When I run the command "helm dependency build" I will have the sub-charts loaded.

Problem is when the kubernetes template is actually rendered I have a new instance of the logging-configmap for each service, etc.  I need to be able to build and deploy my services in isolation as well as part of the whole for testing purposes.

At any rate, I would like to help make helm better.  I do have time constraints, and I'm not very familiar with go-lang.  I think this is a good start in a mostly correct direction.  It just needs to address those rough edges.

--
Berin Loritsch

Systems Integration Lead


7921 Jones Branch Drive
McLean, VA 22102
Email bloritsch@...

Office (703) 735-6281

Mobile (571) 215-7708




Feedback on Helm

bloritsch@...
 

I'm in the process of modernizing our deployment to use containers and kubernetes to deploy a complex microservices application.  The current deployment uses python scripts to place things where they need to go, and while it works, that deployment model doesn't deliver on some promises we made.

We have around 30 different services we need to deploy, most of which are Spring Boot based.  The bottom line is that the deployment for individual services should be reasonably the same.  The availability check would use the Spring Actuator health endpoint, and the only a few things need to be distinct (such as service port, ingress path, resource limits, and things of that nature).

My goal was to have a very small deployment of three microservices (discovery, config, and one of the simpler non-database services).  There's some things that I like:

  • Templating makes it easier to customize deployments
  • The default template is a good 80% solution, which I was able to make some needed customizations
  • It wasn't hard to figure out how to make starters for my project
  • I can collocate the chart definition with my service source code

That said, there are a lot of rough edges:

  • You can't avoid the templating language if you customize your deployment, and if go-lang isn't something you do in your shop, it can be challenging to do otherwise simple things.
  • The templates themselves are part of the chart.  That means if I convert 15 out of 30 services to Helm, and discover something I need to fix in the generated templates, I have to change my starter and 15 services to provide that piece.
  • Helm does not have transitive package resolution, like most package management software I am used to using (Maven, Nuget, etc.)

I'm hoping I am missing something, or that there are already plans to address these rough edges.  The biggest problem is the transitive package resolution.  My helm charts look like this:
  • logging-configmap
  • system-configmap
  • eureka
    • logging-configmap
  • config-server
    • eureka
    • system-configmap
  • simple-service
    • eureka
    • config-server
The remainder of my ~30 services will be like simple-service.  In order for a successful deployment of that to happen I need the two other dependent services.  However each of those declare a copy of their dependencies, and so on.  When I run the command "helm dependency build" I will have the sub-charts loaded.

Problem is when the kubernetes template is actually rendered I have a new instance of the logging-configmap for each service, etc.  I need to be able to build and deploy my services in isolation as well as part of the whole for testing purposes.

At any rate, I would like to help make helm better.  I do have time constraints, and I'm not very familiar with go-lang.  I think this is a good start in a mostly correct direction.  It just needs to address those rough edges.

--
Berin Loritsch

Systems Integration Lead


7921 Jones Branch Drive
McLean, VA 22102
Email bloritsch@...

Office (703) 735-6281

Mobile (571) 215-7708


Re: localizing Helm docs [feedback requested]

Matt Farina
 

Thanks for suggesting the Kubernetes process. I'll take a look at it.

I just took Gitlocalize for a spin. I had a couple problems with it (i.e., hugo front matter handling and DCO). Won't work for us. Though, I can see how it makes many cases much easier. Translations all through a web ui that end up as PRs. Both human and machine translations supported. It's almost there but not quite.

- Matt Farina

On Mon, Mar 30, 2020, at 3:51 PM, Jim Angel wrote:
Happy to chat about how k8s docs is doing it if you want!

Most of the process is outlined here: https://kubernetes.io/docs/contribute/localization/

I would echo Chris' statement that it works out decently but there are challenges...


On Mon, Mar 30, 2020, 14:47 Chris Aniszczyk <caniszczyk@...> wrote:
Fedora and OpenStack use http://zanata.org 

It's notable the Kubernetes community just treats translations as code and that has served them decently, but they have invested in doing public "doc sprints" to help on board and train folks.

On Mon, Mar 30, 2020 at 2:42 PM Matt Farina <matt@...> wrote:

I'm kinda interested in the human based tools more than automating translations. From what I've been told, the automation quality is so-so.

But, we have people interested in translating docs. But, our process for doing so is developer focused and non-devs who want to do translations will have a hard time. I'm wondering if there's a way to ease their flow. I was reminded of the simple experience Drupal had and was wondering if any other tools make it that easy.

On Mon, Mar 30, 2020, at 3:38 PM, Matt Fisher wrote:
Something I was interested in looking into was the Microsoft Translator API. From its description,

> [...] that developers can easily integrate into their applications websites, tools, or any solution requiring multi-language support such as website localization, e-commerce, customer support, messaging applications, internal communication, and more.

I have not tried this program yet, but we could potentially use our Azure sponsorship money to consume this service and provide localization support for the website.

I'd be most curious to see how it'd handle syntax and code blocks.






1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada




From: cncf-helm@... <cncf-helm@...> on behalf of Matt Farina via Lists.Cncf.Io <matt=mattfarina.com@...>
Sent: Monday, March 30, 2020 12:01 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] localizing Helm docs [feedback requested]
 
The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina

Attachments:
  • Outlook-1504220459.png





--
Chris Aniszczyk (@cra) | +1-512-961-6719




Attachments:
  • Outlook-1504220459.png


Re: localizing Helm docs [feedback requested]

Jim Angel
 

Happy to chat about how k8s docs is doing it if you want!

Most of the process is outlined here: https://kubernetes.io/docs/contribute/localization/

I would echo Chris' statement that it works out decently but there are challenges...


On Mon, Mar 30, 2020, 14:47 Chris Aniszczyk <caniszczyk@...> wrote:
Fedora and OpenStack use http://zanata.org 

It's notable the Kubernetes community just treats translations as code and that has served them decently, but they have invested in doing public "doc sprints" to help on board and train folks.

On Mon, Mar 30, 2020 at 2:42 PM Matt Farina <matt@...> wrote:
I'm kinda interested in the human based tools more than automating translations. From what I've been told, the automation quality is so-so.

But, we have people interested in translating docs. But, our process for doing so is developer focused and non-devs who want to do translations will have a hard time. I'm wondering if there's a way to ease their flow. I was reminded of the simple experience Drupal had and was wondering if any other tools make it that easy.

On Mon, Mar 30, 2020, at 3:38 PM, Matt Fisher wrote:
Something I was interested in looking into was the Microsoft Translator API. From its description,

> [...] that developers can easily integrate into their applications websites, tools, or any solution requiring multi-language support such as website localization, e-commerce, customer support, messaging applications, internal communication, and more.

I have not tried this program yet, but we could potentially use our Azure sponsorship money to consume this service and provide localization support for the website.

I'd be most curious to see how it'd handle syntax and code blocks.






1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada




From: cncf-helm@... <cncf-helm@...> on behalf of Matt Farina via Lists.Cncf.Io <matt=mattfarina.com@...>
Sent: Monday, March 30, 2020 12:01 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] localizing Helm docs [feedback requested]
 
The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina

Attachments:
  • Outlook-1504220459.png



--
Chris Aniszczyk (@cra) | +1-512-961-6719


Re: localizing Helm docs [feedback requested]

Chris Aniszczyk
 

Fedora and OpenStack use http://zanata.org 

It's notable the Kubernetes community just treats translations as code and that has served them decently, but they have invested in doing public "doc sprints" to help on board and train folks.

On Mon, Mar 30, 2020 at 2:42 PM Matt Farina <matt@...> wrote:
I'm kinda interested in the human based tools more than automating translations. From what I've been told, the automation quality is so-so.

But, we have people interested in translating docs. But, our process for doing so is developer focused and non-devs who want to do translations will have a hard time. I'm wondering if there's a way to ease their flow. I was reminded of the simple experience Drupal had and was wondering if any other tools make it that easy.

On Mon, Mar 30, 2020, at 3:38 PM, Matt Fisher wrote:
Something I was interested in looking into was the Microsoft Translator API. From its description,

> [...] that developers can easily integrate into their applications websites, tools, or any solution requiring multi-language support such as website localization, e-commerce, customer support, messaging applications, internal communication, and more.

I have not tried this program yet, but we could potentially use our Azure sponsorship money to consume this service and provide localization support for the website.

I'd be most curious to see how it'd handle syntax and code blocks.






1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada




From: cncf-helm@... <cncf-helm@...> on behalf of Matt Farina via Lists.Cncf.Io <matt=mattfarina.com@...>
Sent: Monday, March 30, 2020 12:01 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] localizing Helm docs [feedback requested]
 
The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina

Attachments:
  • Outlook-1504220459.png



--
Chris Aniszczyk (@cra) | +1-512-961-6719


Re: localizing Helm docs [feedback requested]

Matt Farina
 

I'm kinda interested in the human based tools more than automating translations. From what I've been told, the automation quality is so-so.

But, we have people interested in translating docs. But, our process for doing so is developer focused and non-devs who want to do translations will have a hard time. I'm wondering if there's a way to ease their flow. I was reminded of the simple experience Drupal had and was wondering if any other tools make it that easy.

On Mon, Mar 30, 2020, at 3:38 PM, Matt Fisher wrote:
Something I was interested in looking into was the Microsoft Translator API. From its description,

> [...] that developers can easily integrate into their applications websites, tools, or any solution requiring multi-language support such as website localization, e-commerce, customer support, messaging applications, internal communication, and more.

I have not tried this program yet, but we could potentially use our Azure sponsorship money to consume this service and provide localization support for the website.

I'd be most curious to see how it'd handle syntax and code blocks.






1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada




From: cncf-helm@... <cncf-helm@...> on behalf of Matt Farina via Lists.Cncf.Io <matt=mattfarina.com@...>
Sent: Monday, March 30, 2020 12:01 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] localizing Helm docs [feedback requested]
 
The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina

Attachments:
  • Outlook-1504220459.png


Re: localizing Helm docs [feedback requested]

Matt Fisher <matt.fisher@...>
 



1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of Matt Fisher via Lists.Cncf.Io <matt.fisher=microsoft.com@...>
Sent: Monday, March 30, 2020 12:38 PM
To: cncf-helm@... <cncf-helm@...>; matt@... <matt@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: Re: [cncf-helm] localizing Helm docs [feedback requested]
 
Something I was interested in looking into was the Microsoft Translator API. From its description,

> [...] that developers can easily integrate into their applications websites, tools, or any solution requiring multi-language support such as website localization, e-commerce, customer support, messaging applications, internal communication, and more.

I have not tried this program yet, but we could potentially use our Azure sponsorship money to consume this service and provide localization support for the website.

I'd be most curious to see how it'd handle syntax and code blocks.

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of Matt Farina via Lists.Cncf.Io <matt=mattfarina.com@...>
Sent: Monday, March 30, 2020 12:01 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] localizing Helm docs [feedback requested]
 
The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina


Re: localizing Helm docs [feedback requested]

Matt Fisher <matt.fisher@...>
 

Something I was interested in looking into was the Microsoft Translator API. From its description,

> [...] that developers can easily integrate into their applications websites, tools, or any solution requiring multi-language support such as website localization, e-commerce, customer support, messaging applications, internal communication, and more.

I have not tried this program yet, but we could potentially use our Azure sponsorship money to consume this service and provide localization support for the website.

I'd be most curious to see how it'd handle syntax and code blocks.

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of Matt Farina via Lists.Cncf.Io <matt=mattfarina.com@...>
Sent: Monday, March 30, 2020 12:01 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] localizing Helm docs [feedback requested]
 
The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina


localizing Helm docs [feedback requested]

Matt Farina
 

The Helm website and docs are setup for localization / i18n. The flow of contributing translations is the same as contributing docs and code.

This has left me wondering... should Helm use some outside tooling to make the translation process easier? Is there something you're familiar with and would suggest? To seed the conversation, I was looking at https://gitlocalize.com/.

Do you have any tips or pointers? We want to make the process easier. Especially for non-devs.

- Matt Farina


Link for resolving a specified task

Sara Ben Shabbat <sarabenshabbat@...>
 

Hi, 

I'm a DevOps course student. 
I am now in the final project phase of the course, and I was required to deploy Prometheus operator via helm and grafana.

Can you please, send me a link to a helpful guide for this task. 
(- From the begging till the end, which means - how to install helm with the appropriate version for the desired chart etc...)
Of course, I googled it but all the guides didn't bring me to the desired solution.

Thanks in advance for any help !

Sara Ben Shabbat
sarabenshabbat@... | 972-55-6790404


Re: Helm

lmadan@...
 

Thanks Matthew, for your response.

I don't believe the problem is with type. I tried with $, but getting the null pointer exception. <.Values.common >: nil pointer evaluating interface {}.mypath. I believe there's some scoping issues or some hidden bug, because if i remove the sub charts then parent chart is able to resolve the value, but if i have the sub charts then it barfs about the issue.

Regards,
Lokesh


Re: Helm

Matt Fisher <matt.fisher@...>
 

In other words, you are passing a function a string when it expected an object. If you change your function call to the type it expects, that should solve your error.

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: Matt Fisher <Matt.Fisher@...>
Sent: Friday, March 20, 2020 9:09 AM
To: cncf-helm@... <cncf-helm@...>; lmadan@... <lmadan@...>
Subject: Re: [cncf-helm] Helm
 
In your example, you are passing a variable of type string ("need value") to your function "mypath". Inside your "mypath" function,. it's looking for an object with a field called Values.

If you change your `include` function call to {{ include "mypath" $ }}, what happens?

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of lmadan via Lists.Cncf.Io <lmadan=alumni.usc.edu@...>
Sent: Thursday, March 19, 2020 2:57 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] Helm
 
Hi all, i have a quick question. I have the chart hierarchyparentChart
— template
— _helpers.tpl— charts
— chart1
—template
— _helpers.tpl
— chart2In parent chart i have defined
{{- define “mypath" -}}
{{- if .Values.common -}}
{{- required "common.mypath is required !" .Values.common.mypath -}}
{{- else -}}
{{- required ".Values.global.someotherpath is required !" .Values.global.someotherpath}}
{{- end -}}
{{- end -}}And now in chart1 i am trying to refer{{- define "mypath" }}
from: parentChart
{{- end -}}{{- define “copyMyPath” -}}
{{- include "mypath" "need value"}}
{{- end -}}I am getting below errortemplate: parentChart/charts/chart1/templates/deployment.yaml:37:20: executing “parentChart/charts/chart1/templates/deployment.yaml" at <include “copyMyPath” .>: error calling include: template: parentChart/charts/chart1/templates/_helpers.tpl:43:4: executing “copyMyPath" at <include “mypath” "need value">: error calling include: template: parentChart/templates/_helpers.tpl:112:14: executing “mypath” at <.Values.common>: can't evaluate field Values in type string

Am i missing something ?

Idea is i want to refer what's defined in parent chart template

Any help on this really appreciated


I posted the message the message on #helm-users slack channel, but haven't got any response.


Re: Helm

Matt Fisher <matt.fisher@...>
 

In your example, you are passing a variable of type string ("need value") to your function "mypath". Inside your "mypath" function,. it's looking for an object with a field called Values.

If you change your `include` function call to {{ include "mypath" $ }}, what happens?

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of lmadan via Lists.Cncf.Io <lmadan=alumni.usc.edu@...>
Sent: Thursday, March 19, 2020 2:57 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] Helm
 
Hi all, i have a quick question. I have the chart hierarchyparentChart
— template
— _helpers.tpl— charts
— chart1
—template
— _helpers.tpl
— chart2In parent chart i have defined
{{- define “mypath" -}}
{{- if .Values.common -}}
{{- required "common.mypath is required !" .Values.common.mypath -}}
{{- else -}}
{{- required ".Values.global.someotherpath is required !" .Values.global.someotherpath}}
{{- end -}}
{{- end -}}And now in chart1 i am trying to refer{{- define "mypath" }}
from: parentChart
{{- end -}}{{- define “copyMyPath” -}}
{{- include "mypath" "need value"}}
{{- end -}}I am getting below errortemplate: parentChart/charts/chart1/templates/deployment.yaml:37:20: executing “parentChart/charts/chart1/templates/deployment.yaml" at <include “copyMyPath” .>: error calling include: template: parentChart/charts/chart1/templates/_helpers.tpl:43:4: executing “copyMyPath" at <include “mypath” "need value">: error calling include: template: parentChart/templates/_helpers.tpl:112:14: executing “mypath” at <.Values.common>: can't evaluate field Values in type string

Am i missing something ?

Idea is i want to refer what's defined in parent chart template

Any help on this really appreciated


I posted the message the message on #helm-users slack channel, but haven't got any response.


Helm : referencing the parent template field in sub chart.

lmadan@...
 
Edited

Hi all, i have a quick question. I have the chart
hierarchy

-- parentChart
  -- template
    -- _helpers.tpl— charts
  -- charts
    -- chart1
      -- template
        -- _helpers.tpl
    --  chart2
       -- template
         -- _helpers.tpl

Values.yaml in parentChart has
 global:
   somekey: values
   someotherpath: someValue

  common:
    mypath: someValue
    someMoreKeys: andSomeMoreValues

In parent chart i have defined
{{- define “mypath" -}}
{{- if .Values.common -}}
{{- required "common.mypath is required !" .Values.common.mypath -}}
{{- else -}}
{{- required ".Values.global.someotherpath is required !" .Values.global.someotherpath}}
{{- end -}}
{{- end -}}And now in chart1 i am trying to refer{{- define "mypath" }}
from: parentChart
{{- end -}}{{- define “copyMyPath” -}}
{{- include "mypath" "need value"}}
{{- end -}}I am getting below errortemplate: parentChart/charts/chart1/templates/deployment.yaml:37:20: executing “parentChart/charts/chart1/templates/deployment.yaml" at <include “copyMyPath” .>: error calling include: template: parentChart/charts/chart1/templates/_helpers.tpl:43:4: executing “copyMyPath" at <include “mypath” "need value">: error calling include: template: parentChart/templates/_helpers.tpl:112:14: executing “mypath” at <.Values.common>: can't evaluate field Values in type string

Am i missing something ?

Idea is i want to refer what's defined in parent chart template

Any help on this really appreciated


I posted the message the message on #helm-users slack channel, but haven't got any response.


Re: Lua Technical Discussion

Alistair Lowe
 

Hi Matt,

Thanks for the great briefing, it sounds like the biggest sticking-point in my suggestion is that AFAIK Squirrel doesn't have a Go implementation.

It shares a lot in common with Lua and was inspired by it but addressed a few key points at the time:
  • A much more familiar C-based syntax with native JSON notation support.
  • Better OO support.
  • Predictable Garbage Collection (was targeted at gaming).
You'll still find it today in Valve's Steam engine and Electric Imp's IoT platform and like Lua, it covers most of the points you've listed, it's portable, easily embeddable, small footprint, safer, free and open source.

My motivation for suggesting this was simply the familiarity of the syntax for an end-user, Lua may be 24th in the PYPL popularity list but that only accounts for a 0.31% share, which has been dropping each year, and its syntax style is fairly distant from the more popular languages. Squirrel is so close to Javascript and other C-based languages that a large number of users could run with it after a few minutes (once you realise 'local' instead of 'let'), much as I did when first picking it up. An example of the Syntax:

---
local myVar = 10.5;
local myString = "hi";
local myVerbatimString = @"Lots of escape characters will be printed \n\n\n\n\n\n";
local myTable1 = { test = 1, test2 = 2 };
local myTable2 = { "test": 1, "test2": "2" }; // JSON notation version (also note C-based comments, including block comments)
local myArray = [1, 2, 3, "hi"];

local myFunc = function(a,b) {
   if (a > b) {
      return 1;
   } else {
      return 0;
   }
}

local myLambda = @(a,b) a+b;

foreach (key, value in myTable1) {
   myTable[key] = value + 1;
}

function someFunction()
{
   return "hi";
}

class MyClass
{
   _privateParam = 10;

   constructor() { }

   function myFunc() { return _privateParam; }
}

local myInstance = myClass();
---


Many thanks,
Alistair Lowe


On Thu, Mar 12, 2020 at 6:10 PM Matt Fisher <Matt.Fisher@...> wrote:
We were looking to use Lua as a pre- and post-hook event system when charts were being rendered.

The post-render hook introduced in Helm 3.1 seems to handle most of the use cases the Lua event system would enable, so the need to implement a Lua-based event model was de-prioritized.

Lua was chosen over other languages for the following reasons:
  • portability (can be used on all devices)
  • designed to be embedded in other programs (simple sandboxing model)
  • it's an incredibly simple language (usually means there are less security risks)
  • the compiler and runtime take up a very small footprint, both in terms of overhead performance and code size
  • it's free and open source
  • it's being used in production in many software projects. NGINX famously loads Lua modules, allowing users to extend its capabilities.
  • there are several reference implementations of Lua VMs written in Go:
More information on the implementation details (as well as the use cases we were targeting) can be found in the Helm 3 proposal for the event-driven model. The Lua plugin proposal was another potential area we could use Lua.

I guess I have two questions:
  • What use case are you attempting to solve with this proposal?
  • Are there any Squirrel VMs written in Go?

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of Alistair Lowe via Lists.Cncf.Io <alistair=skyiot.co.uk@...>
Sent: Wednesday, March 11, 2020 4:42 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] Lua Technical Discussion
 
Hi guys,

I'm interested in the move to supporting Lua templates, is there a technical discussion or documentation discussing the reasoning behind Lua as a language choice?

I would like to put forward Squirrel-lang as a potencial alternative, it is easily embedded and small footprint like Lua but features a more familiar and intuative C-based syntax, very close to Java script and has native JSON support with good end-user documentation.

I'd like to understand more around the reasoning behind Lua and why it was selected to understand if this propos is a sensible one.

Many thanks


Re: Is it possibe to create yaml object in helm from file

Fox, Kevin M <Kevin.Fox@...>
 

Probably not the right forum to ask usage questions on. Maybe try the #helm-users kubernetes slack channel in the future. But:
{{- $lists := .Files.Get "files/test.yaml" | fromYaml }}
{{- range $element := $lists.list}}
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ $element }}
{{- end }}

________________________________________
From: cncf-helm@... <cncf-helm@...> on behalf of lmadan@... <lmadan@...>
Sent: Thursday, March 12, 2020 4:37 PM
To: cncf-helm@...
Subject: [cncf-helm] Is it possibe to create yaml object in helm from file

I want to iterate over the Yaml list which is defined in the file, and use it in Job. For example i have

test.yaml

list:
- first element
- second element

In _helpers.tpl i can define
something like

{{- define "mychart.list" -}}
{{ .Files.Get "test.yaml"| toYaml }}
{{- end }}

And then in Job i want do something like

{{- $lists := include "mychart.list" . }}
{{- range $element := $lists.list}}
apiVersion: batch/v1
kind: Job
metadata:


and then use the $element.

But when i am trying to do the dry-run with --debug it complains about

at <$lists.list>: can't evaluate field list in type string.

Looks like whole value is coming as string rather than Yaml, does it needs explicit call to Yaml parser ? If yes, is there a way to do that ?

BTW i have also tried various combinations of

{{- $lists := include "mychart.list" . | toYaml }}

or loading the file inline, but none of them helps.

I can put the list in Values.yaml, but don't want to do that purposely.


Any help is really appreciated.


Is it possibe to create yaml object in helm from file

lmadan@...
 

I want to iterate over the Yaml list which is defined in the file, and use it in Job. For example i have

test.yaml

    list:
      - first element
      - second element

In _helpers.tpl i can define
something like

{{- define "mychart.list" -}}
{{ .Files.Get "test.yaml"| toYaml }}
{{- end }}

And then in Job i want do something like

    {{- $lists  := include "mychart.list" . }}
    {{- range $element := $lists.list}}
    apiVersion: batch/v1
    kind: Job
    metadata:


and then use the $element.

But when i am trying to do the dry-run with --debug it complains about

at <$lists.list>: can't evaluate field list in type string.

Looks like whole value is coming as string rather than Yaml, does it needs explicit call to Yaml parser ? If yes, is there a way to do that ?

BTW i have also tried various combinations of

    {{- $lists  := include "mychart.list" . | toYaml }}

or loading the file inline, but none of them helps.

I can put the list in Values.yaml, but don't want to do that purposely.


Any help is really appreciated.


Re: Lua Technical Discussion

Matt Fisher <matt.fisher@...>
 

We were looking to use Lua as a pre- and post-hook event system when charts were being rendered.

The post-render hook introduced in Helm 3.1 seems to handle most of the use cases the Lua event system would enable, so the need to implement a Lua-based event model was de-prioritized.

Lua was chosen over other languages for the following reasons:
  • portability (can be used on all devices)
  • designed to be embedded in other programs (simple sandboxing model)
  • it's an incredibly simple language (usually means there are less security risks)
  • the compiler and runtime take up a very small footprint, both in terms of overhead performance and code size
  • it's free and open source
  • it's being used in production in many software projects. NGINX famously loads Lua modules, allowing users to extend its capabilities.
  • there are several reference implementations of Lua VMs written in Go:
More information on the implementation details (as well as the use cases we were targeting) can be found in the Helm 3 proposal for the event-driven model. The Lua plugin proposal was another potential area we could use Lua.

I guess I have two questions:
  • What use case are you attempting to solve with this proposal?
  • Are there any Squirrel VMs written in Go?

1504220459230_microsoft.png

Matthew Fisher

Caffeinated Software Engineer

Microsoft Canada


From: cncf-helm@... <cncf-helm@...> on behalf of Alistair Lowe via Lists.Cncf.Io <alistair=skyiot.co.uk@...>
Sent: Wednesday, March 11, 2020 4:42 PM
To: cncf-helm@... <cncf-helm@...>
Cc: cncf-helm@... <cncf-helm@...>
Subject: [cncf-helm] Lua Technical Discussion
 
Hi guys,

I'm interested in the move to supporting Lua templates, is there a technical discussion or documentation discussing the reasoning behind Lua as a language choice?

I would like to put forward Squirrel-lang as a potencial alternative, it is easily embedded and small footprint like Lua but features a more familiar and intuative C-based syntax, very close to Java script and has native JSON support with good end-user documentation.

I'd like to understand more around the reasoning behind Lua and why it was selected to understand if this propos is a sensible one.

Many thanks


Lua Technical Discussion

Alistair Lowe
 

Hi guys,

I'm interested in the move to supporting Lua templates, is there a technical discussion or documentation discussing the reasoning behind Lua as a language choice?

I would like to put forward Squirrel-lang as a potencial alternative, it is easily embedded and small footprint like Lua but features a more familiar and intuative C-based syntax, very close to Java script and has native JSON support with good end-user documentation.

I'd like to understand more around the reasoning behind Lua and why it was selected to understand if this propos is a sensible one.

Many thanks


Re: Helm unit tests

Simon Fontana Oscarsson
 

Thank you Gareth. At a first glance it looks good and I will surely try it out. 

--
SIMON FONTANA OSCARSSON
Software Developer

Ericsson
Ölandsgatan 1
37133 Karlskrona, Sweden
simon.fontana.oscarsson@...
www.ericsson.com

On ons, 2020-02-26 at 15:51 +0000, Gareth Rushgrove wrote:
As one of the maintainers I'm biased, but try out Conftest
https://protect2.fireeye.com/v1/url?k=e368c855-bfe21d50-e36888ce-861010bc36ff-8633b5071164f958&q=1&e=b790fd3f-f57a-40c5-8e65-dd11951c6ffe&u=https%3A%2F%2Fgithub.com%2Finstrumenta%2Fconftest

We have a Helm plugin which makes this easier too
https://protect2.fireeye.com/v1/url?k=c7f50a60-9b7fdf65-c7f54afb-861010bc36ff-879dd0a6072a1d53&q=1&e=b790fd3f-f57a-40c5-8e65-dd11951c6ffe&u=https%3A%2F%2Fgithub.com%2Finstrumenta%2Fhelm-conftest

Gareth

On Wed, 26 Feb 2020 at 15:48, Simon Fontana Oscarsson via
Lists.Cncf.Io <simon.fontana.oscarsson=ericsson.com@...>
wrote:
Hi, Are there any good options for writing unit tests for Helm charts? My use case is that I want to test that, when setting a parameter, the correct changes are applied to the chart. I've looked a bit at the helm-unittest project (https://protect2.fireeye.com/v1/url?k=3c2da40c-60a77109-3c2de497-861010bc36ff-58d3fe68ccadf71f&q=1&e=b790fd3f-f57a-40c5-8e65-dd11951c6ffe&u=https%3A%2F%2Fgithub.com%2Flrills%2Fhelm-unittest) and it looks good enough. Unfortunately it is no longer maintained, last commit was almost a year ago and many issues are left unanswered. For example it doesn't have Helm v3 support (yes, there is a PR but I don't want to apply hotfixes and maintain the project myself). Are there any other good projects with healthy community support for Helm chart unit tests? -- SIMON FONTANA OSCARSSON Software Developer Ericsson Ölandsgatan 1 37133 Karlskrona, Sweden simon.fontana.oscarsson@... www.ericsson.com