Skip to main content

A simple YAML transpilation tool for rendering kubernetes manifests

Project description

Gybe

PyPI Package codecov.io

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


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)

Uploaded Source

Built Distribution

gybe-0.2.2-py2.py3-none-any.whl (186.4 kB view hashes)

Uploaded Python 2 Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page