A simple YAML transpilation tool for rendering kubernetes manifests
Project description
Gybe
Transpile Kubernetes manifests with your simple values.yaml files using python type-hints. Gybe is a simple, declarative, and more pythonic alternative to helm that makes it easier to develop modest kubernetes deployments.
Reqiurements
Python 3.7+
Gybe uses pydantic for type-hint validation and click for the CLI.
Install
pip install gybe
Example
Create a simple values.yaml
file:
image: python:3.9
command:
- python
- -m
- http.server
Create a chart.py
file:
from typing import List
from gybe.favorites.kubernetes import Pod, PodSpec, Container
import gybe
def create_standard_container(image: str, command: List[str]):
return Container(image=image, command=command, name='standard-server')
@gybe.transpiler
def two_pods(image: str, command: List[str], port: int=8080) -> gybe.Manifest:
pod_spec = PodSpec(
containers=[
create_standard_container(image=image, command=command)
],
ports=[dict(port=port)]
)
return [
Pod(
kind='Pod',
apiVersion='v1',
metadata=dict(name='pod-1'),
spec=pod_spec,
),
Pod(
kind='Pod',
apiVersion='v1',
metadata=dict(name='pod-2'),
spec=pod_spec,
),
]
if __name__ == '__main__':
two_pods()
Now run your transpiler with your values file:
python chart.py values.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-1
spec:
containers:
- command:
- python
- -m
- http.server
image: python:3.9
name: standard-server
---
apiVersion: v1
kind: Pod
metadata:
name: pod-2
spec:
containers:
- command:
- python
- -m
- http.server
image: python:3.9
name: standard-server
If you're feeling lucky, you can pipe that into kubectl
:
python chart.py values.yaml | kubectl apply -f -
pod/pod-1 created
pod/pod-2 created
kubectl get pods
NAME READY STATUS RESTARTS AGE
pod-1 1/1 Running 0 5s
pod-2 1/1 Running 0 5s
python chart.py values.yaml | kubectl delete -f -
pod "pod-1" deleted
pod "pod-2" deleted
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
gybe-0.2.2.tar.gz
(157.6 kB
view hashes)
Built Distribution
gybe-0.2.2-py2.py3-none-any.whl
(186.4 kB
view hashes)