From 10a66188e3ca7689ddee3b1f430d8e923f3251f2 Mon Sep 17 00:00:00 2001 From: Joel Wetzell Date: Fri, 13 Mar 2026 20:51:26 -0500 Subject: [PATCH] add scripts and config for a local kind cluster --- README.md | 22 ++++++++++++++++++++++ config/samples/ontime_v1_stage.yaml | 4 ++++ kind/config.yaml | 7 +++++++ kind/create.sh | 12 ++++++++++++ kind/delete.sh | 1 + kind/manifests/gateway.yaml | 14 ++++++++++++++ 6 files changed, 60 insertions(+) create mode 100644 README.md create mode 100644 kind/config.yaml create mode 100755 kind/create.sh create mode 100755 kind/delete.sh create mode 100644 kind/manifests/gateway.yaml diff --git a/README.md b/README.md new file mode 100644 index 0000000..68dc432 --- /dev/null +++ b/README.md @@ -0,0 +1,22 @@ +# Local Testing + +## Kind +To create a local Kubernetes cluster using [Kind](https://kind.sigs.k8s.io/) you will need the following installed: +- [Docker](https://docs.docker.com/get-docker/) or any container runtime probably +- [Kind](https://kind.sigs.k8s.io/docs/user/quick-start/#installation) +- [cloud-provider-kind](https://github.com/kubernetes-sigs/cloud-provider-kind) +- [kubectl](https://kubernetes.io/docs/tasks/tools/) + +Scripts: +- `kind/create.sh` + - creates a Kind cluster and sets up the gateway + - build and deploy ontime-operator into cluster + - deploy the sample stage + - start `cloud-provider-kind` +- `kind/delete.sh` - deletes the Kind cluster + +To get the gateway IP address run `kubectl get gateway -n kube-system` the output will look something like this: +``` +NAMESPACE NAME CLASS ADDRESS PROGRAMMED AGE +kube-system gateway cloud-provider-kind 172.18.0.5 True 23s +``` \ No newline at end of file diff --git a/config/samples/ontime_v1_stage.yaml b/config/samples/ontime_v1_stage.yaml index 89287df..79a242f 100644 --- a/config/samples/ontime_v1_stage.yaml +++ b/config/samples/ontime_v1_stage.yaml @@ -3,6 +3,10 @@ kind: Stage metadata: name: stage-sample spec: + gateway: + name: gateway + namespace: kube-system + sectionName: default ontime: timezone: "America/Chicago" prefix: "test" diff --git a/kind/config.yaml b/kind/config.yaml new file mode 100644 index 0000000..c4331d2 --- /dev/null +++ b/kind/config.yaml @@ -0,0 +1,7 @@ +kind: Cluster +apiVersion: kind.x-k8s.io/v1alpha4 +name: ontime-operator +nodes: +- role: control-plane +- role: worker +- role: worker \ No newline at end of file diff --git a/kind/create.sh b/kind/create.sh new file mode 100755 index 0000000..6849c5b --- /dev/null +++ b/kind/create.sh @@ -0,0 +1,12 @@ +SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd) +ROOT=$(realpath "$SCRIPT_DIR/..") +set -e +kind create cluster --config "$SCRIPT_DIR/config.yaml" +kubectl apply --server-side -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.4.0/standard-install.yaml +kubectl apply -f "$SCRIPT_DIR/manifests" +export IMG=ontime-operator:dev +make -C "$ROOT" docker-build +kind load docker-image --name ontime-operator "${IMG}" +make -C "$ROOT" deploy +kubectl apply -k "$ROOT/config/samples" +sudo cloud-provider-kind diff --git a/kind/delete.sh b/kind/delete.sh new file mode 100755 index 0000000..e79b2e5 --- /dev/null +++ b/kind/delete.sh @@ -0,0 +1 @@ +kind delete cluster --name ontime-operator \ No newline at end of file diff --git a/kind/manifests/gateway.yaml b/kind/manifests/gateway.yaml new file mode 100644 index 0000000..4220c03 --- /dev/null +++ b/kind/manifests/gateway.yaml @@ -0,0 +1,14 @@ +apiVersion: gateway.networking.k8s.io/v1 +kind: Gateway +metadata: + name: gateway + namespace: kube-system +spec: + gatewayClassName: cloud-provider-kind + listeners: + - name: default + port: 80 + protocol: HTTP + allowedRoutes: + namespaces: + from: All \ No newline at end of file