Dagger
Search

crossplane

Copyright © 2024 Patrick Hermann patrick.hermann@sva.de

Installation

dagger install github.com/stuttgart-things/dagger/crossplane@v0.115.0

Entrypoint

Return Type
Crossplane
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
func (m *MyModule) Example() *dagger.Crossplane  {
	return dag.
			Crossplane()
}
@function
def example() -> dagger.Crossplane:
	return (
		dag.crossplane()
	)
@func()
example(): Crossplane {
	return dag
		.crossplane()
}

Types

Crossplane 🔗

xplaneContainer() 🔗

Return Type
Container !
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 xplane-container
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Crossplane().
			XplaneContainer()
}
@function
def example() -> dagger.Container:
	return (
		dag.crossplane()
		.xplane_container()
	)
@func()
example(): Container {
	return dag
		.crossplane()
		.xplaneContainer()
}

constructor() 🔗

Constructor creates and returns a new Crossplane module instance

Return Type
Crossplane !
Arguments
NameTypeDefault ValueDescription
xplaneContainerContainer -xplane container It need contain xplane
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 constructor
func (m *MyModule) Example() *dagger.Crossplane  {
	return dag.
			Crossplane().
			Constructor()
}
@function
def example() -> dagger.Crossplane:
	return (
		dag.crossplane()
		.constructor()
	)
@func()
example(): Crossplane {
	return dag
		.crossplane()
		.constructor()
}

generateDefinition() 🔗

GenerateXRD runs kcl2xrd with the given flags on the provided KCL schema file

Return Type
File !
Arguments
NameTypeDefault ValueDescription
kclSchemaFile !-No description provided
cliFlagsString -comma-separated flags, e.g., "-i cloudinit.k,-v v1alpha1,-o cloudinit-xrd.yaml"
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 generate-definition --kcl-schema file:path
func (m *MyModule) Example(kclSchema *dagger.File) *dagger.File  {
	return dag.
			Crossplane().
			GenerateDefinition(kclSchema)
}
@function
def example(kcl_schema: dagger.File) -> dagger.File:
	return (
		dag.crossplane()
		.generate_definition(kcl_schema)
	)
@func()
example(kclSchema: File): File {
	return dag
		.crossplane()
		.generateDefinition(kclSchema)
}

getXplaneContainer() 🔗

GetXplaneContainer returns the default image for Crossplane with crossplane and kcl2xrd installed

Return Type
Container !
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 get-xplane-container
func (m *MyModule) Example() *dagger.Container  {
	return dag.
			Crossplane().
			GetXplaneContainer()
}
@function
def example() -> dagger.Container:
	return (
		dag.crossplane()
		.get_xplane_container()
	)
@func()
example(): Container {
	return dag
		.crossplane()
		.getXplaneContainer()
}

initCustomPackage() 🔗

InitCustomPackage scaffolds a custom Crossplane package with templates and configuration Parameters: - packageName: Name of the package to create (required) - kind: Composite Resource kind (optional, defaults to packageName) - namespace: Kubernetes namespace (optional, defaults to “crossplane-system”) - dataYaml: YAML string with additional template data (optional)

Usage: dagger call init-custom-package –package-name my-pvc –kind ClusterResourcePVC –namespace default –data-yaml ‘{“storage”:“10Gi”}’

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
packageNameString !-No description provided
kindString !-No description provided
namespaceString !-No description provided
dataYamlString !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 init-custom-package --package-name string --kind string --namespace string --data-yaml string
func (m *MyModule) Example(packageName string, kind string, namespace string, dataYaml string) *dagger.Directory  {
	return dag.
			Crossplane().
			InitCustomPackage(packageName, kind, namespace, dataYaml)
}
@function
def example(package_name: str, kind: str, namespace: str, data_yaml: str) -> dagger.Directory:
	return (
		dag.crossplane()
		.init_custom_package(package_name, kind, namespace, data_yaml)
	)
@func()
example(packageName: string, kind: string, namespace: string, dataYaml: string): Directory {
	return dag
		.crossplane()
		.initCustomPackage(packageName, kind, namespace, dataYaml)
}

