A simple YAML transpilation tool for rendering kubernetes manifests
Project description
⛵ Gybe
A simple YAML source-to-source compiler (transpiler) framework for rendering Kubernetes manifests with python type-hints.
Reqiurements
Python 3.7+
Gybe uses pydantic for type-hint validation and Click for the CLI.
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.kubernetes.favorites import Pod, PodSpec, Container import gybe def create_standard_container(image: str, command: 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.1.0.tar.gz
(119.2 kB
view hashes)
Built Distribution
gybe-0.1.0-py2.py3-none-any.whl
(193.3 kB
view hashes)