crossplane
Copyright © 2024 Patrick Hermann patrick.hermann@sva.de
Installation
dagger install github.com/stuttgart-things/dagger/crossplane@v0.115.0Entrypoint
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-containerfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| xplaneContainer | Container | - | xplane container It need contain xplane |
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
constructorfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| kclSchema | File ! | - | No description provided |
| cliFlags | String | - | 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:pathfunc (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-containerfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| packageName | String ! | - | No description provided |
| kind | String ! | - | No description provided |
| namespace | String ! | - | No description provided |
| dataYaml | String ! | - | 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 stringfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| name | String ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
init-package --name stringfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| xrd | File ! | - | No description provided |
| apiVersion | String | "apiextensions.crossplane.io/v2" | No description provided |
| scope | String | "Namespaced" | No description provided |
| deletePolicy | String | "Foreground" | No description provided |
| singularName | String | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
modify-definition --xrd file:pathfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | No description provided |
Example
dagger -m github.com/stuttgart-things/dagger/crossplane@a6c42d0fb9a637d41f750b7b3b664e9f715c27a3 call \
package --src DIR_PATHfunc (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
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | No description provided |
| registry | String ! | - | No description provided |
| username | String ! | - | No description provided |
| password | Secret ! | - | No description provided |
| destination | String ! | - | 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 stringfunc (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:
- crossplane.yaml correctness (xpkg build, once per Configuration)
- Layer 1 — each examples/xr*.yaml validated against the Configuration’s own XRD
- Layer 2 — each rendered kubernetes.m.crossplane.io Object validated against the provider-kubernetes CRD schema
- Layer 3 — each embedded
spec.forProvider.manifestvalidated 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
| Name | Type | Default Value | Description |
|---|---|---|---|
| src | Directory ! | - | a single Configuration directory (containing crossplane.yaml, apis/, examples/) |
| providerKubernetesVersion | String | "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_PATHfunc (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)
}