https://github.com/hops-ops/gateway-api-stack
Single-claim install of Kubernetes Gateway API CRDs (gateway.networking.k8s.io) onto a target cluster as a Helm release. Cloud-neutral, prereq for any Gateway API based controller or integration.
https://github.com/hops-ops/gateway-api-stack
Last synced: about 1 month ago
JSON representation
Single-claim install of Kubernetes Gateway API CRDs (gateway.networking.k8s.io) onto a target cluster as a Helm release. Cloud-neutral, prereq for any Gateway API based controller or integration.
- Host: GitHub
- URL: https://github.com/hops-ops/gateway-api-stack
- Owner: hops-ops
- Created: 2026-05-02T21:12:52.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2026-05-22T18:05:15.000Z (2 months ago)
- Last Synced: 2026-05-22T21:49:56.548Z (2 months ago)
- Language: KCL
- Size: 19.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# gateway-api-stack
Single-claim install of the [Kubernetes Gateway API CRDs](https://gateway-api.sigs.k8s.io/) (`gateway.networking.k8s.io`) onto a target Kubernetes cluster.
Cloud-neutral, controller-neutral. Provides the prerequisite CRDs for any Gateway API based controller (Istio Ambient, Envoy Gateway, Cilium Gateway, kgateway) and integrations that consume HTTPRoutes (Knative `net-gateway-api`, ExternalDNS `gateway-httproute` source, cert-manager Gateway issuance).
## Why a separate stack
Gateway API CRDs are a hard prerequisite that cuts across multiple platform stacks. Bundling them into istio-stack would couple every consumer to that stack's lifecycle; installing them by hand makes upgrades easy to forget. A small dedicated stack keeps the prereq explicit and version-pinned in one place.
## Usage
```yaml
apiVersion: hops.ops.com.ai/v1alpha1
kind: GatewayAPIStack
metadata:
name: gateway-api
namespace: default
spec:
clusterName: my-cluster
```
This composes a single Helm release of [`wiremind/gateway-api-crds`](https://artifacthub.io/packages/helm/wiremind/gateway-api-crds), a community-maintained wrapper around the upstream CRD YAML from [`kubernetes-sigs/gateway-api`](https://github.com/kubernetes-sigs/gateway-api).
The chart's `appVersion` tracks the upstream Gateway API release. Bump `chartVersion` on the XR to upgrade.
## Spec Reference
| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `clusterName` | string | _required_ | Target cluster name; default for `helmProviderConfigRef.name` |
| `namespace` | string | `gateway-api` | Namespace for the Helm release |
| `releaseName` | string | `gateway-api-crds` | Helm release name |
| `chartVersion` | string | `1.5.1` | wiremind/gateway-api-crds chart version (tracks upstream Gateway API) |
| `helmProviderConfigRef.name` | string | `clusterName` | Helm ProviderConfig |
| `helmProviderConfigRef.kind` | enum | `ProviderConfig` | `ProviderConfig` or `ClusterProviderConfig` |
| `values` | object | — | Helm values merged with chart defaults |
| `overrideAllValues` | object | — | Helm values that replace all defaults |
| `managementPolicies` | string[] | `["*"]` | Crossplane management policies |
| `labels` | object | — | Custom labels merged with defaults |
## Composed Resources
| Resource | Kind |
|---|---|
| `` | `helm.m.crossplane.io/Release` |
## Consumed By
- [`istio-stack`](https://github.com/hops-ops/istio-stack) — `Gateway` resource attached to the istio ambient `GatewayClass`
- [`knative-stack`](https://github.com/hops-ops/knative-stack) — emits `HTTPRoute` resources via `net-gateway-api`
- [`cloudflare-dns-stack`](https://github.com/hops-ops/cloudflare-dns-stack) — ExternalDNS `gateway-httproute` source
## Dependencies
| Kind | Package | Version |
|---|---|---|
| Function | `crossplane-contrib/function-auto-ready` | `>=v0.6.3` |
| Provider | `crossplane-contrib/provider-helm` | `>=v1` |
## Development
```bash
make render # Render all examples
make validate # Validate against Crossplane schemas
make test # Run KCL unit tests
make e2e # Run E2E test on a kind cluster
make build # Build the package
```
## License
Apache-2.0