A simple tool to deploy various Kubernetes resources
NO DAEMON, NO SERVICE, JUST ONE-OFF EXECUTION
- Support
yaml
,json
,jsonnet
andHelm
- Support incremental updates
You can either build binary from source, or just download pre-built binary.
-
Build from source
git clone https://github.com/yankeguo/ezdeploy.git cd ezdeploy go build -o ezdeploy ./cmd/ezdeploy
-
Download pre-built binaries
- Ensure
kubectl
andhelm
are available in$PATH
- Prepare a resource directory, see below
- Run
ezdeploy
--dry-run
, run without actually apply any changes.--kubeconfig
orKUBECONFIG
, specify path tokubeconfig
fileKUBECONFIG_BASE64
, base64 encodedkubeconfig
file content
- 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
- 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
GUO YANKE, MIT License