Wanaku Operator
Overview
The Wanaku Operator manages these custom resource definitions (CRDs):
- WanakuRouter — deploys the Wanaku MCP engine, an optional barn-backend for service catalog persistence, and an optional oauth2-proxy for authentication.
- WanakuServiceCatalog — deploys packaged service catalogs (Camel routes + Wanaku rules) to a router with barn-backend enabled.
The router reconciler provisions Deployments, Services, persistent storage, and external access. The service catalog reconciler reads catalog data from ConfigMaps and deploys it through the barn-backend API.
When to use this skill
Use it when an agent needs to install the operator, deploy a router or service catalogs to a cluster, configure authentication, or troubleshoot Wanaku workloads on Kubernetes.
Prerequisites
- Kubernetes 1.27+ or OpenShift 4.12+
kubectloroc, and Helm 3.x- An OIDC provider such as Keycloak when authentication is enabled. The minimal router example below leaves authentication disabled for development.
Install the operator
kubectl create namespace wanaku
helm install wanaku-operator ./apps/wanaku-operator/deploy/helm/wanaku-operator \
--namespace wanakuBy default the operator watches only its own namespace. To watch all namespaces, set the controller namespace variables to JOSDK_ALL_NAMESPACES during the Helm install:
helm install wanaku-operator ./apps/wanaku-operator/deploy/helm/wanaku-operator \
--namespace wanaku \
--set app.envs.QUARKUS_OPERATOR_SDK_CONTROLLERS_WANAKU_ROUTER_NAMESPACES=JOSDK_ALL_NAMESPACES \
--set app.envs.QUARKUS_OPERATOR_SDK_CONTROLLERS_WANAKU_SERVICE_CATALOG_NAMESPACES=JOSDK_ALL_NAMESPACESVerify:
kubectl get pods -n wanaku
kubectl logs -n wanaku -l app.kubernetes.io/name=wanaku-operatorMinimal development router
# router.yaml
apiVersion: "wanaku.ai/v1alpha1"
kind: WanakuRouter
metadata:
name: wanaku-dev
spec:
praxis: {}Apply and wait for readiness:
kubectl apply -f router.yaml -n wanaku
kubectl wait wanakurouter/wanaku-dev -n wanaku --for=condition=Ready --timeout=120sFor authenticated deployments, configure spec.auth.enabled, issuerUrl, clientId, and secretName for oauth2-proxy. See the current router CRD schema for supported fields.
Router + service catalog
Enable barn-backend in router.yaml before deploying catalogs, then apply the router and wait for readiness as above:
apiVersion: "wanaku.ai/v1alpha1"
kind: WanakuRouter
metadata:
name: wanaku-dev
spec:
praxis: {}
router:
enabled: truePackage a catalog with the CLI, put it in a ConfigMap, then reference it. The ConfigMap, router, and catalog resource must be in the same namespace:
wanaku service package --path=employee-system -o employee-system.b64
kubectl create configmap employee-catalog-data --from-file=catalog.zip=employee-system.b64 -n wanaku# service-catalog.yaml
apiVersion: "wanaku.ai/v1alpha1"
kind: WanakuServiceCatalog
metadata:
name: my-catalogs
spec:
routerRef: wanaku-dev
catalogs:
- name: employee-system-v2
configMapRef: employee-catalog-datakubectl apply -f service-catalog.yaml -n wanaku
kubectl wait wanakuservicecatalog/my-catalogs -n wanaku --for=condition=Ready --timeout=120sOperating notes
- Configure router images, environment variables, and exposure using the current CRD schema.
- Reference an oauth2-proxy Secret through
spec.auth.secretNamefor authentication credentials. - Deployed catalogs can be inspected with
wanaku service catalog listand the admin UI. - The CLI itself can authenticate against the cluster router with
wanaku auth login --api-token <token>; point management commands at barn-backend with--host.
Checklist for agents
- Confirm the operator pod is running before applying CRDs (
kubectl get pods -n wanaku). - Create the
WanakuRouterfirst, wait forReady, then apply dependent catalogs. - Package catalogs with
wanaku service packagebefore creating their ConfigMaps. - Use
kubectl wait --for=condition=Readyon Wanaku resources instead of sleeping between steps. - Check
kubectl logs -n wanaku -l app.kubernetes.io/name=wanaku-operatorwhen resources do not converge.
References
- Operator guide — operator deployment and lifecycle background; consult the current CRD schema for fields
- Usage guide — installing and running Wanaku on OpenShift or Kubernetes
- Service catalogs skill — authoring and packaging catalogs