initPackage() 🔗

Init Crossplane Package

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
nameString !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 init-package --name string
func (m *MyModule) Example(name string) *dagger.Directory  {
	return dag.
			Crossplane().
			InitPackage(name)
}
@function
def example(name: str) -> dagger.Directory:
	return (
		dag.crossplane()
		.init_package(name)
	)
@func()
example(name: string): Directory {
	return dag
		.crossplane()
		.initPackage(name)
}

modifyDefinition() 🔗

Return Type
File !
Arguments
NameTypeDefault ValueDescription
xrdFile !-No description provided
apiVersionString "apiextensions.crossplane.io/v2"No description provided
scopeString "Namespaced"No description provided
deletePolicyString "Foreground"No description provided
singularNameString -No description provided
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 modify-definition --xrd file:path
func (m *MyModule) Example(xrd *dagger.File) *dagger.File  {
	return dag.
			Crossplane().
			ModifyDefinition(xrd)
}
@function
def example(xrd: dagger.File) -> dagger.File:
	return (
		dag.crossplane()
		.modify_definition(xrd)
	)
@func()
example(xrd: File): File {
	return dag
		.crossplane()
		.modifyDefinition(xrd)
}

package() 🔗

Package Crossplane Package

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
srcDirectory !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 package --src DIR_PATH
func (m *MyModule) Example(src *dagger.Directory) *dagger.Directory  {
	return dag.
			Crossplane().
			Package(src)
}
@function
def example(src: dagger.Directory) -> dagger.Directory:
	return (
		dag.crossplane()
		.package(src)
	)
@func()
example(src: Directory): Directory {
	return dag
		.crossplane()
		.package(src)
}

push() 🔗

Push Crossplane Package

Return Type
String !
Arguments
NameTypeDefault ValueDescription
srcDirectory !-No description provided
registryString !-No description provided
usernameString !-No description provided
passwordSecret !-No description provided
destinationString !-No description provided
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 push --src DIR_PATH --registry string --username string --password env:MYSECRET --destination string
func (m *MyModule) Example(ctx context.Context, src *dagger.Directory, registry string, username string, password *dagger.Secret, destination string) string  {
	return dag.
			Crossplane().
			Push(ctx, src, registry, username, password, destination)
}
@function
async def example(src: dagger.Directory, registry: str, username: str, password: dagger.Secret, destination: str) -> str:
	return await (
		dag.crossplane()
		.push(src, registry, username, password, destination)
	)
@func()
async example(src: Directory, registry: string, username: string, password: Secret, destination: string): Promise<string> {
	return dag
		.crossplane()
		.push(src, registry, username, password, destination)
}

verify() 🔗

Verify performs offline, container-pinned verification of a Crossplane Configuration package. It runs four checks per example XR:

  1. crossplane.yaml correctness (xpkg build, once per Configuration)
  2. Layer 1 — each examples/xr*.yaml validated against the Configuration’s own XRD
  3. Layer 2 — each rendered kubernetes.m.crossplane.io Object validated against the provider-kubernetes CRD schema
  4. Layer 3 — each embedded spec.forProvider.manifest validated against the built-in Kubernetes schemas (kubeconform default)

crossplane render is run inside the container via a docker-in-docker sidecar, so function images are pulled and executed without needing a Docker socket on the host.

Return Type
String !
Arguments
NameTypeDefault ValueDescription
srcDirectory !-a single Configuration directory (containing crossplane.yaml, apis/, examples/)
providerKubernetesVersionString "v1.2.0"provider-kubernetes version whose CRD schemas are used for Layer 2. Should match the dependsOn entry in crossplane.yaml.
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
 verify --src DIR_PATH
func (m *MyModule) Example(ctx context.Context, src *dagger.Directory) string  {
	return dag.
			Crossplane().
			Verify(ctx, src)
}
@function
async def example(src: dagger.Directory) -> str:
	return await (
		dag.crossplane()
		.verify(src)
	)
@func()
async example(src: Directory): Promise<string> {
	return dag
		.crossplane()
		.verify(src)
}