Dagger
Search

k3s

Runs a k3s server than can be accessed both locally and in your pipelines

Example
no available example in current language
// starts a k3s server and deploys a helm chart
func (m *Examples) K3S(ctx context.Context) (string, error) {
	k3s := dag.K3S("test")
	kServer := k3s.Server()

	kServer, err := kServer.Start(ctx)
	if err != nil {
		return "", err
	}

	ep, err := kServer.Endpoint(ctx, dagger.ServiceEndpointOpts{Port: 80, Scheme: "http"})
	if err != nil {
		return "", err
	}

	return dag.Container().From("alpine/helm").
		WithExec([]string{"apk", "add", "kubectl"}).
		WithEnvVariable("KUBECONFIG", "/.kube/config").
		WithFile("/.kube/config", k3s.Config()).
		WithExec([]string{"helm", "upgrade", "--install", "--force", "--wait", "--debug", "nginx", "oci://registry-1.docker.io/bitnamicharts/nginx"}).
		WithExec([]string{"sh", "-c", "while true; do curl -sS " + ep + " && exit 0 || sleep 1; done"}).Stdout(ctx)

}
no available example in current language
no available example in current language

Installation

dagger install github.com/mnencia/daggerverse/k3s@ee6e291dd6b82f9ca6696d242db0260b09de446d

Entrypoint

Return Type
K3S !
Arguments
NameTypeDefault ValueDescription
nameString !-No description provided
imageString "rancher/k3s:latest"No description provided
keepStateBoolean "false"keeps the state of the cluster (not recommended).
enableTraefikBoolean !"false"enable traefik to be installed (not recommended).
debugBoolean "false"enable debug logging from k3s server.
verbosityInteger "1"log verbosity level (0=minimal, 1=errors/warnings, 2=info).
Example
dagger -m github.com/mnencia/daggerverse/k3s@ee6e291dd6b82f9ca6696d242db0260b09de446d call \
 --name string --enable-traefik boolean
func (m *MyModule) Example(name string, enableTraefik bool) *dagger.K3S  {
	return dag.
			K3s(name, enableTraefik)
}
@function
def example(name: str, enable_traefik: bool, ) -> dagger.K3S:
	return (
		dag.k3s(name, enable_traefik)
	)
@func()
example(name: string, enableTraefik: boolean, ): K3S {
	return dag
		.k3s(name, enableTraefik)
}

Types

K3S 🔗

container() 🔗

Return Type
Container !
Example
dagger -m github.com/mnencia/daggerverse/k3s@ee6e291dd6b82f9ca6696d242db0260b09de446d call \
 --name string --enable-traefik boolean container
func (m *MyModule) Example(name string, enableTraefik bool) *dagger.Container  {
	return dag.
			K3s(name, enableTraefik).
			Container()
}
@function
def example(name: str, enable_traefik: bool, ) -> dagger.Container:
	return (
		dag.k3s(name, enable_traefik)
		.container()
	)
@func()
example(name: string, enableTraefik: boolean, ): Container {
	return dag
		.k3s(name, enableTraefik)
		.container()
}

server() 🔗

Returns a newly initialized kind cluster

Return Type
Service !
Example
no available example in current language
// starts a k3s server with a local registry and a pre-loaded alpine image
func (m *Examples) K3SServer(ctx context.Context) (*dagger.Service, error) {
	regSvc := dag.Container().From("registry:2.8").
		WithExposedPort(5000).AsService()

	_, err := dag.Container().From("quay.io/skopeo/stable").
		WithServiceBinding("registry", regSvc).
		WithEnvVariable("BUST", time.Now().String()).
		WithExec([]string{"copy", "--dest-tls-verify=false", "docker://docker.io/alpine:latest", "docker://registry:5000/alpine:latest"}, dagger.ContainerWithExecOpts{UseEntrypoint: true}).Sync(ctx)
	if err != nil {
		return nil, err
	}

	return dag.K3S("test").With(func(k *dagger.K3S) *dagger.K3S {
		return k.WithContainer(
			k.Container().
				WithEnvVariable("BUST", time.Now().String()).
				WithExec([]string{"sh", "-c", `
cat <<EOF > /etc/rancher/k3s/registries.yaml
mirrors:
  "registry:5000":
    endpoint:
      - "http://registry:5000"
EOF`}).
				WithServiceBinding("registry", regSvc),
		)
	}).Server(), nil
}
no available example in current language
no available example in current language

withContainer() 🔗

Returns a newly initialized kind cluster

Return Type
K3S !
Arguments
NameTypeDefault ValueDescription
cContainer !-No description provided
Example
dagger -m github.com/mnencia/daggerverse/k3s@ee6e291dd6b82f9ca6696d242db0260b09de446d call \
 --name string --enable-traefik boolean with-container --c IMAGE:TAG
func (m *MyModule) Example(name string, enableTraefik bool, c *dagger.Container) *dagger.K3S  {
	return dag.
			K3s(name, enableTraefik).
			WithContainer(c)
}
@function
def example(name: str, enable_traefik: bool, c: dagger.Container) -> dagger.K3S:
	return (
		dag.k3s(name, enable_traefik)
		.with_container(c)
	)
@func()
example(name: string, enableTraefik: boolean, c: Container): K3S {
	return dag
		.k3s(name, enableTraefik)
		.withContainer(c)
}

config() 🔗

returns the config file for the k3s cluster

Return Type
File !
Arguments
NameTypeDefault ValueDescription
localBoolean falseNo description provided
Example
dagger -m github.com/mnencia/daggerverse/k3s@ee6e291dd6b82f9ca6696d242db0260b09de446d call \
 --name string --enable-traefik boolean config
func (m *MyModule) Example(name string, enableTraefik bool) *dagger.File  {
	return dag.
			K3s(name, enableTraefik).
			Config()
}
@function
def example(name: str, enable_traefik: bool, ) -> dagger.File:
	return (
		dag.k3s(name, enable_traefik)
		.config()
	)
@func()
example(name: string, enableTraefik: boolean, ): File {
	return dag
		.k3s(name, enableTraefik)
		.config()
}

kubectl() 🔗

runs kubectl on the target k3s cluster

Return Type
Container !
Arguments
NameTypeDefault ValueDescription
argsString !-No description provided
Example
no available example in current language
// returns a kubectl container with the configured kube config context ready to run
// administrative commands
func (m *Examples) K3SKubectl(ctx context.Context, args string) *dagger.Container {
	return dag.K3S("test").Kubectl(args)
}
no available example in current language
no available example in current language

kns() 🔗

runs k9s on the target k3s cluster

Return Type
Container !
Example
dagger -m github.com/mnencia/daggerverse/k3s@ee6e291dd6b82f9ca6696d242db0260b09de446d call \
 --name string --enable-traefik boolean kns
func (m *MyModule) Example(name string, enableTraefik bool) *dagger.Container  {
	return dag.
			K3s(name, enableTraefik).
			Kns()
}
@function
def example(name: str, enable_traefik: bool, ) -> dagger.Container:
	return (
		dag.k3s(name, enable_traefik)
		.kns()
	)
@func()
example(name: string, enableTraefik: boolean, ): Container {
	return dag
		.k3s(name, enableTraefik)
		.kns()
}