Installation
The Goma Gateway Operator ships as a single installable manifest containing the CRDs, RBAC, and the controller deployment. The operator runs in its own namespace (goma-operator-system) and watches Gateway, Route, and Middleware resources cluster-wide.
Prerequisites
- Kubernetes ≥ 1.25
kubectlconfigured against the target cluster- Cluster-admin privileges (required to install CRDs and ClusterRoles)
- (Optional)
metrics-serverif you plan to useautoScaling
Install the operator
Apply the bundled installer:
kubectl apply -f https://raw.githubusercontent.com/jkaninda/goma-operator/main/dist/install.yaml
This creates:
- The
goma-operator-systemnamespace - The
Gateway,Route, andMiddlewareCRDs (group:gateway.jkaninda.dev, version:v1alpha1) - The controller
Deployment,ServiceAccount, and RBAC bindings - A metrics
Servicefor the controller
Wait for the controller to become ready:
kubectl -n goma-operator-system rollout status deploy/goma-operator-controller-manager
Verify the CRDs are installed:
kubectl get crds | grep gateway.jkaninda.dev
Expected output:
gateways.gateway.jkaninda.dev
middlewares.gateway.jkaninda.dev
routes.gateway.jkaninda.dev
Pin a specific version
Replace main with a release tag for reproducible installs:
kubectl apply -f https://raw.githubusercontent.com/jkaninda/goma-operator/v0.1.0/dist/install.yaml
Install via Kustomize / GitOps
Reference the upstream dist/install.yaml from your overlay, or vendor it into your repository for ArgoCD / Flux:
# kustomization.yaml
resources:
- https://raw.githubusercontent.com/jkaninda/goma-operator/main/dist/install.yaml
Resources
The operator reconciles three CRDs. They follow this logical ordering — apply the Gateway first, then the Middlewares it references, then the Routes that bind them together:
- Gateway — the platform-level configuration that creates the gateway
Deployment,Service, andConfigMap. - Middleware — reusable request/response processors (auth, rate limiting, headers, etc.).
- Route — the actual routing rules that attach to a
Gatewayand applyMiddlewares.
The
goma-k8s-providersidecar (enabled by default) hot-reloadsRouteandMiddlewarechanges into the gateway without pod restarts. You may apply resources in any order and the operator will reconcile them.
What’s next
- Apply a minimal Gateway from the Gateway documentation.
- Browse the operator’s runnable examples for ready-to-use manifests covering ACME, autoscaling, JWT, rate limiting, and more.