diff --git a/Makefile b/Makefile index 9dfb6e14..75f0ffd2 100644 --- a/Makefile +++ b/Makefile @@ -15,3 +15,30 @@ proto-format: .PHONY: proto-lint proto-lint: docker run --volume "$(PWD):/workspace" --workdir /workspace bufbuild/buf lint + +# Local Dev +.PHONY: kind-setup +kind-setup: + kind create cluster --name wasmcloud --config "kind-config.yaml" + +.PHONY: kind-nuke +kind-nuke: + kind delete cluster --name wasmcloud + +# Helm +.PHONY: helm-build +helm-build: + helm dependency build charts/runtime-operator + +.PHONY: helm-render +helm-render: + helm template -n example-ns example-name charts/runtime-operator + +.PHONY: helm-install +helm-install: + helm upgrade --install --create-namespace -n wasmcloud-system -f charts/runtime-operator/values.local.yaml operator-dev charts/runtime-operator + +.PHONY: helm-uninstall +helm-uninstall: + helm delete -n wasmcloud-system --ignore-not-found --cascade foreground operator-dev + diff --git a/README.md b/README.md index 852af60e..7e7cc190 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,38 @@ wash is built with the following key principles: - **Extensible**: Plugin system allows integration with different platforms and workflows - **Developer Experience**: Hot-reload development loops and comprehensive tooling +## Wash & Kubernetes + +Start kind cluster: + +```sh +make kind-setup +``` + +Install chart with pre-configured values: + +```sh +make helm-install +``` + +Wait for all pods to come online. + +Check if hosts registered correctly: + +```sh +❯ kubectl get host +NAME HOSTID HOSTGROUP READY AGE +near-jam-0148 a67300ea-558b-4bb7-b126-253e66d997ae public-ingress True 2m10s +nonchalant-crown-3127 8cf2c415-409f-4dd8-b334-8a9dbb2d4aa4 default True 2m10s +obscene-thunder-6047 2f5aa990-c06a-4d1c-9dcf-edc4a8535fd5 private-ingress True 2m9s +``` + +- `public-ingress`: Hostgroup with HTTP enabled and bound to localhost port 80, simulating a load-balancer +- `private-ingress`: Hostgroup with HTTP enabled and cluster-only access, simulating an internal load-balancer ( Kubernetes Service Name `hostgroup-private-ingress` ) +- `default`: Hostgroup with no incoming HTTP, for `wasmcloud:messaging` handlers & Services + +In this setup, HTTP workloads usually go to `public-ingress`. + ## Documentation - [WebAssembly Component Model](https://component-model.bytecodealliance.org/) - Learn about the component model diff --git a/runtime-operator/charts/runtime-operator/.helmignore b/charts/runtime-operator/.helmignore similarity index 100% rename from runtime-operator/charts/runtime-operator/.helmignore rename to charts/runtime-operator/.helmignore diff --git a/runtime-operator/charts/runtime-operator/Chart.lock b/charts/runtime-operator/Chart.lock similarity index 100% rename from runtime-operator/charts/runtime-operator/Chart.lock rename to charts/runtime-operator/Chart.lock diff --git a/runtime-operator/charts/runtime-operator/Chart.yaml b/charts/runtime-operator/Chart.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/Chart.yaml rename to charts/runtime-operator/Chart.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/NOTES.txt b/charts/runtime-operator/templates/NOTES.txt similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/NOTES.txt rename to charts/runtime-operator/templates/NOTES.txt diff --git a/runtime-operator/charts/runtime-operator/templates/_helpers.tpl b/charts/runtime-operator/templates/_helpers.tpl similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/_helpers.tpl rename to charts/runtime-operator/templates/_helpers.tpl diff --git a/runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_artifacts.yaml b/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_artifacts.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_artifacts.yaml rename to charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_artifacts.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_hosts.yaml b/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_hosts.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_hosts.yaml rename to charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_hosts.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloaddeployments.yaml b/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloaddeployments.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloaddeployments.yaml rename to charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloaddeployments.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloadreplicasets.yaml b/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloadreplicasets.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloadreplicasets.yaml rename to charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloadreplicasets.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloads.yaml b/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloads.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloads.yaml rename to charts/runtime-operator/templates/crds/runtime.wasmcloud.dev_workloads.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/nats/deployment.yaml b/charts/runtime-operator/templates/nats/deployment.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/nats/deployment.yaml rename to charts/runtime-operator/templates/nats/deployment.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/nats/service.yaml b/charts/runtime-operator/templates/nats/service.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/nats/service.yaml rename to charts/runtime-operator/templates/nats/service.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/nats/serviceaccount.yaml b/charts/runtime-operator/templates/nats/serviceaccount.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/nats/serviceaccount.yaml rename to charts/runtime-operator/templates/nats/serviceaccount.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/clusterrole-metrics.yaml b/charts/runtime-operator/templates/operator/clusterrole-metrics.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/clusterrole-metrics.yaml rename to charts/runtime-operator/templates/operator/clusterrole-metrics.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/clusterrole.yaml b/charts/runtime-operator/templates/operator/clusterrole.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/clusterrole.yaml rename to charts/runtime-operator/templates/operator/clusterrole.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/clusterrolebinding-metrics.yaml b/charts/runtime-operator/templates/operator/clusterrolebinding-metrics.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/clusterrolebinding-metrics.yaml rename to charts/runtime-operator/templates/operator/clusterrolebinding-metrics.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/clusterrolebinding.yaml b/charts/runtime-operator/templates/operator/clusterrolebinding.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/clusterrolebinding.yaml rename to charts/runtime-operator/templates/operator/clusterrolebinding.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/deployment.yaml b/charts/runtime-operator/templates/operator/deployment.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/deployment.yaml rename to charts/runtime-operator/templates/operator/deployment.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/role.yaml b/charts/runtime-operator/templates/operator/role.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/role.yaml rename to charts/runtime-operator/templates/operator/role.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/rolebinding.yaml b/charts/runtime-operator/templates/operator/rolebinding.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/rolebinding.yaml rename to charts/runtime-operator/templates/operator/rolebinding.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/service.yaml b/charts/runtime-operator/templates/operator/service.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/service.yaml rename to charts/runtime-operator/templates/operator/service.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/operator/serviceaccount.yaml b/charts/runtime-operator/templates/operator/serviceaccount.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/operator/serviceaccount.yaml rename to charts/runtime-operator/templates/operator/serviceaccount.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/runtime/deployment.yaml b/charts/runtime-operator/templates/runtime/deployment.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/runtime/deployment.yaml rename to charts/runtime-operator/templates/runtime/deployment.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/runtime/service.yaml b/charts/runtime-operator/templates/runtime/service.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/runtime/service.yaml rename to charts/runtime-operator/templates/runtime/service.yaml diff --git a/runtime-operator/charts/runtime-operator/templates/runtime/serviceaccount.yaml b/charts/runtime-operator/templates/runtime/serviceaccount.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/templates/runtime/serviceaccount.yaml rename to charts/runtime-operator/templates/runtime/serviceaccount.yaml diff --git a/runtime-operator/charts/runtime-operator/values.local.yaml b/charts/runtime-operator/values.local.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/values.local.yaml rename to charts/runtime-operator/values.local.yaml diff --git a/runtime-operator/charts/runtime-operator/values.yaml b/charts/runtime-operator/values.yaml similarity index 100% rename from runtime-operator/charts/runtime-operator/values.yaml rename to charts/runtime-operator/values.yaml diff --git a/runtime-operator/kind-config.yaml b/kind-config.yaml similarity index 100% rename from runtime-operator/kind-config.yaml rename to kind-config.yaml diff --git a/runtime-operator/Makefile b/runtime-operator/Makefile index fd99338d..c71cf0b7 100644 --- a/runtime-operator/Makefile +++ b/runtime-operator/Makefile @@ -70,7 +70,7 @@ test: manifests generate fmt vet envtest ## Run tests. # - CERT_MANAGER_INSTALL_SKIP=true .PHONY: test-e2e test-e2e: manifests generate fmt vet ## Run the e2e tests. Expected an isolated environment using Kind. - @go tool kind get clusters | grep -q 'kind' || { \ + @kind get clusters | grep -q 'kind' || { \ echo "No Kind cluster is running. Please start a Kind cluster before running the e2e tests."; \ exit 1; \ } @@ -96,7 +96,7 @@ run: manifests generate fmt vet ## Run a controller from your host. .PHONY: devlog devlog: - $(MAKE) run 2>&1 | jq -R -r ". as \$$line | try fromjson catch \$$line" + go tool air 2>&1 | jq -R -r ". as \$$line | try fromjson catch \$$line" .PHONY: runtime-operator runtime-operator: @@ -216,28 +216,3 @@ mv $(1) $(1)-$(3) ;\ ln -sf $(1)-$(3) $(1) endef -# Helm -.PHONY: helm-build -helm-build: - helm dependency build charts/runtime-operator - -.PHONY: helm-render -helm-render: - helm template -n example-ns example-name charts/runtime-operator - -.PHONY: helm-install -helm-install: - helm upgrade --install --create-namespace -n wasmcloud-system -f charts/runtime-operator/values.local.yaml operator-dev charts/runtime-operator - -.PHONY: helm-uninstall -helm-uninstall: - helm delete -n wasmcloud-system --ignore-not-found --cascade foreground operator-dev - -# Local Dev -.PHONY: kind-setup -kind-setup: - go tool kind create cluster --name wasmcloud --config "kind-config.yaml" - -.PHONY: kind-nuke -kind-nuke: - go tool kind delete cluster --name wasmcloud diff --git a/runtime-operator/README.md b/runtime-operator/README.md index 8bb9d335..602fbac6 100644 --- a/runtime-operator/README.md +++ b/runtime-operator/README.md @@ -1,134 +1,73 @@ -### To Deploy locally +# Runtime Operator -Start kind cluster +## Development -```sh -go tool kind create cluster -``` +You will need a local Kind cluster, NATS, and a Wash host. -**Install the CRDs into the cluster:** +For NATS, use: ```sh -make install +docker run --rm --name wasmcloud-nats -p 4222:4222 nats -js ``` -**Run the Manager:** +For Wash Host, use: ```sh -make devlog +wash host --http-addr 127.0.0.1:8000 ``` -You can apply the samples (examples) from the config/sample: - -```sh -kubectl apply -k config/samples/dev -``` - -### To Deploy on remote cluster - -**Build and push your image to the location specified by `IMG`:** +or from the top git directory: ```sh -make docker-build docker-push IMG=/operator:tag +cargo run -- host --http-addr 127.0.0.1:8000 ``` -**NOTE:** This image ought to be published in the personal registry you specified. -And it is required to have access to pull the image from the working environment. -Make sure you have the proper permission to the registry if the above commands don’t work. +For local kind cluster, refer to [wash/README.md](../README.md). -**Install the CRDs into the cluster:** +Install the CRDs into the cluster: ```sh make install ``` -**Deploy the Manager to the cluster with the image specified by `IMG`:** +Run the Builder / Watcher: ```sh -make deploy IMG=/operator:tag +make devlog ``` -> **NOTE**: If you encounter RBAC errors, you may need to grant yourself cluster-admin -> privileges or be logged in as admin. - -### To Uninstall - -**Delete the APIs(CRDs) from the cluster:** +You can apply development samples from the config/sample: ```sh -make uninstall +kubectl apply -f config/samples ``` -**UnDeploy the controller from the cluster:** +Verify the Wash Host registered correctly with: ```sh -make undeploy +kubectl get host ``` -Or ...... delete the kind cluster. +Example: -```sh -kind delete cluster ``` - -## Project Distribution - -Following are the steps to build the installer and distribute this project to users. - -1. Build the installer for the image built and published in the registry: - -```sh -make build-installer IMG=/operator:tag +❯ kubectl get host +NAME HOSTID HOSTGROUP READY AGE +exotic-toes-5866 14b0a1df-3f91-441c-b304-2aa56e9bef6e default True 52s ``` -NOTE: The makefile target mentioned above generates an 'install.yaml' -file in the dist directory. This file contains all the resources built -with Kustomize, which are necessary to install this project without -its dependencies. - -2. Using the installer +If you applied the samples, check if they deployed correctly: -Users can just run kubectl apply -f to install the project, i.e.: - -```sh -kubectl apply -f https://raw.githubusercontent.com//operator//dist/install.yaml ``` +❯ kubectl get workloaddeployment +NAME REPLICAS READY +blobby 1 True +hello 1 True -# FAQ +❯ curl -i hello.localhost.direct:8000 +HTTP/1.1 200 OK +transfer-encoding: chunked +date: Tue, 25 Nov 2025 15:30:32 GMT -## How to use Private Registry Image Pulls? - -Create a secret named `ghcr`: - -```sh -kubectl create secret docker-registry ghcr --docker-server=https://ghcr.io --docker-username= --docker-password= --docker-email= +Hello from Rust! ``` - -then use it as imagePullSecret. - -## What permissions does the Operator need on Kubernetes Core Resources? - -Full RBAC definition [can be found here](./config/rbac/role.yaml) - -### CRUD Cluster Wide ( Create Update Delete on any deployable namespace ) - -- apps - - Deployment - - Statefulset -- core - - Service - - ServiceAccount - - ConfigMap - - Secret - - PersistentVolumeClaim - - Event - -### CRUD Operator namespace ( Create Update Delete specifically on `wasmcloud-system` ) - -- coordination.k8s.io - - Lease - -### Create Only - -- authentication.k8s.io - - SubjectAccessReview diff --git a/runtime-operator/config/deployment-structure-example/component.yaml b/runtime-operator/config/deployment-structure-example/component.yaml deleted file mode 100644 index 5a64cf18..00000000 --- a/runtime-operator/config/deployment-structure-example/component.yaml +++ /dev/null @@ -1,24 +0,0 @@ -apiVersion: runtime.wasmcloud.dev/v1alpha1 -kind: Component -metadata: - name: example -spec: - cluster: - name: example - namespace: default - image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0 - concurrency: 100 - replicas: 1 - exports: - - wit: - namespace: wasi - package: http - interfaces: - - incoming-handler - target: - provider: - name: http-server - namespace: default - configFrom: - - name: link-config - namespace: default diff --git a/runtime-operator/config/deployment-structure-example/link-config.yaml b/runtime-operator/config/deployment-structure-example/link-config.yaml deleted file mode 100644 index f97f3c6c..00000000 --- a/runtime-operator/config/deployment-structure-example/link-config.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: runtime.wasmcloud.dev/v1alpha1 -kind: Config -metadata: - name: link-config -spec: - cluster: - name: example - namespace: default - config: - - name: address - value: "0.0.0.0:8080" diff --git a/runtime-operator/config/deployment-structure-example/provider.yaml b/runtime-operator/config/deployment-structure-example/provider.yaml deleted file mode 100644 index 430fe830..00000000 --- a/runtime-operator/config/deployment-structure-example/provider.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: runtime.wasmcloud.dev/v1alpha1 -kind: Provider -metadata: - name: http-server -spec: - cluster: - name: example - namespace: default - image: ghcr.io/wasmcloud/http-server:0.23.1 - replicas: 1 diff --git a/runtime-operator/config/samples/blobby.yaml b/runtime-operator/config/samples/blobby.yaml index 7b1ad680..d53c6cca 100644 --- a/runtime-operator/config/samples/blobby.yaml +++ b/runtime-operator/config/samples/blobby.yaml @@ -12,7 +12,8 @@ spec: interfaces: - incoming-handler config: - host: localhost + # public dns alias for 127.0.0.1 + host: blobby.localhost.direct:8000 - namespace: wasi package: blobstore version: 0.2.0-draft diff --git a/runtime-operator/config/samples/deployment.yaml b/runtime-operator/config/samples/deployment.yaml index f6f3dbea..c887b7f6 100644 --- a/runtime-operator/config/samples/deployment.yaml +++ b/runtime-operator/config/samples/deployment.yaml @@ -6,15 +6,14 @@ spec: replicas: 1 template: spec: - hostSelector: - hostgroup: public-ingress hostInterfaces: - namespace: wasi package: http interfaces: - incoming-handler config: - host: localhost + # public dns alias for 127.0.0.1 + host: hello.localhost.direct:8000 components: - name: hello-world image: ghcr.io/wasmcloud/components/http-hello-world-rust:0.1.0 diff --git a/runtime-operator/config/samples/service.yaml b/runtime-operator/config/samples/service.yaml deleted file mode 100644 index f3a78c4e..00000000 --- a/runtime-operator/config/samples/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: runtime.wasmcloud.dev/v1alpha1 -kind: WorkloadDeployment -metadata: - name: cron -spec: - replicas: 1 - template: - spec: - hostSelector: - hostgroup: default - components: - - name: stateless - image: - service: - image: diff --git a/runtime-operator/go.mod b/runtime-operator/go.mod index c1b07106..b02f9753 100644 --- a/runtime-operator/go.mod +++ b/runtime-operator/go.mod @@ -6,7 +6,6 @@ tool ( github.com/air-verse/air github.com/fgrosse/prox/cmd/prox github.com/flowerinthenight/kubepfm - sigs.k8s.io/kind ) require ( @@ -28,10 +27,8 @@ require ( ) require ( - al.essio.dev/pkg/shellescape v1.5.1 // indirect cel.dev/expr v0.24.0 // indirect dario.cat/mergo v1.0.1 // indirect - github.com/BurntSushi/toml v1.4.0 // indirect github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/air-verse/air v1.61.7 // indirect github.com/antithesishq/antithesis-sdk-go v0.4.3-default-no-op // indirect @@ -71,7 +68,6 @@ require ( github.com/google/gnostic-models v0.7.0 // indirect github.com/google/go-tpm v0.9.6 // indirect github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 // indirect - github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect @@ -152,7 +148,6 @@ require ( k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect - sigs.k8s.io/kind v0.27.0 // indirect sigs.k8s.io/randfill v1.0.0 // indirect sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect sigs.k8s.io/yaml v1.6.0 // indirect diff --git a/runtime-operator/go.sum b/runtime-operator/go.sum index cea97aae..e4610f23 100644 --- a/runtime-operator/go.sum +++ b/runtime-operator/go.sum @@ -1,5 +1,3 @@ -al.essio.dev/pkg/shellescape v1.5.1 h1:86HrALUujYS/h+GtqoB26SBEdkWfmMI6FubjXlsXyho= -al.essio.dev/pkg/shellescape v1.5.1/go.mod h1:6sIqp7X2P6mThCQ7twERpZTuigpr6KbZWtls1U8I890= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -10,8 +8,6 @@ dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69 h1:+tu3HOoMXB7RXEINRVIpxJCT+KdYiI7LAEAUrOw3dIU= github.com/BurntSushi/locker v0.0.0-20171006230638-a6e239ea1c69/go.mod h1:L1AbZdiDllfyYH5l5OkAaZtk7VkWe89bPJFmnDBNHxg= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= -github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/air-verse/air v1.61.7 h1:MtOZs6wYoYYXm+S4e+ORjkq9BjvyEamKJsHcvko8LrQ= @@ -196,10 +192,6 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6 h1:EEHtgt9IwisQ2AZ4pIsMjahcegHh6rmhqxzIRQIyepY= github.com/google/pprof v0.0.0-20250820193118-f64d9cf942d6/go.mod h1:I6V7YzU0XDpsHqbsyrghnFZLO1gwK6NPTNvmetQIk9U= -github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2 h1:SJ+NtwL6QaZ21U+IrK7d0gGgpjGGvd2kz+FzTHVzdqI= -github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC9t8wNnpPdctvtSUOPUUg4SHeE6vR1Ir2hmg= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= @@ -569,8 +561,6 @@ sigs.k8s.io/controller-runtime v0.22.3 h1:I7mfqz/a/WdmDCEnXmSPm8/b/yRTy6JsKKENTi sigs.k8s.io/controller-runtime v0.22.3/go.mod h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8= sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE= sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg= -sigs.k8s.io/kind v0.27.0 h1:PQ3f0iAWNIj66LYkZ1ivhEg/+Zb6UPMbO+qVei/INZA= -sigs.k8s.io/kind v0.27.0/go.mod h1:RZVFmy6qcwlSWwp6xeIUv7kXCPF3i8MXsEXxW/J+gJY= sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=