Simple ExampleΒΆ

With avionix, you can build with the typical kubernetes components

For example for a deployment:

from avionix import ChartBuilder, ChartInfo, ObjectMeta
from avionix.kube.core import (
    PodSpec,
    LabelSelector,
    Container,
    ContainerPort,
    EnvVar,
)
from avionix.kube.apps import Deployment, DeploymentSpec, PodTemplateSpec

container = Container(
    name=f"test-container",
    image="k8s.gcr.io/echoserver:1.4",
    env=[EnvVar("test", "test-value")],
    ports=[ContainerPort(8080)],
)

deployment = Deployment(
    metadata=ObjectMeta(name=f"test-deployment", labels={"app": "my_app"}),
    spec=DeploymentSpec(
        replicas=1,
        template=PodTemplateSpec(
            ObjectMeta(labels={"app": "my_app"}),
            spec=PodSpec(containers=[container]),
        ),
        selector=LabelSelector(match_labels={"app": "my_app"}),
    ),
)

builder = ChartBuilder(
    ChartInfo(api_version="3.2.4", name="test", version="0.1.0", app_version="v1"),
    [deployment],
)

from there you either do

builder.install_chart()

if you want to install the chart directly and let avionix handle it or you can use

builder.generate_chart()

to generate the chart and template yaml files

Additionally

builder.uninstall_chart()

and

builder.upgrade_chart()

are included.

For more specifics about chart builder see the Chart documentation.

These are all directly equivalent to their corresponding helm commands and also

support passing in command line by passing a dictionary in with the options needed.

For example,

builder.install_chart(options={"create-namespace": None, "dependency-update": None}))
If a command line option takes an argument in helm, then that value should be given

as the value in the corresponding dictionary key in the options dictionary.