Rust based Kubernetes Operator to deploy K8s objects minimally.

Overview

kube-nimble

nimble /ˈnɪmbl/ - quick and light in movement or action; agile.

This project began from a place of curiosity about Kubernetes CRDs and their controllers, as well as a desire to learn Rust. I never anticipated how straightforward it would be to craft controller logic in Rust. It's evident that many individuals encounter challenges when managing numerous manifests for various environments (although tools like Helm and Kustomize address this). This tool offers a streamlined alternative for deploying native Kubernetes objects with minimal overhead, eliminating the need to create lengthy manifests for each Kubernetes object.

As it stands, this tool currently supports the minimal creation of deployments, offering arguments such as image and replica count. However, my plan is to extend its capabilities to encompass all other Kubernetes objects in the near future.

Steps to run locally on linux

  • Install Rust
  • Kubernetes Cluster (Local / Cloud)
  • export kubeconfig of cluster using export KUBECONFIG=<path-to-config>
  • Apply CRD to the cluster using kubectl create -f crd/nimble.ivaltryek.github.com.yaml
  • Build the project using cargo build
  • Run the operator using cargo run

If the operator initializes without encountering any errors, then you have successfully followed the steps.

  • Finally, Create the custom object from examples
    • This objects is created in namespace test; if it does not exist use kubectl create ns test
    • to apply the object: kubectl create -f examples/simple-deployment.yaml

API Reference

https://ivaltryek.github.io/kube-nimble/

Development

To develop this project locally, just follow the steps that is mentioned in run locally on linux

You might also like...
A simple, C-like, ternary operator for cleaner syntax.

A simple ternary operator macro in rust. the iff! macro is the only item exported by this crate, it simply takes three expressions, seperated by ? and

Deploy dioxus-web to Vercel.

Dioxus demo This demo shows how to use Dioxus to build a static web application and deploy it to Vercel. Local development To run the demo locally, yo

A Command-line tool to create, manage and deploy your python projects

PPM A Command-line tool to create, manage and deploy your python projects Table of Contents PPM Main Features Create a Project project.ini file Projec

Cedar-agent is the easiest way to deploy and run Cedar
Cedar-agent is the easiest way to deploy and run Cedar

Cedar Agent What is Cedar-Agent? Cedar-Agent is an HTTP server designed to efficiently manage a policy store and a data store. It provides a seamless

Create, manage and deploy p2panda schemas
Create, manage and deploy p2panda schemas

fishy Create, manage and deploy p2panda schemas Releases | Contribute | Website Command-line-tool to easily create update and share your p2panda schem

Incredible.dev is an AI Coding Co-worker which can code, fix, document, deploy, test your APIs. One agent to rule everything API.

Incredible.dev Early Github preview, documentation and instruction to run coming soon in a week! Here are some highlights: AI agents that can code, fi

Rust command line utility to quickly display useful secrets in a Kubernetes namespace
Rust command line utility to quickly display useful secrets in a Kubernetes namespace

kube-secrets This is a command line utility for quickly looking at secrets in a Kubernetes namespace that are typically looked at by humans. It specif

Fast Symbol Ranking based compressor. Based on the idea of Matt Mahoney's SR2

Fast Symbol Ranking based compressor. Based on the idea of Matt Mahoney's SR2

A Rust-based shell script to create a folder structure to use for a single class every semester. Mostly an excuse to use Rust.

A Rust Course Folder Shell Script PROJECT IN PROGRESS (Spring 2022) When completed, script will create a folder structure of the following schema: [ro

Comments
  • feat: add support for dynamic labeling and container name

    feat: add support for dynamic labeling and container name

    • fixes #3 :heavy_check_mark: Container names are dynamic based upon whatever is provided in Nimble manifest's metadata

    • fixes #2 :heavy_check_mark: Deployments's MatchLabels are dynamic based upon whatever is provided in Nimble manifest's spec.deployment.labels

    enhancement 
    opened by ivaltryek 0
Releases(v0.2.0)
  • v0.2.0(Feb 28, 2024)

    What's Changed

    Exciting New Features 🎉

    • feat: add support for dynamic labeling and container name by @ivaltryek in https://github.com/ivaltryek/kube-nimble/pull/4
    • feat: add support for annotations field by @ivaltryek in https://github.com/ivaltryek/kube-nimble/pull/9
    • feat: add support for multi container deployment by @ivaltryek in https://github.com/ivaltryek/kube-nimble/pull/12
    • feat: add support for resources by @ivaltryek in https://github.com/ivaltryek/kube-nimble/pull/14

    Other Changes

    • chore: make logs more readable and reduce noise by @ivaltryek in https://github.com/ivaltryek/kube-nimble/pull/6

    New Contributors

    • @ivaltryek made their first contribution in https://github.com/ivaltryek/kube-nimble/pull/4

    Full Changelog: https://github.com/ivaltryek/kube-nimble/compare/v0.1.0...v0.2.0

    Source code(tar.gz)
    Source code(zip)
    nimble.ivaltryek.github.com.yaml(3.18 KB)
  • v0.1.0(Feb 23, 2024)

Owner
Meet Vasani
DevOps Engineer
Meet Vasani
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
Kubernetes operator for declaratively deploying wasmCloud applications (via wadm) and hosts on Kubernetes.

wasmcloud-operator An operator for managing a set of wasmCloud hosts running on Kubernetes and manage wasmCloud applications using wadm. The goal is t

wasmcloud 11 May 1, 2024
⏱ Kubernetes operator that allows to set maximum lifetime for pods

Pod Lifetime Limiter Hi! ?? So you deal with a crappy application which stops working after some period of time and you want to restart it every N hou

Viktor 27 Sep 8, 2022
Cost saving K8s controller to scale down and up of resources during non-business hours

Kube-Saver Motivation Scale down cluster nodes by scaling down Deployments, StatefulSet, CronJob, Hpa during non-business hours and save $$, but if yo

Mahesh Rayas 5 Aug 15, 2022
Schemars is a high-performance Python serialization library, leveraging Rust and PyO3 for efficient handling of complex objects

Schemars Introduction Schemars is a Python package, written in Rust and leveraging PyO3, designed for efficient and flexible serialization of Python c

Michael Gendy 7 Nov 21, 2023
This crate provides a set of functions to generate SQL statements for various PostgreSQL schema objects

This crate provides a set of functions to generate SQL statements for various PostgreSQL schema objects, such as tables, views, materialized views, functions, triggers, and indexes. The generated SQL statements can be useful for schema introspection, documentation, or migration purposes.

Tyr Chen 11 Apr 4, 2023
Mini Rust CLI to deploy sites to Netlify using their API

This is a Rust CLI that uses the Netlify API to deploy sites.

Benjamin Lannon 10 May 12, 2022
IntMaxRollup operator node & cli tools.

Intmax Rollup Operator Int max operator node Prepara Install rustup. rustup override set nightly

null 5 Jul 26, 2022
Expand your possibilities with the Try ? Operator

Expand your possibilities with the Try ? Operator Have you ever found yourself writing a function which may return early based on some condition? fn m

EC 1 Feb 1, 2022
Set of tools that make it easier for the operator to manage a TAPLE network.

⚠️ TAPLE is in early development and should not be used in production ⚠️ TAPLE Tools TAPLE (pronounced T+ ?? ['tapəl]) stands for Tracking (Autonomous

Open Canarias 5 Jan 25, 2023