A handy utility to generate configmap and values.yaml of your application for helmifying them

Overview

Helmfig

Release workflow

Are you tired of writing values.yaml for configmap of your project when you are helmifying them? Helmfig is a handy tool that can generate the content of your configmap object and its parameters for values.yaml based on a config example file.

Currently, we just support YAML config structure, but we will support JSON and ENV in the future.

What actually it does

Assume that you have a file named config.example.yaml like the one below. You want to helmify your project, so you need a configmap object file and an appropriate values for that configmap. Helmfig generate them for you.

config.example.yaml

logger:
  level: info
  syslog:
    enabled: false
    server_address: localhost:514
    network: udp
    priority: info
nats_streaming:
  address: "127.0.0.1:4222"
  connect_wait: 1s
  pub_ack_wait: 2s
  max_pub_acks_in_flight: 5
  ping_interval: 2
  ping_max_out: 150
  cluster_id: test-cluster
  client_id: app

Configmap output:

logger:
  level: '{{ logger.level }}'
  syslog:
    enabled: '{{ logger.syslog.enabled }}'
    network: '{{ logger.syslog.network }}'
    priority: '{{ logger.syslog.priority }}'
    server_address: '{{ logger.syslog.serverAddress }}'
nats_streaming:
  address: '{{ natsStreaming.address }}'
  client_id: '{{ natsStreaming.clientId }}'
  cluster_id: '{{ natsStreaming.clusterId }}'
  connect_wait: '{{ natsStreaming.connectWait }}'
  max_pub_acks_in_flight: '{{ natsStreaming.maxPubAcksInFlight }}'
  ping_interval: '{{ natsStreaming.pingInterval }}'
  ping_max_out: '{{ natsStreaming.pingMaxOut }}'
  pub_ack_wait: '{{ natsStreaming.pubAckWait }}'

Values output:

logger:
  level: info
  syslog:
    enabled: false
    network: udp
    priority: info
    serverAddress: localhost:514
natsStreaming:
  address: 127.0.0.1:4222
  clientId: app
  clusterId: test-cluster
  connectWait: 1s
  maxPubAcksInFlight: 5
  pingInterval: 2
  pingMaxOut: 150
  pubAckWait: 2s

How to use it?

Download released binary

  1. Go to release page of the repo and download the appropriate released binary with regard to your OS and arch.

  2. Put it in one of PATH directories

  3. Run it by simply typing helmfig in your desired terminal.

Build from source

  1. Install a golang compiler (at least version 1.16).

  2. Clone the project and compile it:

git clone https://github.com/snapp-incubator/helmfig.git
cd helmfig
go build .
  1. Put your config.example.yml near the compiled binary and run it via:
./helmfig yaml
  1. If everything is OK, two files will be generated: configmap.yaml and values.yaml. You can use them in helm chart of your desired application

License

Apache-2.0 License, see LICENSE.

Releases(v1.1.1)
Owner
Snapp Cab Incubators
Growing snapp-cab open source projects
Snapp Cab Incubators
Frep - Generate file using template from environment, arguments, json/yaml/toml config files

frep Generate file using template from environment, arguments, json/yaml/toml config files. NAME: frep - Generate file using template USAGE: fr

Guoqiang Chen 135 Aug 3, 2022
ginko-volkswagen detects when your tests are being run in a CI server, and reports them as passing

detects when your ginkgo-based tests are being run in a CI server, and reports them as passing

Christoph Blecker 7 Dec 4, 2021
Fleex allows you to create multiple VPS on cloud providers and use them to distribute your workload.

Fleex allows you to create multiple VPS on cloud providers and use them to distribute your workload. Run tools like masscan, puredns, ffuf, httpx or a

null 156 Jul 18, 2022
A small utility to generate a kubectl configuration file for all clusters you have access to in GKE.

gke-config-helper A small utility to generate a kubectl configuration file for all clusters you have access to in GKE. Usage $ gke-config-helper The b

Calle Pettersson 4 Feb 9, 2022
Converts your k8s YAML to a cdk8s Api Object.

kube2cdk8s Converts your k8s YAML to a cdk8s Api Object. Uses Pulumi's kube2pulumi as a base. Dependencies 1. pulumi cli 2. pulumi kubernetes provider

smallcase 12 Aug 4, 2022
A very simple, silly little kubectl plugin / utility that guesses which language an application running in a kubernetes pod was written in.

A very simple, silly little kubectl plugin / utility that guesses which language an application running in a kubernetes pod was written in.

Tom Granot 2 Mar 9, 2022
An app that fetches a random name and joke, and combines them.

Wildfire Backend Assessment An app that fetches a random name and joke, and combines them.

Kushol Huq 0 Jan 29, 2022
A Go package providing a generic data type to track maximum and minimum peak values.

go-peak Overview go-peak is a Go package providing a generic data type that tracks the maximum and minimum peak values within a specific period of tim

tunabay 0 Mar 26, 2022
Learning about containers and how they work by creating them the hard way

Containers the hard way: Gocker: A mini Docker written in Go It is a set of Linux's operating system primitives that provide the illusion of a contain

Shuveb Hussain 1.4k Aug 5, 2022
A simple tool who pulls data from Online.net API and parse them to a Prometheus format

Dedibox backup monitoring A simple tool who reads API from Online.net and parse them into a Prometheus-compatible format. Conceived to be lightweight,

Florian Forestier / Artheriom 4 Dec 1, 2021
Watches for zips and unzips them

unziploc Watches for zips/tars/rars and unzips them Options: PATHS = /data #Comma seperated list of paths to watch WRITE_DELAY = 1m #How long to wait

null 1 Nov 28, 2021
A long-running Go program that watches a Youtube playlist for new videos, and downloads them using yt-dlp or other preferred tool.

ytdlwatch A long-running Go program that watches a Youtube playlist for new videos, and downloads them using yt-dlp or other preferred tool. Ideal for

Raine Virta 9 Jul 25, 2022
Sapfun - Utility that takes control over your video card coolers to keep it cool and steady

What? sapfun - Utility that takes control over your video card coolers to keep i

Vadim Kuznetsov 1 Feb 18, 2022
A helm v3 plugin to get values from a previous release

helm-val helm-val is a helm plugin to fetch values from a previous release. Getting started Installation To install the plugin: $ helm plugin install

Hamza ZOUHAIR 12 Feb 8, 2022
Render helm values-files from others

helm-plugin-render-values The Helm downloader plugin with rendering templated values files Install Use helm CLI to install this plugin: $ helm plugin

Vivid Money 5 Jun 27, 2022
Drone conversion for platform values

drocopla A drone.io conversion extension to set host platform as drone pipeline platform. Default drone.io behaviour: If os/arch is not set in .drone.

dopos 1 Dec 1, 2021
Print specified values from desktop files to stdout.

dprint Print specified values from desktop files to stdout. Look, it’s hard to describe okay? Here’s a picture of me using it with dmenu. My launcher

kota 0 Dec 22, 2021
Package create provides a generic option pattern for creating new values of any type

create Package create provides a generic option pattern for creating new values

null 1 Dec 30, 2021
µTask is an automation engine that models and executes business processes declared in yaml. ✏️📋

µTask, the Lightweight Automation Engine µTask is an automation engine built for the cloud. It is: simple to operate: only a postgres DB is required s

OVHcloud 687 Jul 31, 2022