Bonny.CRD (bonny v0.4.4) View Source

Represents the spec portion of a Kubernetes CustomResourceDefinition manifest.

The CustomResourceDefinition API resource allows you to define custom resources. Defining a CRD object creates a new custom resource with a name and schema that you specify. The Kubernetes API serves and handles the storage of your custom resource.

Link to this section Summary

Types

t()

CRD Spec

Functions

Gets group version from CRD spec

Default CLI printer columns.

CRD Kind or plural name

Generates the map equivalent of the Kubernetes CRD YAML manifest

Link to this section Types

Specs

t() :: %Bonny.CRD{
  additional_printer_columns: [columns_t()],
  group: String.t() | nil,
  names: names_t(),
  scope: :namespaced | :cluster,
  version: String.t()
}

CRD Spec

Link to this section Functions

Specs

api_version(t()) :: String.t()

Gets group version from CRD spec

Examples

Returns apiVersion for an operator

iex> Bonny.CRD.api_version(%Bonny.CRD{group: "hello.example.com", version: "v1", scope: :namespaced, names: %{}})
"hello.example.com/v1"

Returns apiVersion for apps resources

iex> Bonny.CRD.api_version(%Bonny.CRD{group: "apps", version: "v1", scope: :namespaced, names: %{}})
"apps/v1"

Returns apiVersion for core resources

iex> Bonny.CRD.api_version(%Bonny.CRD{group: "", version: "v1", scope: :namespaced, names: %{}})
"v1"

iex> Bonny.CRD.api_version(%Bonny.CRD{group: nil, version: "v1", scope: :namespaced, names: %{}})
"v1"

Specs

default_columns() :: [map()]

Default CLI printer columns.

These are added to the CRDs columns when columns are set.

The kubernetes API returns these by default when they are not set.

Specs

kind(t()) :: binary()

CRD Kind or plural name

Examples

iex> Bonny.CRD.kind(%Bonny.CRD{names: %{plural: "greetings"}, scope: :namespaced, group: "test", version: "v1"})
"greetings"
Link to this function

to_manifest(crd, api_version \\ "apiextensions.k8s.io/v1beta1")

View Source

Specs

to_manifest(t(), String.t()) :: map()

Generates the map equivalent of the Kubernetes CRD YAML manifest

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  creationTimestamp: null
  name: widgets.example.com
spec:
  group: example.com
  names:
    kind: Widget
    plural: widgets
  scope: Namespaced
  version: v1