/ezdeploy

A simple tool to deploy various Kubernetes resources

Primary LanguageGoMIT LicenseMIT

ezdeploy

A simple tool to deploy various Kubernetes resources

NO DAEMON, NO SERVICE, JUST ONE-OFF EXECUTION

中文文档

Features

  • Support yaml, json, jsonnet and Helm
  • Support incremental updates

Installation

You can either build binary from source, or just download pre-built binary.

Usage

  1. Ensure kubectl and helm are available in $PATH
  2. Prepare a resource directory, see below
  3. Run ezdeploy

Options

  • --dry-run, run without actually apply any changes.
  • --kubeconfig or KUBECONFIG, specify path to kubeconfig file
  • KUBECONFIG_BASE64, base64 encoded kubeconfig file content

Layout of a Resource Directory

  • Each top-level directory stands for a namespace
  • Every resource file in that directory, will be applied to that namespace

For example:

namespace-a/
  workload-aa.yaml
  workload-ab.jsonnet
  workload-ac.json
namespace-b/
  workload-ba.yaml
  workload-bb.jsonnet
  workload-bc.json

Helm Support

  • Put a Helm Chart to top-level directory _helm
  • Create values file in namespace directory, with naming format [RELEASE_NAME].[CHART_NAME].helm.yaml

For example:

_helm/
  ingress-nginx/
    Chart.yaml
    values.yaml
    templates/
      ...
kube-system/
  main.ingress-nginx.helm.yaml

ezdeploy will create or update a release named main, using chart _helm/ingress-nginx, and values file kube-system/primary.ingress-nginx.helm.yaml

ezdeploy also support values file in jsonnet, file name should be [RELEASE_NAME].[CHART_NAME].helm.jsonnet

Credits

GUO YANKE, MIT License