IntelliJ IDEA 2018.3: Helm support

Zlata Kalyuzhnaya

Not so long ago, IntelliJ IDEA 2018.1 Ultimate Edition introduced some initial support for Kubernetes through the brand new Kubernetes plugin. The forthcoming IntelliJ IDEA 2018.3 takes it even further and now the Kubernetes plugin gets Helm support!

In the blog post covering the first EAP build of IntelliJ IDEA 2018.3, we only briefly mentioned the availability of Helm support in the Kubernetes plugin. Now the time has come to dive into the details.

Please bear in mind that you need to install not only the Kubernetes plugin v2018.3, but also the Go template plugin. After this is done, the IDE will correctly resolve the Helm resource template files and provide you with our well-known editing support: code completion, rename refactoring, and, of course, inspections and quick-fixes.

k8sCompletion

All the inspections that work for Kubernetes files will now also work for Helm resource template files in the editor, except for the places where Go template expressions are used.

k8sInspectionKey

It seems that even though there are a dozen inspections working for Helm resource files, it is still quite easy to make a mistake in Go Template expressions. But what if you could actually preview the result of your Helm template? It may be quite handy. Choose the new Kubernetes | Helm Template action from the context menu, and the IDE will preview the result of the Helm template rendering in the diff.

k8sHelmPreviewTemplate

As mentioned above, the editor inspections don’t warn you about possible errors in Go template expressions. But we’ve got you covered here too – use the new Helm Template action, and the IDE will warn you about the errors in the diff viewer.

k8sInspectionInvalidLabel

Another feature that you can benefit from is a new Helm Dependency Update. This new action downloads the external tgz dependencies (or updates the existing one) and displays them in the project tree.

By the way, if there is no requirements.lock available, this action creates one for you (provided of course that there is a requirements.yaml).

k8sHelmDependencyUpdate

You can assign shortcuts for the new Helm Dependency Update and Helm Template action in the Preferences / Settings | Keymap | Plug-ins | Kubernetes.

k8sHelmAssignShortcut

Quick documentation (F1 on macOS / Ctrl-Q on Windows and Linux) is, of course, now available for Helm resource files as well.

k8sHelmQuickDoc

Oh, and you can now use the gutter icons to navigate between a label definition and a label selector, just note that if it’s a Helm specific file then it navigates inside a chart with it’s sub-charts, and if it’s a Kubernetes file it navigates outside of the charts.

Besides, there are new gutter icons in values.yaml files that you can use to navigate to overridden/overriding values.

k8sHelmNavigationOverridden

But more importantly, you can navigate from a values usage to its declaration in the chart’s values.yaml file.

k8sNavigation

That’s it! We are working hard to add even more capabilities to the Kubernetes plugin. We plan to add support for the runtime, and Openshift and Istio support is also among some of our priorities. We want to make sure that our support will meet your needs, so please share your feature requests and use-case scenarios with us in our issue tracker. We’d love to hear what you think!

Happy Developing!

Comments below can no longer be edited.

16 Responses to IntelliJ IDEA 2018.3: Helm support

  1. Jakub Kahovec says:

    October 15, 2018

    This feature is awesome. Thank you !

  2. Kris says:

    October 15, 2018

    Awesome stuff, thanks for the great work!

  3. Jakub says:

    October 16, 2018

    Hey! I’m really looking forward to this release. Will this be also working with go plugin enabled when this is released?

    • Zlata Kalyuzhnaya says:

      October 16, 2018

      Hi Jakub, in order to work with Helm resource template files you need both the Kubernetes plugin and the Go template plugin. Even after we release IJ 2018.3

      • Jakub says:

        October 16, 2018

        Does it mean that I’ll have to choose between go plugin for go language support and go template for helm support?

        • Sergey Anchipolevsky says:

          October 16, 2018

          Hi Jakub. If by “go plugin” you mean this https://plugins.jetbrains.com/plugin/5047-go-language-golang-org-support-plugin , then it can safely co-exist with Go Template plugin (https://plugins.jetbrains.com/plugin/10581-go-template). Go and Go Template are different languages with different support.

          • Jakub says:

            October 16, 2018

            Nope, I meant this one:
            https://plugins.jetbrains.com/plugin/9568-go

            When I start IntelliJ 2018.3 EAP it asks me to choose one of those cause they are incompatible with each other.

            • Sergey Anchipolevsky says:

              October 16, 2018

              Oh, yeah. Go plugin completely includes functionality of Go Template plugin. This is really confusing, but it’s how it’s implemented right now.
              So you don’t have (and are not allowed actually) to have both Go and Go Template. Choose Go and it will work fine with Kubernetes.

              • Jakub says:

                October 17, 2018

                Great 😉 Happy to hear that. I agree that it’s pretty confusing. You should write it somewhere.

              • Sergey Anchipolevsky says:

                October 23, 2018

                By the way, I was told recently that Go plugin will depend on Go Template plugin soon, rather than include it. So you won’t face this problem anymore with one of the upcoming updates.

  4. Rohit says:

    October 28, 2018

    I hope they will release this for Community edition also.

  5. Grace Tshihata says:

    December 10, 2018

    This is cool guys …

  6. buri says:

    March 5, 2019

    With the helm command “helm template” I can specify a values file using -f, –values valueFiles (https://helm.sh/docs/helm/#helm-template) and the specified YAML-Files will be taken into account as well, when substituting values.

    Is there a way with this plugin to mark a file a “values-file”? Would be quite handy!

    • Sergey Anchipolevsky says:

      April 18, 2019

      Hi buri,

      Currently there is no way to configure alternative values files, but we’re planning to add such an ability in the future

  7. sebastian says:

    April 18, 2019

    Hi there,

    I really like the helm templates & kubernetes integration.
    It’s not obvious to me though how to configure file type patterns:

    a) I can make all *.yaml files helm templates, which is inconvenient for other yaml files in a project (maybe having two “sorts” of yaml-files in a project is considered unusual?)
    b) or I can use some other extension and/or file name convention. But naming all helm templates *.helm-yaml or similarly seems awkward too

    I tried using “templates/*.yaml” as file pattern to take a all yaml files inside a “templates” folder as helm-templates.
    Any hints how to solve this?

Subscribe

Subscribe for updates