Skip to content

Commit

Permalink
kind-create-cluster (#36)
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieu-benoit authored Jun 6, 2024
1 parent 3c1bfc0 commit 69a67b5
Show file tree
Hide file tree
Showing 4 changed files with 88 additions and 4 deletions.
4 changes: 2 additions & 2 deletions templates/node-service/content/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM alpine:3.20.0 as builder
FROM alpine:3 as builder
RUN apk add --no-cache nodejs npm
COPY package*.json ./
RUN npm install --only=prod

FROM alpine:3.20.0
FROM alpine:3
RUN apk add --no-cache nodejs
COPY --from=builder /node_modules ./node_modules
COPY index.js index.js
Expand Down
4 changes: 3 additions & 1 deletion templates/podinfo-example/content/.gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
.score-compose/
compose.yaml
compose.yaml
.score-k8s/
manifests.yaml
49 changes: 48 additions & 1 deletion templates/podinfo-example/content/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,51 @@ compose-test: compose-up
## Delete the containers running via compose down.
.PHONY: compose-down
compose-down:
docker compose down -v --remove-orphans || true
docker compose down -v --remove-orphans || true

.score-k8s/state.yaml:
score-k8s init \
--no-sample

manifests.yaml: score.yaml .score-k8s/state.yaml Makefile
score-k8s generate score.yaml \
--image ${CONTAINER_IMAGE}

## Create a local Kind cluster.
.PHONY: kind-create-cluster
kind-create-cluster:
./scripts/setup-kind-cluster.sh

## Load the local container image in the current Kind cluster.
.PHONY: kind-load-image
kind-load-image:
kind load docker-image ${CONTAINER_IMAGE}

NAMESPACE ?= default
## Generate a manifests.yaml file from the score spec, deploy it to Kubernetes and wait for the Pods to be Ready.
.PHONY: k8s-up
k8s-up: manifests.yaml
kubectl apply \
-f manifests.yaml \
-n ${NAMESPACE}
kubectl wait deployments/${WORKLOAD_NAME} \
-n ${NAMESPACE} \
--for condition=Available \
--timeout=90s
kubectl wait pods \
-n ${NAMESPACE} \
-l app.kubernetes.io/name=${WORKLOAD_NAME} \
--for condition=Ready \
--timeout=90s

## Expose the container deployed in Kubernetes via port-forward.
.PHONY: k8s-test
k8s-test: k8s-up
curl $$(score-k8s resources get-outputs dns.default#${WORKLOAD_NAME}.dns --format '{{ .host }}')

## Delete the deployment of the local container in Kubernetes.
.PHONY: k8s-down
k8s-down:
kubectl delete \
-f manifests.yaml \
-n ${NAMESPACE}
35 changes: 35 additions & 0 deletions templates/podinfo-example/content/scripts/setup-kind-cluster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#!/bin/bash
set -o errexit

cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 31000
hostPort: 80
protocol: TCP
EOF

kubectl apply \
-f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.1.0/standard-install.yaml

helm install ngf oci://ghcr.io/nginxinc/charts/nginx-gateway-fabric \
--create-namespace \
-n nginx-gateway \
--set service.type=NodePort \
--set-json 'service.ports=[{"port":80,"nodePort":31000}]'

kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: default
spec:
gatewayClassName: nginx
listeners:
- name: http
port: 80
protocol: HTTP
EOF

0 comments on commit 69a67b5

Please sign in to comment.