Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mehuaniket/tugboat
Controller which replicates kruise but simple.
https://github.com/mehuaniket/tugboat
controller devops job-scheduler kubernetes
Last synced: 17 days ago
JSON representation
Controller which replicates kruise but simple.
- Host: GitHub
- URL: https://github.com/mehuaniket/tugboat
- Owner: mehuaniket
- License: apache-2.0
- Created: 2024-01-19T16:10:13.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-25T17:41:51.000Z (10 months ago)
- Last Synced: 2024-11-09T15:23:34.103Z (2 months ago)
- Topics: controller, devops, job-scheduler, kubernetes
- Language: Go
- Homepage: https://tugboat.cloudrasayan.com
- Size: 334 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Tugboat
Minimal version of `openkruise/kruise`. It was named Tugboat because it does minimal tasks with a small footprint compared to Kruise.
## Description
Introducing a lightweight Kubernetes operator for BroadcastJobs, enabling efficient pod deployment across your cluster.### Key Features:
- **Effortless Node-Wide Deployments:** Seamlessly create BroadcastJobs to launch pods on all eligible nodes, streamlining cluster-wide operations.
- **Precise Node Selection:** Customize pod placement with node selectors for granular control.
- **Restart Management:** Define restart limits for individual pods to ensure resilience and manage potential failures.
- **Minimal Footprint:** Designed for efficiency with a smaller resource footprint than OpenKruise, ideal for resource-conscious environments.
- **Perfect for Learning Go:** Built as a learning project, it showcases Go development practices while creating a valuable Kubernetes tool.Ideal for:
- Cluster-wide maintenance tasks
- Diagnostics and data collection
- Distributing workloads across all nodes
- Get started today and experience effortless cluster-wide pod deployments!## Install
```bash
helm repo add tugboat https://mehuaniket.github.io/tools/tugboat
helm install tugboat tugboat/tugboat
```## Uninstall
```bash
helm uninstall tugboat
```## Deploy
- Create cronbroadcast job. `touch cronbroadcast.yaml`
```yaml
apiVersion: apps.tugboat.cloudrasayan.com/v1
kind: CronBroadcastJob
metadata:
labels:
app.kubernetes.io/name: cronbroadcastjob
app.kubernetes.io/instance: cronbroadcastjob-sample
app.kubernetes.io/part-of: tugboat
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/created-by: tugboat
name: cronbroadcastjob-sample
spec:
schedule: "*/2 * * * *"
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
broadcastJobTemplate:
template:
spec:
containers:
- name: helloworld
image: hello-world
# restartLimit: 3 #number of retry allowed for each node
labels:
kubernetes.io/hostname: microk8s-vm
nodeSelector:
kubernetes.io/os: linux
cleanupafter: 500s
```- Apply
```
kubectl apply -f cronbroadcast.yaml
```## License
Copyright 2024.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License athttp://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.