Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/yankeguo/ezdeploy
A simple tool to deploy various Kubernetes resources
https://github.com/yankeguo/ezdeploy
gitops golang helm jsonnet kubernetes
Last synced: 3 days ago
JSON representation
A simple tool to deploy various Kubernetes resources
- Host: GitHub
- URL: https://github.com/yankeguo/ezdeploy
- Owner: yankeguo
- License: mit
- Created: 2022-09-08T08:35:36.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-12-30T05:39:42.000Z (8 days ago)
- Last Synced: 2024-12-30T06:36:11.645Z (8 days ago)
- Topics: gitops, golang, helm, jsonnet, kubernetes
- Language: Go
- Homepage:
- Size: 154 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# ezdeploy
A simple tool to deploy various Kubernetes resources
NO DAEMON, NO SERVICE, JUST ONE-OFF EXECUTION
[中文文档](README.zh.md)
## Features
- Support `yaml`, `json`, `jsonnet` and `Helm`
- Support incremental updates## Installation
You can either build binary from source, or just download pre-built binary.
- Build from source
```shell
git clone https://github.com/yankeguo/ezdeploy.git
cd ezdeploy
go build -o ezdeploy ./cmd/ezdeploy
```- Download pre-built binaries
View
## 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